1.1. Предпосылки возникновения сетей В каждом из трех предшествующих столетий существовала технология, развитие которой определяло общий научно-технический прогресс этого столетия. В XVIII веке это были механические системы, в XIX - паровые машины, в XX веке на первый план вышли информационные технологии - технологии сбора, передачи, обработки и хранения информации. Отметим две главные причины того, что именно информационные технологии стали активно развиваться в прошлом столетии. 1. Появление технически сложных систем. Новые способы получения энергии открыли новые горизонты в развитии промышленности. Однако создание технически сложных систем, в свою очередь, стало требовать принципиально новых технологий проектирования. Так, например, технически сложную систему не всегда можно представить «в натуральную величину», например самолет, космический корабль, спутниковую систему. Требуется моделирование, специальные методы борьбы со сложностью. Например, увеличение числа взаимодействующих компонентов системы ведет к усложнению конструкции самих компонентов, а следовательно к снижению их надежности. Возникает не праздный вопрос: как убедиться, что создаваемая система при любых обстоятельствах будет функционировать корректно? Новые задачи проектирования - новые требования к скоростям расчетов, алгоритмам расчетов. Уже в 40-х годах основным приемом для ускорения ручных расчетов был метод распараллеливания, когда несколько счетчиков работали параллельно над одним и тем же расчетом. Просто создать объект было мало. В современных условиях его надо уметь поддерживать в работоспособном состоянии, ремонтировать при выходе из строя, что требует, в свою очередь, развития методов и средств управления. 2. Необходимость быстрого получения информации. Помимо технических предпосылок, определяющую роль в развитии информационных технологий сыграли предпосылки социальные. В обществе XX века налицо были следующие тенденции: A. Демографический рост. B. Территориальная децентрализация населения. C. Рост числа людей, вовлекаемых в процесс принятия решений. При развитии данных тенденций отсутствие эффективных методов коммуникации, распределенного доступа к информации, ее автоматического сбора, обработки и хранения тормозили развитие экономики - как на внутригосударственном, так и на межгосударственном уровне. Скорость принятия решения может быть представлена как материальная величина и измерена в стоимостном выражении. Приведем пример с осуществлением платежей. Старые технологии сбора и обработки информации предполагали сбор информации на местах, заполнение специально разработанных форм, которые собирались в соответствующих государственных структурах, где они, возможно, проходили предварительную обработку, после чего отправлялись далее по инстанции. При этом в начале века путешествие из Москвы на Дальний Восток (а следовательно, и обмен документами) занимало несколько месяцев. Для сравнения: сокращение времени прохождения платежа в стране на несколько часов равносильно увеличению бюджета страны на несколько миллионов рублей! Таким образом, в XX веке стало ясно: развитие информационных технологий напрямую связано с конкурентоспособностью - как отдельного предприятия, так и государства в целом. Как следствие первой названной нами причины совершенствуются методы обработки информации: от механических арифмометров, табуляторов с управлением от перфокарт (1928) до ЭВМ. Возможности компьютеров, их размеры, технические характеристики растут с фантастической скоростью. Появляются устройства памяти объемом в несколько терабайт. Вторая причина обуславливает изменение технологий сбора и передачи информации. Появляются телефонные сети всемирного масштаба, теле- и радиосети, спутники связи. Одновременно с этим технологии сбора, передачи, обработки и хранения информации начинают сливаться, интегрироваться в единый комплекс. Слияние компьютеров со средствами передачи данных коренным образом изменило представление об организации вычислительных систем. Появились сети ЭВМ. Правда, в первых сетях ЭВМ средства связи использовались именно для соединения между собой ЭВМ. Это не снимало проблему передачи информации их телефонной сети в сеть ЭВМ или из радио сети в сеть ЭВМ. Возникла проблема интеграции разнородных сетей между собой. 1.2. Краткая история развития ЭВМ и методов доступа к ним Программный принцип управления Поколения ЭВМ Способы доступа к вычислительным установкам ? Однопользовательские ЭВМ ? Системы пакетной обработки ? Системы с разделением времени и многотерминальные системы Виды вычислительных установок ? Карманные персональные компьютеры (КПК) ? Персональные компьютеры (ПК) ? Вычислительные комплексы ? Встроенные системы ? Сети ЭВМ ? Распределенные системы (GRID) В нашем курсе под термином сети ЭВМ мы будем понимать множество соединенных между собой автономных машин. Часто возникает путаница между распределенными системами и сетями ЭВМ. Работая с распределенной системой, пользователь может не иметь ни малейшего представления, на каких процессорах, где, с использованием каких физических ресурсов будет исполняться его программа. В сети, поскольку все машины автономны, пользователь должен делать все явно. Основное различие между этими системами лежит в том, кто и как управляет ресурсами в системе, и, как следствие, в том, как организовано их программное обеспечение. В обоих случаях происходит передача информации. Вопрос в том, кто ее инициирует. В сети - пользователь, в распределенной системе - система. Способы соединения ЭВМ между собой Современные тенденции ? Различия между ЛВС и РВС по скорости передачи стираются. ? Организация работы с внешней памятью – подсеть в сети. ? Возврат к мэйнфреймам – один слон дешевле десятка тяжеловозов. ? Цифра, звук, видео – интеграция разнородных потоков информации. 1.3.1. Сети для организаций Приведем основные преимущества, которые получают организации, используя сети. ? управление ресурсами ? повышение надежности функционирования предприятия за счет оперативности управления и использования имеющихся ресурсов. ? сокращение затрат на функционирование предприятия – оптимизация бизнес- процессов. ? повышение экономической эффективности за счет гибкой организации работы информационных систем (отсутствие складов, принятие решений) ? средство общения и связи (телеконсультации и конференции, оперативность принятия решений) ? офис в кармане – позволяет сотрудникам получить доступ ко всем устройствам, файлам, базам данных и т.п. вне зависимости от их физического местоположения ? удобства при подготовке персонала (в некоторых крупных западных фирмах стоимость подготовки вновь принятого сотрудника достигает 50 000 долларов). ? управление производством и стратегией развития (ERP-системы ЦБ РФ, FedExp, GM склад, Газпром) 1.3.2. Сети для индивидуальных пользователей Преимущества использования сетей для индивидуальных пользователей: ? доступ к информации (Интернет) ? общение с другими людьми (новости, электронная почта, видеоконференции) ? обучение ? развлечение ? получение услуг (взаимодействие с предприятиями, государственными структурами) ? средство исследования 1.3.3. Социальное влияние Широкое распространение сетей не могло не оказать значительного влияния на жизнь общества: ? информационная открытость общества ? непрерывность образования ? общедоступность знаний ? взаимодействие с государством ? нанесение ущерба репутации людей ? сеть не знает государственных границ ? использование ресурсов организации в личных целях ? анонимки ? информационная система как наркотик 1.4. Организация вычислительных сетей Все оборудование сети можно разделить на абонентские машины и транспортную среду или транспортную подсеть, которую иногда называют просто подсеть. Однако здесь надо быть осторожным, так как у термина подсеть есть и второй смысл, связанный с адресацией в сети Интернет. О подсети в этом смысле мы поговорим позже. Машины, на которых работают приложения, называют абонентскими или хост-машинами (host). Абонентские машины обеспечивают интерфейс пользователей и работу приложений в сети. Хосты подсоединены к транспортной среде. Назначение транспортной среды обеспечить передачу данных от одного хоста к другому. Рисунок 1-1. Сопряжение транспортных сред Транспортная среда состоит из системы передачи данных и коммуникационных машин (далее К-машины или для краткости КМ). Коммуникационные машины - это специализированные компьютеры, соединяющие две и более систем передачи данных. Примером К-машины является маршрутизатор - компьютер, который выбирает маршрут, по которому должны следовать данные между абонентскими машинами в сети. На рисунке 1-1 абонентские машины (далее А-машины или кратко АМ) показаны в виде прямоугольников, коммутирующие элементы - в виде кружков, а сплошными линиями - системы передачи данных. 1.4.1. Системы передачи данных Система передачи данных обеспечивает передачу данных между машинами в сети. Эти машины не обязательно абонентские. Система передачи данных состоит из каналов, каналообразующей аппаратуры, коммутирующих элементов (например, коммутаторов). Каналы передачи данных – это линии связи самой различной природы и каналообразующая аппаратура. Каналы соединяют две или более коммуникационных машины, либо коммутатора. Как уже было сказано, эти машины, обеспечивают коммутацию потоков данных в сети. Линиями связи могут быть обычные телефонные линии, представляющие собой витую пару медных проводов, либо коаксиальный кабель, какой, например, используется для телевизионного антенного ввода у нас дома. Это может быть волоконно-оптический кабель, где данные передаются с помощью электромагнитных импульсов в световом диапазоне. Это могут быть беспроводные радиочастотные каналы связи. Подробно эти линии связи и их свойства рассматриваются в главе 2. Каналообразующая аппаратура обеспечивает интерфейс между линией связи и оконечным устройством, например, А-машиной, К-машиной или коммутатором. На сегодня отсутствует общепринятая классификация систем передачи данных. Для них, как и для сетей, есть три общепризнанных критерия, по которому их различают, это: ? Способ коммутации потоков данных ? Тип каналов ? Топология системы Выделяют два основных способа коммутации потоков данных – коммутацию каналов и коммутацию пакетов. Коммутация каналов – метод управления потоком данных в реальном времени, для которого характерно следующее: ? Темп передачи данных определяется передатчиком. ? Канал передачи создается до начала передачи (установление соединения) и фиксируется на все время передачи. ? Сохраняет порядок передаваемых данных. ? Имеется большой опыт его создания. ? Есть хорошо развитая инфраструктура. В то же время этот способ управления потоками данных отличается от других способов рядом недостатков: ? неэффективным использованием ресурсов ? низкой надежностью ? медленным установлением соединения Коммутация пакетов - способ управления передачей, отличающийся следующими особенностями: ? Высокая скорость установления соединения (передатчик сразу начинает передачу и не ждет физического установления соединения). ? Низкий уровень ошибок в канале. ? Надежность. ? Рациональное использование ресурсов. ? Сильная зависимость времени передачи от загрузки сети. В общем случае, все каналы по типу можно разделить на: ? Каналы «точка-точка». Они соединяют между собой только две машины. Все потоки данных, протекающие по каналу этого типа, доступны лишь этим двум машинам. ? Каналы с множественным доступом. Образуют линию передачи данных, общую для нескольких машин. Короткое сообщение, называемое пакетом, отправленное какой-либо машиной и имеющее специальную структуру, получают все другие машины, подключенные к этой линии. В определенном поле пакета указан адрес получателя. Каждая машина проверяет это поле. Если она обнаруживает в этом поле свой адрес, то она приступает к обработке пакета, в противном случае она просто игнорирует пакет. Системы передачи данных (СПД) с каналами с множественным доступом, как правило, имеют режим, когда один пакет адресуется всем машинам в сети. Это так называемый режим широкого вещания. Есть в таких сетях режим группового вещания: один и тот же пакет получают машины, принадлежащие к определенной группе в сети. СПД с каналами с множественным доступом можно разделить по методам выделения канала на динамические и статические: ? Статические - временное разделение (time-shearing) канала между машинами; канал простаивает, если машине нечего передавать. ? Динамические - централизованные и распределенные механизмы выделения канала по запросу. СПД с каналами «точка-точка» соединяют каждую пару машин индивидуальным каналом. Прежде чем пакет достигнет адресата, он может пройти через несколько промежуточных машин. В этих сетях возникает потребность в маршрутизации пакетов. От ее эффективности зависит скорость доставка сообщений, распределение нагрузки в сети. Системы СПД с каналами с множественным доступом, как правило, используют на географически небольших территориях, СПД с каналами «точка-точка» - для построения крупных сетей, охватывающих большие регионы. Топология соединения маршрутизаторов - важный фактор конструкции транспортной среды. От нее зависит время задержки данных при передаче, перегрузки и многие другие параметры функционирования сети. На рисунке 1-2 показаны типичные топологии, встречающиеся при организации транспортных сред. Рисунок 1-2. Топологии транспортной среды для соединений «точка-точка»: (а) Звезда; (b) Кольцо; (c) Дерево; (d) Полносвязная; (e) Пересекающиеся кольца; (f) Нестандартная 1.4.2. Абонентские машины Абонентские машины обеспечивают работу приложений. Такая машина обязательно содержит средства сопряжения и взаимодействия с СПД. «Чистых» абонентских машин не бывает. А-машина обязательно содержит аппаратуру подключения к каналу и программное обеспечение, организующее прием и передачу данных по этому каналу. Не следует путать клиент-серверную организацию работы приложений в сети с собственно сетью. В крайнем случае и клиент и сервер могут располагаться на одном и том же компьютере, который будет являться А-машиной в сети. Клиент и сервер - это взгляд на распределение функций в прикладной системе и к сетям, вообще говоря, отношения не имеет. На рисунке 1-3 показана схема взаимодействия клиента и сервера. Рисунок 1-3. Схема «клиент-сервер» 1.4.3. Сопряжение транспортных сред Необходимость в сопряжении транспортных сред возникает, когда нужно обеспечить взаимодействие приложений, расположенных в разных сетях. Мосты и шлюзы – средства сопряжения транспортных сред (ТС) на разных уровнях. ? Мост соединяет две однородные ТС. ? Шлюз – две разные по архитектуре ТС. Шлюз - машина с надлежащим программным обеспечением, обеспечивающая связь между разнородными сетями и необходимое форматирование передаваемых данных. Множество соединенных сетей называется internet. Примером internet может служить набор LAN, соединенных через WAN. Нельзя путать и internet и Интернет. Появление ноутбуков, КПК и PDA, используемых в автомобилях, самолетах, из гостиниц делают актуальной проблему мобильного узла. Адрес дома и номер автомобиля – принципиально разные способы адресации. 1.5. Классификация сетей ЭВМ На сегодня нет общепризнанной таксономии сетей. Есть два общепризнанных фактора для их различения: технология передачи данных и масштаб. Технология передачи определяется системой СПД. Масштаб сети - другой критерий для классификации сетей (таблица 1-4). ? многомашинный комплекс (система) ? локальная сеть (комната, здание, комплекс) ? городская сеть (город) ? региональная сеть (страна, континент) ? Интернет (планета) Таблица 1-4. Классификация сетей по территориальному масштабу Расстояние между процессорами Местонахождение процессоров Пример 0,1 м Монтажная плата Потоковая вычислительная машина 1 м Система Многомашинный комплекс 10 м Помещение Локальная сеть 100 м Здание 1 км Комплекс зданий 10 км Город Городская сеть 100 км Страна Региональная сеть 1000 км Континент 10000 км Планета Интернет 1.5.1. Локальная сеть Локальная вычислительная сеть (ЛВС) отличается от остальных по следующим характеристикам: ? Размер: комната, корпус, группа корпусов (отсюда известна максимальная задержка при передаче) ? Система передачи данных: как правило, канал с множественным доступом (вещание, скорость передачи от 10 Мбит/сек. до нескольких Гбит/сек., Ethernet) ? топология ТС ЛВС (рисунок 1-5) o линейная o кольцо o дерево Рисунок 1-5. Две вещательные сети: (a) Линейная топология; (b) Кольцо 1.5.2. Городская сеть Городская вычислительная сеть (MAN - Metropolitan Area Network) охватывает несколько зданий в пределах одного города либо город целиком. Как правило, она поддерживает передачу как данных, так и голоса и иногда объединяется с кабельной телевизионной сетью. Не имеет коммутаторов, базируется на одном или двух кабелях. Основная причина выделения этой категории сетей состоит в том, что для них был создан специальный стандарт IEEE 802.6 - DQDB - двойная магистраль с распределенной очередью (Distributed Queue Dual Bus). Организация этой СПД показана на рисунке 1-6. Рисунок 1-6. Архитектура DQDB-сети городского масштаба 1.5.3. Региональная сеть Региональная вычислительная сеть (WAN - Wide Area Network) охватывает крупные географические области, такие как страны, континенты. Транспортная среда таких сетей строится на основе коммутации пакетов с помощью каналов типа «точка-точка». Часто в качестве СПД в таких сетях используют уже существующие системы связи, например, телефонные сети, спутниковые и радиосистемы. 1.6. Сетевое программное обеспечение Здесь мы рассмотрим иерархию сетевого программного обеспечения, т.е. того программного обеспечения, которое обеспечивает передачу данных между приложениями, работающими на абонентских машинах. Это программное обеспечение определяет функционирование транспортной среды, системы передачи данных, взаимодействие абонентских машин с транспортной средой. 1.6.1. Иерархия протоколов Сеть является сложной инженерно-технической системой. В целях борьбы с ее сложностью программное обеспечение сети, как правило, строго структурировано и организовано в виде иерархии слоев, или уровней. В разных сетях число уровней, их название, состав и функции могут быть разными. Однако во всех сетях назначение каждого уровня состоит в следующем: ? обеспечить определенный сервис верхним уровням ? сделать независимыми верхние уровни от деталей реализаций сервиса на нижних уровнях Программное обеспечение уровня n на одной машине обеспечивает связь с программным обеспечением уровня n на другой машине. Правила и соглашения по установлению такой связи и ее поддержанию называются протоколом. Это показано на рисунке 1-7. Рисунок 1-7. Иерархия протоколов Уровень n на одной машине непосредственно с уровнем n на другой машине не взаимодействует. Он передает данные нижележащему уровню. Эту мысль иллюстрирует рисунок 1-8. В этом примере президенты двух стран, говорящие на разных языках, общаются не непосредственно, а через цепочку помощников: переводчиков и секретарей, которые готовят, оформляют, переводят, передают и принимают их глубокие мысли. Таким образом, возникает как бы два вида взаимодействия: виртуальное – между одноименными уровнями в сети (президентами), и непосредственное – между парой соседних уровней (президент-переводчик, переводчик-секретарь). Рисунок 1-8. Разговор президентов двух разных стран 1.6.2. Основные понятия Между каждой парой уровней есть интерфейс. Интерфейс определяет, какие услуги (сервис) нижележащий уровень должен обеспечивать для верхнего уровня, и с помощью каких примитивов - элементарных операций – верхний уровень может получить доступ к этим услугам. Интерфейс обеспечивает вышележащему уровню доступ к сервису нижележащего уровня. Например, как президент может подключить (отключить), если он на это имеет право, переводчика к его разговору с другим президентом. Набор уровней и протоколов называется архитектурой сети. Описание архитектуры сети должно содержать достаточно информации, чтобы разработчик сетевого программного обеспечения мог разработать надлежащие программы для каждого уровня, а инженер электронщик - надлежащую аппаратуру. Ни вопросы реализации, ни определения интерфейсов не относятся к архитектуре сети. Конкретный набор протоколов, используемый на конкретной машине, называется стеком протоколов. Архитектуры сетей, стеки протоколов, сами протоколы - вот основные предметы, рассматриваемые в данном курсе. Рисунок 1-9. Пример организации потока информации при виртуальном взаимодействии уровней 5 При передаче сообщения между уровнями над сообщением выполняются определенные преобразования, показанные на рисунке 1-9. Здесь на каждом уровне к сообщению добавляется заголовок. Заголовок содержит управляющую информацию - кому адресовано сообщение, время, дату, порядковый номер и т.д. На уровне 3 исходное сообщение уровня 4 разбивают на два, поскольку длина сообщения уровня 4 с заголовком уровня 3 превышает заранее определенную допустимую для передачи на нижележащем уровне длину. 1.6.3. Основные вопросы организации уровней Все функции организации и функционирования сети распределены между уровнями. В сетях с разной архитектурой это распределение между уровнями разное. Однако на каждом уровне необходимо решать следующие вопросы: ? адресация отправителя и получателя на уровне: на каждом уровне нужен механизм для адресации отправителей и получателей ? правила установления соединения с одноименным уровнем ? правила передачи данных o только в одном направлении - simplex, поочередно в обоих направлениях - half-duplex или в оба направления одновременно - duplex o допустимо ли совмещать виртуальные соединения вышележащего уровня через одно и то же соединение на нижележащем уровне; каково максимальное число совмещаемых так виртуальных соединений, каковы приоритеты в их обслуживании; o мультиплексирование и демультиплексирование виртуальных каналов ? обнаружение и исправление ошибок при передаче ? сохранение исходной последовательности данных при передаче ? на каждом уровне нужен механизм, предотвращающий ситуацию, когда одноименный уровень получателя начинает «захлебываться», т.е. когда отправитель отправляет пакеты с большей скоростью, чем получатель успевает их обрабатывать ? выбор маршрута при передаче: когда между получателем и отправителем есть несколько маршрутов, то какой из них выбрать? ? не все процессы на любом уровне могут работать с сообщениями произвольной длины, поэтому при передаче необходимо осуществлять: o разбиение, передачу и сборку сообщений o выбирать оптимальную длину фрагмента при разбиении или, наоборот, соединение нескольких коротких сообщений в одно более длинное (например, как быть, если процесс работает со столь короткими сообщениями, что их раздельная пересылка не эффективна?) 1.6.4. Интерфейсы и сервис Как уже было сказано, одно из главных предназначений каждого уровня - обеспечить надлежащий сервис для вышележащего уровня. Активные элементы уровня, т.е. те, которые могут сами совершать действия, в отличие от тех, над которыми совершают действия, будем называть активностями. Активности могут быть программными и аппаратными. Активности одного и того же уровня на разных машинах будем называть равнозначными или одноименными активностями. Активности уровня n+1 являются пользователями сервиса, создаваемого активностями уровня n, которые, в свою очередь, называются поставщиками сервиса. Сервис может быть разного качества, например, быстрая и дорогостоящая связь или медленная и дешевая. Доступ к сервису осуществляется через так называемые точки доступа к сервису - SAP (Service Access Points). Каждая точка доступа к сервису имеет уникальный адрес. Например, телефонная розетка на стене - это точка доступа к сервису АТС. Каждой розетке сопоставлен определенный номер - номер телефона. Чтобы осуществить обмен информацией между двумя уровнями, нужно определить интерфейс между ними. Типичный интерфейс: активность на уровне n+1 передает IDU (Interface Data Unit - интерфейсную единицу данных) активности на уровне n через SAP (рисунок 1-10). IDU состоит из SDU (Service Data Unit - сервисной единицы данных) и управляющей информации. SDU передается по сети равнозначной сущности, а затем - на уровень n+1. Управляющая информация нужна нижележащему уровню, чтобы правильно передать SDU, но она не является частью передаваемых данных. Рисунок 1-10. Взаимосвязь уровней через интерфейс Чтобы передать SDU по сети нижележащему уровню, может потребоваться разбить его на части. Каждая часть снабжается заголовком (header) и концевиком, и передается как самостоятельная единица данных протокола - PDU (Protocol Data Unit - единица данных протокола). Заголовок в PDU используется протоколом при передаче. В нем указано, какой PDU содержит управляющую информацию, а какой - данные, порядковый номер и т.д. 1.6.5. Сервис с соединением и сервис без соединения Уровни могут предоставлять вышележащим уровням два вида сервисов: ориентированный на соединение и без соединения. Сервис с соединением предполагает, что между получателем и отправителем сначала устанавливается соединение, и только потом доставляется сервис. Пример - телефонная сеть. Сервис без соединения действует подобно почтовой службе. Каждое сообщение имеет адрес получателя. В надлежащих точках оно маршрутизируется по нужному маршруту, независимо от других сообщений. При таком сервисе вполне возможно, что сообщение, позже посланное, придет раньше. В сервисе с соединением это невозможно. Любой сервис характеризуется качеством. Например, надежный сервис, гарантирующий доставку данных без потерь, предполагает подтверждение получения каждого сообщения. Несомненно, это требует определенных накладных расходов. Это - плата за качество. Пример надежного сервиса с соединением - передача файлов. Ясно, что вряд ли кто-то рискнет передавать файл, пусть даже быстрее, при возможности потерять часть битов или нарушить их порядок. Надежный сервис с соединением имеет две разновидности: с сохранением структуры передаваемых данных, например, последовательность сообщений, и просто поток байтов. В первом случае четко различаются границы каждого сообщения. Если было послано два сообщения по 1 Мбайт, то получено будет два сообщения по 1 Мбайт. Ни при каких условиях у получателя не окажется одно сообщение в 2 Мбайт. В случае потока байтов получатель получит 2 Мбайт. У него нет способа распознать, то ли это 2 сообщения по 1 Мбайт, то ли 1 сообщение в 2 Мбайт, то ли 2048 сообщений по 1 байту. Если мы захотим передать книгу на фотонаборное устройство, то нам надо проследить, чтобы каждая страница имела четкие границы. В то же время для поддержки соединения между терминалом и сервером в режиме командной строки потока байтов вполне достаточно. Другой важной характеристикой качества сервиса является величина задержки в канале. Для некоторых приложений задержки из-за уведомления получения данных неприемлемы. Примерами таких приложений являются цифровая телефонная связь, цифровые видеоконференции. При телефонном разговоре люди готовы смириться с шумом на линии, искажениями слов, но паузы из-за уведомлений будут просто неприемлемы. Аналогично при видеоконференции или передаче видеофильма. Небольшие дефекты картинки допустимы, но подергивание экрана из-за уведомлений будет раздражать зрителя. Пример приложения, не требующего соединения, - электронная почта. Вряд ли отправитель второстепенного сообщения захочет ждать установки и разрыва соединения, оплачивать весь этот сервис, чтобы передать такое сообщение. Ему вряд ли требуется стопроцентная гарантия доставки, особенно, если это связано с увеличением стоимости. Все, что ему нужно - простой способ передать сообщение, которое с большой вероятностью будет принято, но без всяких гарантий. Ненадежный сервис (т.е. без уведомления) часто называют дейтаграммным (datagram), по аналогии с телеграммой без уведомления. Однако для тех приложений, где необходима гарантия доставки даже небольшого сообщения, используется дейтаграмм-сервис с подтверждением, подобно телеграмме с уведомлением о получении. Другой разновидностью дейтаграммного сервиса является сервис «запрос-ответ». Он типичен для взаимодействия между клиентами и сервером. Ниже в таблице 1-11 приведены примеры сервисов. Таблица 1-11. Разные типы сервиса Ориентированные на соединение Без соединения Сервис Пример Надежный поток сообщений Последовательность страниц Надежный поток байтов Удаленный вход в систему Ненадежное соединение Оцифрованная речь Ненадежная дейтаграмма Неважная электронная почта Подтверждаемая дейтаграмма Заказная электронная почта Запрос-ответ Запрос базы данных 1.6.6. Примитивы сервиса Формально сервис можно описать в терминах примитивных операций, или примитивов, с помощью которых пользователь или какая-либо активность получает доступ к сервису. С помощью этих примитивов активность на вышележащем уровне сообщает активности на нижележащем уровне, что необходимо сделать, чтобы вышележащая активность получила нужную услугу (сервис). В свою очередь, нижележащая активность может использовать эти примитивы, чтобы сообщить вышележащей активности о действии, выполненном равнозначной активностью. Примитивы можно разделить на четыре класса, как показано в таблице 1-12. Таблица 1-12. Примитивы сервиса Примитив Значение Request (Запрос) Пользователь требует от сервиса каких-либо действий. Indication (Индикация) Пользователя информируют о каком-либо событии. Response (Ответ) Пользователь требует ответа на какое-либо событие. Confirm (Подтверждение) Получен ответ на сделанный ранее запрос. Для иллюстрации работы примитивов рассмотрим, как соединение устанавливается и разрывается. Сначала активность выполняет CONNECT.request, в результате чего в сеть выпускается пакет. Получатель получает CONNECT.indication, указывающий на то, что с ним хотят установить соединение. В ответ получатель через примитив CONNECT.response сообщает, готов он установить соединение или отказывает в установлении соединения. В результате активность - инициатор установления соединения получает ответ через примитив CONNECT.confirm, чего следует ожидать. Большинство примитивов имеет параметры. Параметры примитива CONNECT.request определяют адресата, соединение, желаемое качество сервиса и максимальный размер сообщения, допустимый для данного соединения. Параметры примитива CONNECT.indication указывают, кто обратился, желаемое качество обслуживания, предлагаемый размер сообщений. Если активность, к которой обратились, не согласна, например, с предлагаемым размером сообщений, то она предлагает свой размер через примитив response, который становится известным активности, добивающейся соединения, через примитив confirm. Подробности этих переговоров - существо протокола. Например, в случае конфликта при установлении максимального размера сообщения протокол может установить, что выбирается наименьший из предложенных. Услуга может быть либо с подтверждением, либо без подтверждения. При услуге с подтверждением действуют все четыре примитива - request, indication, response, confirm. При услуге без подтверждения используются только два примитива - request и indication. Услуга CONNECT обязательно должна быть с подтверждением. Услуга DATA_TRANSFER может быть как с подтверждением, так и без, в зависимости от того, нужно отправителю уведомление или нет. Оба вида услуг используются в сетях. Продемонстрируем концепцию услуг на следующем примере простых услуг с соединением со следующими 8-ю примитивами: 1. CONNECT.request - запрос на установление соединения. 2. CONNECT.indication - сигнал для удаленной активности. 3. CONNECT.response - используется удаленной активностью для согласия/несогласия на соединение. 4. CONNECT.confirm - cообщает активности, инициирующей соединение, принято оно или нет. 5. DATA.request - запрос на передачу данных. 6. DATA.indication - сигнал поступления данных. 7. DISCONNECT.request - запрос на разрыв соединения. 8. DISCONNECT.indication - сигнал равнозначной активности на запрос. Ниже, взяв в качестве примере телефонный разговор, показано как в терминах вышеприведенных примитивов можно описать телефонный разговор: 1. CONNECT.request - Вы набираете номер друга. 2. CONNECT.indication - Он слышит звонок. 3. CONNECT.response - Он берет трубку. 4. CONNECT.confirm - Вы слышите, что гудки прекратились. 5. DATA.request - Вы предлагаете ему встретиться. 6. DATA.indication - Он слышит Ваше приглашение. 7. DATA.request - Он говорит, что согласен. 8. DATA.indication - Вы слышите его ответ. 9. DISCONNECT.request - Он кладет трубку. 10. DISCONNECT.indication - Вы слышите, что он положил трубку и кладете трубку. 1.6.7. Взаимосвязь сервиса и протоколов Сервис и протоколы - понятия разные, но их часто путают. Различие между ними настолько важно, что рассмотрим его еще раз. Сервис - это набор услуг, который уровень предоставляет уровню над ним. Сервис определяют в терминах примитивных операций, образующих интерфейс между уровнями. Инициируя выполнение определенной последовательности примитивных операций, вышележащий уровень определяет, какой сервис ему нужен. Но он ничего не говорит о том, как эти операции должны быть реализованы. Сервис относится к интерфейсу между уровнями. Нижележащий уровень является поставщиком сервиса, а вышележащий - его пользователем. Протокол - это набор правил, определяющих формат, назначение передаваемых фрагментов данных: фреймов, пакетов, сообщений, которыми обмениваются равнозначные активности на определенном уровне. Активности используют протоколы для реализации сервиса. Они могут изменить протокол, но не сервис, видимый их пользователями. Отсюда ясно, что сервис и протокол не связаны между собой. 1.7. Эталонные модели До сих пор мы рассматривали некоторые абстрактные понятия. Теперь мы рассмотрим две конкретные эталонные модели сетей: эталонную модель ISO OSI и эталонную модель TCP/IP. 1.7.1. Эталонная модель OSI Модель OSI (Open Systems Interconnection - модель взаимодействия открытых систем (рисунок 1-13) была разработана Международной организацией по стандартизации (МОС - International Standards Organization (ISO)) - для определения международных стандартов компьютерных сетей. Эта модель описывает, как должна быть организована система, открытая для взаимодействия с другими системами. Рисунок 1-13. Модель взаимодействия открытых систем (OSI) Модель МОС имеет семь уровней. Принципы выделения этих уровней таковы: 1. Каждый уровень имеет определенное предназначение. 2. Каждый уровень защищает нижележащий уровень от различий возможных реализаций. 3. Предназначение каждого уровня выбиралось прежде всего так, чтобы для него можно было определить международный стандарт. 4. Границы между уровнями выбирались с целью минимизировать поток информации через интерфейсы. 5. Число уровней выбиралось достаточно большим, чтобы не объединять разные функции на одном уровне, но и достаточно малым, чтобы архитектура не была громоздкой. Теперь рассмотрим каждый уровень этой модели. Отметим, что это - модель, а не архитектура сети. Она не определяет протоколы и сервисы каждого уровня, а лишь говорит, какие функции должны быть реализованы на нем. Организация ISO выпустила также стандарты для каждого уровня, но они не являются частью этой модели. 1.7.1.1. Физический уровень Физический уровень отвечает за передачу последовательности битов через канал связи. Одной из основных проблем, решаемых на этом уровне, является то, как гарантировать, что если на одном конце отправили 1, то на другом получили 1, а не 0. На этом уровне также решаются такие вопросы, как: каким напряжением нужно представлять 1, а каким - 0; сколько микросекунд тратится на передачу одного бита; следует ли поддерживать передачу данных в обоих направлениях одновременно; как устанавливается начальное соединение и как оно разрывается; каково количество контактов на физическом разъеме, для чего используется каждый контакт этого разъема. Здесь в основном решаются вопросы механики и электрики. 1.7.1.2. Уровень канала данных Основная задача уровня канала данных - превратить несовершенную физическую среду передачи в надежный канал, свободный от ошибок передачи. Эта задача решается разбиением данных отправителя на фреймы (обычно от нескольких сотен до нескольких тысяч байтов), последовательной передачей фреймов и обработкой фреймов уведомления, поступающих от получателя. Поскольку физический уровень не распознает структуры в передаваемых данных, то сохранение этой структуры - целиком и полностью задача канала данных, а именно, на этом уровне нужно определить границы фрейма. Эта задача решается введением специальной последовательности битов, которая добавляется в начало и в конец фрейма и всегда интерпретируется как границы фрейма. Помехи на линии могут разрушить фрейм. В этом случае он должен быть передан повторно. Он будет повторен также в том случае, если фрейм уведомления будет потерян. И это уже заботы уровня - как бороться с дубликатами одного и того же фрейма, потерями или искажениями фреймов. Уровень канала данных может поддерживать для сетевого уровня сервис разных классов, разного качества и стоимости. Другая проблема, возникающая на уровне канала данных (равно как и на других вышележащих уровнях), - как управлять потоком передачи. Например, как предотвратить «захлебывание» получателя? Как сообщить передающему размер буфера для приема передаваемых данных, имеющийся у получателя в этот момент? Если канал позволяет передавать данные в обоих направлениях одновременно, т.е. если фреймы уведомления для потока от А к В используют тот же канал, что и трафик от В к А, то можно использовать для передачи фреймов уведомлений от В к А фреймы DU от А к В. В сетях с вещательным способом передачи возникает проблема управления доступом к общему каналу. За это отвечает специальный подуровень канального уровня - подуровень доступа к среде (MAC - Media ACcess). 1.7.1.3. Сетевой уровень Основная проблема, решаемая на сетевом уровне, - как маршрутизировать пакеты от отправителя к получателю. Маршруты могут быть определены заранее и прописаны в статической таблице, которая не изменяется. Они могут также определяться в момент установления соединения. Наконец, они могут строиться динамически по ходу передачи в зависимости от загрузки сети. Если в транспортной подсети циркулирует слишком много пакетов, то они могут использовать одни и те же маршруты, что будет приводить к заторам или перегрузкам. Эта проблема также решается на сетевом уровне. Поскольку за использование транспортной подсети, как правило, предполагается оплата, то на этом уровне присутствуют функции учета: как много байт (или символов) послал или получил абонент сети. Если абоненты расположены в разных странах, где действуют разные тарифы, то надо должным образом скорректировать цену услуги. Если пакет адресован в другую сеть, то надо предпринять надлежащие меры: в ней может быть другой формат пакетов, способ адресации, размер пакетов, другие протоколы и т.д. - все эти проблемы решаются на сетевом уровне. В сетях с вещательной передачей проблемы маршрутизации просты, и этот уровень часто отсутствует. 1.7.1.4. Транспортный уровень Основная функция транспортного уровня - принять данные с уровня сессии, разделить, если надо, на более мелкие единицы, передать на сетевой уровень и позаботиться, чтобы все они дошли в целостности до адресата. Все это должно быть сделано эффективно и так, чтобы вышележащий уровень не зависел от того, как именно это было сделано. В нормальных условиях транспортный уровень должен создавать специальное сетевое соединение для каждого транспортного соединения по запросу уровня сессии. Если транспортное соединение требует высокую пропускную способность, то транспортный уровень может потребовать у сетевого уровня создать несколько сетевых соединений, между которыми транспортный уровень буден распределять передаваемые данные. И наоборот, если требуется обеспечить недорогое транспортное соединение, то транспортный уровень может использовать одно и то же соединение на сетевом уровне для нескольких транспортных соединений. В любом случае такое мультиплексирование должно быть незаметным на уровне сессии. Сетевой уровень определяет, какой тип сервиса предоставить вышележащим уровням и пользователям сети. Наиболее часто используемым сервисом является канал «точка- точка» без ошибок, обеспечивающий доставку сообщений или байтов в той последовательности, в какой они были отправлены. Другой вид сервиса - доставка отдельных сообщений без гарантии сохранения их последовательности или, например, рассылка одного сообщения многим в режиме вещания. В каждом конкретном случае сервис определяют при установлении транспортного соединения. Транспортный уровень - это уровень, обеспечивающий соединение «точка-точка». Активности транспортного уровня на машине отправителя общаются с равнозначными активностями транспортного уровня на машине получателя. Этого нельзя сказать про активности на нижележащих уровнях. Они общаются с равнозначными активностями на соседних машинах. В этом одно из основных отличий уровней 1-3 от уровней 4-7. Последние уровни обеспечивают соединение «точка-точка». Это хорошо видно на рисунке 1-13. Многие хост-машины - мультипрограммные, поэтому транспортный уровень для одной такой машины должен поддерживать несколько транспортных соединений. Чтобы определить, к какому соединению относится тот или иной пакет, в его заголовке (H4 на рисунке 1-9) помещается необходимая информация. Транспортный уровень также отвечает за установление и разрыв транспортного соединения в сети. Это предполагает наличие механизма именования, что значит, что процесс на одной машине должен уметь указать, с кем в сети ему надо обменяться информацией. Транспортный уровень также должен предотвращать «захлебывание» получателя в случае «очень быстро говорящего» отправителя. Механизм для этого называется управление потоком. Он есть и на других уровнях. Однако, как мы увидим ниже, управление потоком между хостами отличен от управления потоком между маршрутизаторами. 1.7.1.5. Уровень сессии Уровень сессии позволяет пользователям на А-машинах (напомним, что пользователем может быть программа) устанавливать между собой сессии. Сессия позволяет передавать данные, как это может делать транспортный уровень, но, кроме того, этот уровень имеет более сложный сервис, полезный в некоторых приложениях. Например, он может осуществлять вход в удаленную систему, передавать файл между двумя приложениями и т.п. Один из видов услуг на этом уровне - управление диалогом. Потоки данных могут быть разрешены в обоих направлениях одновременно, либо поочередно в одном направлении. Сервис на уровне сессии будет управлять направлением передачи. Другой вид сервиса на этом уровне - управление маркером. Для некоторых протоколов недопустимо выполнение одной и той же операции на обоих концах соединения одновременно. Для этого уровень сессии выделяет активной стороне маркер. Операцию может выполнять тот, кто владеет маркером. Другим примером сервиса на этом уровне является синхронизация. Пусть нам надо передать такой файл, что его пересылка займет два часа, между машинами, время наработки на отказ у которых - один час. Ясно, что «в лоб» передачу такого файла средствами транспортного уровня не решить. Уровень сессии позволяет расставлять контрольные точки. В случае отказа одной из машин передача возобновится с последней контрольной точки. 1.7.1.6. Уровень представления Уровень представления предоставляет решения для часто возникающих проблем, чем облегчает участь пользователей. В основном это проблемы семантики и синтаксиса передаваемой информации. Данный уровень имеет дело с информацией, а не с потоком битов. Типичным примером услуги на этом уровне является унифицированная кодировка данных. Дело в том, что на разных машинах используются разные способы кодировки символов, например, ASCII, Unicode и т.п., разные способы представления целых - в прямом, обратном или дополнительном кодах, также нумерация бит в байте на разных машинах одной и той же сети может быть разная: слева направо или наоборот, и т.п. Пользователи, как правило, используют структуры данных, а не случайный набор байт. Чтобы машины с разной кодировкой и представлением данных могли взаимодействовать, передаваемые структуры данных определяются специальным абстрактным способом, не зависящим от кодировки, используемой при передаче. Уровень представления работает со структурами данных в абстрактной форме, преобразует это представление во внутреннее для конкретной машины и из внутреннего, машинного представления, в стандартное представление для передачи по сети. 1.7.1.7. Уровень приложений Уровень приложений обеспечивает работу часто используемых протоколов. Cуществуют сотни разных типов терминалов. Если мы захотим создать сетевой экранный редактор, то нам придется прописывать для каждого типа терминала свою версию. Есть другой путь: определить сетевой виртуальный терминал и написать для него редактор. Для каждого типа терминала написать программу отображения этого терминала на сетевой виртуальный терминал. Все программное обеспечение для виртуального сетевого терминала расположено на уровне приложений. Другой пример - передача файлов. Разные операционные системы используют разные механизмы именования, представления текстовых строк и т.д. Для передачи файлов между разными системами надо преодолевать все такие различия. Для этого есть приложение FTP, также расположенное на уровне приложений. На этом же уровне находятся: электронная почта, удаленная загрузка программ, удаленный просмотр информации и т.д. 1.7.1.8. Передача данных в МОС-модели На рисунке 1-14 показана последовательность действий при передаче данных в МОС- модели. Хотя данные движутся вертикально, каждый уровень предполагает их горизонтальное передвижение. Здесь аналогия с синхронным переводом. Когда оратор говорит перед нами на урду, то он считает, что он обращается к нам. Не тут-то было! Он обращается к переводчику, а тот уже обращается к нам. Рисунок 1-14. Пример передачи данных в модели МОС 1.7.2. Эталонная модель TCP/IP Здесь мы рассмотрим другую эталонную модель, прототипом для которой послужил прародитель всех компьютерных сетей - сеть ARPA. Позднее мы рассмотрим историю этой сети. Сейчас лишь отметим, что эта сеть образовалась в результате научно- исследовательской работы, проведенной по инициативе Министерства Обороны США. Позднее к этому проекту подключились сотни университетов и государственных учреждений Америки. С самого начала эта сеть задумывалась как объединение нескольких разных сетей. Одной из основных целей этого проекта было разработать унифицированные способы соединения сетей. С появлением спутниковых и радио цифровых каналов связи проблема становилась только актуальнее. Так появилась модель TCP/IP. Свое название она получила по именам двух основных протоколов: TCP - протокол управления передачей (Transmission Control Protocol), и IP - межсетевой протокол (Internet Protocol). Другой целью проекта ARPA было создание протоколов, не зависящих от характеристик конкретных хост-машин, маршрутизаторов, шлюзов и т.п. Кроме этого, связь должна поддерживаться, даже если отдельные компоненты сети будут выходить из строя во время соединения. Другими словами, связь должна поддерживаться до тех пор, пока источник информации и получатель информации работоспособны. Архитектура сети не должна ограничивать приложения, начиная от простой передачи файлов до передачи речи и изображения в реальном времени. 1.7.2.1. Межсетевой уровень В силу вышеперечисленных требований выбор организации транспортной среды был очевиден: сеть с коммутацией пакетов с межсетевым уровнем без соединений. Этот уровень называется межсетевым уровнем. Он является основой всей архитектуры. Его назначение - обеспечить доставку пакетов, движущихся в сети независимо друг от друга, даже если получатель принадлежит другой сети. Причем пакеты могут поступать к получателю не в том порядке, в котором они были посланы. Упорядочить их в надлежащем порядке - задача вышележащего уровня. Межсетевой уровень определяет межсетевой протокол IP и формат пакета. Обратите внимание, что ни протокол, ни формат пакета не являются официальными международными стандартами, в отличие от протоколов эталонной модели МОС. Там большинство протоколов имеют статус международных стандартов. Итак, назначение межсетевого уровня в TCP/IP - доставить IP-пакет по назначению. Это как раз то, за что отвечает сетевой уровень в МОС-модели. На рисунке 1-15 показано соответствие между уровнями этих двух эталонных моделей. Рисунок 1-15. Соответствие между МОС и TCP/IP 1.7.2.2. Транспортный уровень Над межсетевым уровнем расположен транспортный уровень. Как и в МОС-модели, его задача - обеспечить связь «точка-точка» между двумя равнозначными активностями. В рамках TCP/IP модели было разработано два транспортных протокола. Первый - TCP (Transmission Control Protocol) - надежный протокол с соединением. Он получает поток байт, фрагментирует его на отдельные сообщения и передает их на межсетевой уровень. На машине-получателе равнозначная активность TCP-протокола собирает эти сообщения в поток байтов. TCP-протокол также обеспечивает управление потоком. Второй протокол - UDP (User Datagram Protocol). Это ненадежный протокол без соединения для тех приложений, которые используют свои механизмы фрагментации и управления потоком. Он часто используется для передачи коротких сообщений в клиент- серверных приложениях, а также там, где скорость передачи важнее ее точности. Соотношение этих протоколов и их приложений показано на рисунке 1-16. Рисунок 1-16. Протоколы и СПД-системы, учитываемые моделью TCP/IP Напомним, что ненадежным мы называем протокол без уведомления о получении кадра, фрейма, пакета, сообщения и т.п. 1.7.2.3. Уровень приложений В TCP/IP-модели нет уровней сессии и представления. Необходимость в них была неочевидна для ее создателей. На сегодня дело обстоит так, что разработчик сложного приложения берет проблемы этих уровней на себя. Над транспортным протоколом располагается уровень приложений. Этот уровень включает следующие приложения: виртуальный терминал - TELNET, передачу файлов - FTP, электронную почту - SMTP. Позднее к ним добавились: служба имен домена - DNS (Domain Name Service), отображающая логические имена хост-машин на их сетевые адреса, протокол для передачи новостей - NNTP и протокол для работы с гипертекстовыми документами во Всемирной паутине - HTTP. Под межсетевым уровнем в TCP/IP-модели великая пустота. Модель ничего не говорит, что там происходит, кроме того, что хост-машина должна быть связана с сетью через некоторый протокол. Никаких ограничений на этот протокол, равно как и рекомендаций нет. 1.7.3. Сравнение моделей МОС и TCP/IP Обе модели имеют много общего. Обе имеют уровневую организацию, поддерживают понятие стека протоколов. Назначение их уровней примерно одинаково. Все уровни от транспортного и ниже используют протоколы для поддержки взаимодействия типа «точка-точка», не зависящего от организации сети. Все уровни выше транспортного ориентированы на приложения. В модели МОС центральными являются три понятия: ? сервис ? интерфейс ? протокол Наибольшее методологическое значение этой модели - в четком выделении и разделении этих понятий. Сервис определяет, что делает уровень, но ничего не говорит, как. Интерфейс уровня определяет для вышележащего уровня доступ к сервису. Протокол определяет реализацию сервиса. Здесь можно провести аналогию с объектно-ориентированным программированием. У каждого объекта есть набор методов - сервис, который определяет те операции, которые этот объект может выполнять. Иными словами, сервис - это семантика методов. Каждый метод имеет интерфейс - набор параметров, имя и т.п. Реализация методов скрыта в объекте - протоколе - и невидима пользователю. В TCP/IP-модели нет столь же четкого выделения этих понятий. В ней понятие протокола четко «упрятано» и независимо от остальных частей модели. Этот факт есть следствие того, как создавались эти модели. TCP/IP-модель создавалась post factum, а МОС - до того, как появились протоколы. Поэтому понятие протокола там абсолютно не зависит от остальных частей модели. Например, изначально протоколы канального уровня в МОС- модели создавались для соединений «точка-точка». Позднее, когда появились средства типа вещания, на этот уровень были добавлены соответствующие протоколы. Никаких других изменений не последовало. TCP/IP-модель была создана, когда TCP/IP-стек уже существовал. Поэтому эта модель прекрасно описывала этот стек, но только его, и никакой другой. Модели имеют разное число уровней. Обе имеют уровень приложений, транспортный уровень и сетевой уровень. Все остальные уровни разные. МОС-модель поддерживает на сетевом уровне как сервис с соединением, так и без соединения. На транспортном уровне этой модели поддерживается сервис только с соединением. В TCP/IP наоборот: сетевой уровень обеспечивает сервис без соединения, но транспортный - как с соединением, так и без. 1.7.4. Недостатки модели и протоколов МОС Ни модель и протоколы МОС, ни модель и протоколы TCP/IP не являются совершенными. Начнем с модели и протоколов МОС. В конце 80-х годов казалось, что у протоколов МОС-модели нет конкурентов. Однако в настоящее время очевидно, что протоколы TCP/IP захватили большую часть мира. В чем причины? 1. Не вовремя. 2. Не технологичны. 3. Трудно реализуемы. 4. Неправильная стратегия. «Не вовремя»: введение стандарта должно следовать за окончанием исследований, но прежде, чем начнутся крупные вложения в разработку. Эту идею поясняет рисунок 1-17. Рисунок 1-17. Принцип двух слонов Не технологичны: ? Функциональность между семью уровнями распределена неравномерно. ? МСО поспешило за IBM SNA (System Network Architecture). ? Описание модели и ее протоколов очень сложно. ? Некоторые функции, такие как управление потоком, исправление ошибок, адресация, повторяются на каждом уровне. ? Для некоторых функций не ясно, на какой уровень их поместить (виртуальный терминал); шифрование и защита в модели отсутствуют. ? Модель слишком ориентирована на сервис с соединениями и мало внимания уделяет сервису без соединений. ? В модели доминирует связь, практически не отражена взаимосвязь между вычислениями и связью (indication vs. receive). В МОС-модели слушком велико влияние Международного комитета по телефонии и телеграфии (МКТТ). Трудно реализуемы: первые реализации протоколов МОС были громоздки и неэффективны. Первые реализации TCP/IP были сделаны в университете Беркли в рамках проекта по созданию операционной системы UNIX. Неправильная стратегия: модель МОС - результат усилий ЕС, европейских министерств и ведомств. Даже правительство США приложило руку. TCP/IP - плод академической среды. Распространение модели МОС шло через правительственные инстанции и государственные структуры, модели TCP/IP - через университеты и научные организации. 1.7.5. Недостатки эталонной модели TCP/IP 1. В модели нет четкого разграничения понятий «сервис», «интерфейс», «протокол». 2. Модель годится только для описания стека TCP/IP. 3. Уровень «хост-сеть» по существу уровнем не является, это больше интерфейс. 4. В этой модели не разделяются физическая среда передачи и уровень канала данных. Протоколы TCP и IP разработаны действительно тщательно и эффективно реализованы, чего нельзя сказать о многих других протоколах (протокол виртуального терминала, TELNET) По существу МОС-модель доказала свою эффективность, как методологический инструмент, стала популярной, чего нельзя сказать о протоколах. С TCP/IP все наоборот - модели по существу нет, зато протоколы получили широкое распространение. В нашем курсе мы будем использовать модифицированную пятиуровневую МОС-модель, а изучать протоколы TCP/IP. Наша гибридная модель показана в таблице 1-18. Таблица 1-18. «Наша» модель 5 Уровень приложений 4 Транспортный уровень 3 Сетевой уровень 2 Уровень канала данных 1 Физический уровень 1.8.1. ARPANET В середине 60-х годов министерство обороны США поставило задачу создания командных пунктов и пунктов управления связью, которые были бы способны сохранить работоспособность при ядерной войне. Обычные телефонные линии были ненадежны, поражение АТС района означало потерю связи со всеми абонентами этого района. Министерство обороны обратилось к своему Агентству перспективных разработок ARPA (иногда DARPA) - Advanced Research Project Agency. ARPA не имеет лабораторий, научных сотрудников и т.п. Это бюрократическая организация, имеющая самостоятельный бюджет, из которого она выделяет гранты университетам и компаниям, если их идеи кажутся им интересными. Как раз в начале 60-х Paul Baran из RAND Сorporation опубликовал идеи организации сетей на основе коммутации пакетов. После некоторых обсуждений ARPA решила, что сеть, необходимая для Минобороны, должна основываться на идеи коммутации пакетов. Подсеть должна была содержать как минимум один миникомпьютер IMP - Interface Message Processor, соединенный линиями связи с двумя другими в других подсетях. Подсеть должна была использовать дейтаграммный способ передачи. Тендер на построение сети выиграла компания BBN в декабре 1968. IMP-машины соединялись каналами. Программное обеспечение состояло из протоколов: IMP - хост, IMP - IMP, IMP- отправитель - IMP-получатель, как показано на рисунке 1-19. Рисунок 1-19. Устройство APRANET Позднее для подключения терминалов к сети был создан вариант IMP, названный TIP. Потом к одному IMP стало подключаться несколько хост-машин, одна хост-машина получила возможность соединяться с несколькими IMP. Затем начались эксперименты со спутниковой и радиосвязью. Был поставлен эксперимент: грузовик с оборудованием двигался по дорогам южной Калифорнии, пытаясь связаться с машинами в исследовательском институте Стэнфорда (SRI), которые через спутниковый канал передавали сообщения в Лондон. В результате экспериментов стало ясно, что имеющиеся протоколы недостаточны для межсетевой связи. В результате дополнительных усилий в 1974 был опубликован протокол TCP/IP. ARPA передало контракты на реализацию этих протоколов в университет Беркли, где шли работы над операционной системой UNIX. С появлением BSD 4.3 с реализацией TCP/IP, сокетов и другой сетевой математикой этот пакет стал быстро распространяться. К 1983 году ARPANET насчитывала более 200 IMP-машин. 1.8.2. Интернет К 1983 TCP/IP стал официальным протоколом в ARPANET. Чуть позже к сети ARPANET подключилась сеть NSFNET - сеть национального научного фонда США. После этого число сетей, подключенных к ARPANET, стало расти очень быстро. Во второй половине 80-х этот конгломерат сетей стали рассматривать как сеть сетей, а позднее как Интернет. К 1990 году число сетей достигло 3000, а число машин в них - 200 000. К 1992 году число хост-машин достигло миллиона, а к 1995 году число пользователей Интернета достигло 20 миллионов. На сегодня оно превысило 100 миллионов. Значительная часть роста сети Интернет происходила за счет подключения таких сетей, как SPAN - сеть космической физики NASA, HEP - сеть физики высоких энергий, BITNET - сеть машин среднего класса (mainframe) фирмы IBM, EARN - европейская сеть научно- исследовательских организаций. Сеть нашего факультета, которая охватывает сети нескольких факультетов и подразделений МГУ, - это часть сети HEP. Соединиться всем этим сетям позволил именно TCP/IP-стек. Что означает, что машина включена в Интернет? Это значит, что на ней используется TCP/IP-стек, она имеет индивидуальный IP-адрес, она может посылать TCP/IP-пакеты другим машинам в сети. Не ясно, правда, куда относить персональные машины, которые используют в основном электронную почту? Они подключаются через модем к поставщику этой услуги и от его имени посылают IP-пакеты другим машинам в сети. В 1992 году было создано Сообщество Internet, чтобы способствовать распространению Интернета и управлять этой сетью. Традиционными приложениями в Internet являются: ? Электронная почта ? Новости ? Удаленный вход в систему (TELNET, rlogin) ? Передача файлов (FTP) До начала 90-х Интернет был в основном сетью академических организаций. Однако с появлением нового приложения Всемирной паутины (World Wide Web - WWW) положение стало резко меняться. WWW было изобретено физиком Тимом Бернерс-Ли в CERN (Европейская организация по ядерным исследованиям). С появлением браузера Mosaic, созданного в национальном центре приложений для суперЭВМ, количество WWW-серверов в мире стало резко возрастать. IPX/SPX Стек протоколов IPX/SPX был разработан фирмой Novell. Работает под операционной системой Netware. Одно из основных требований при разработке этого стека - способность работать на маломощных ПЭВМ с минимальными ресурсами. Был очень популярен до середины 90-х. NetBIOS NetBIOS – Net Basic Input Output system. Это сетевое расширение стандарта I/O операций фирмы IBM для IBM PC. SNA, DNA Сетевые стеки фирм IBM и DEC. Работают под их операционными системами. В настоящее время не имеют широкого распространения. 1.9. Примеры систем передачи данных Напомним, что основной задачей СПД, которая является частью транспортной среды любой сети, является обеспечение среды для передачи данных между А-машинами и коммуникационными машинами в сети. Основные элементы СПД - каналы и коммутаторы. 1.9.1. Сети Х.25 Стандарт Х.25 используют некоторые телефонные сети, особенно в Европе. Этот стандарт, разработанный МКТТ в 70-х годах, определяет интерфейс между сетью с коммутацией пакетов и терминалом, а также взаимодействие терминалов через сеть передачи данных. Рекомендации этого стандарта в терминах модели МОС охватывают физический, канальный и сетевой уровни. Они определяют способ передачи цифровых данных по телефонным каналам. ? Протокол Х.21 определяет физический, электрический интерфейс и процедуры взаимодействия терминала и сети передачи данных. Сетей, поддерживающих этот стандарт, не так много. Это связано с тем, что он требует использования цифровых сигналов, а не аналоговых. Как временная мера был предложен интерфейс типа RS-232. ? Уровень канала данных отвечает за исправление ошибок на линии. ? Сетевой уровень отвечает за адресацию, управление потоком, подтверждение доставки, прерывания и т.п. внутри СПД ? Пакеты в Х.25 имеют длину до 128 байт. ? Обычная скорость - 64 кбит/сек. ? Стандарт ориентирован на соединение и поддерживает режим коммутируемых виртуальных каналов и режим постоянного виртуального канала. ? Поскольку в мире уже много оконечных устройств, не рассчитанных на Х.25, то было предложено решение - устройство PAD (Packet Assembler Disassembler), которое работает, как черный ящик. Его работу определяют три протокола Х.3, Х.28 и Х.29. 1.9.2. Frame Relay Ретрансляция кадров (Frame Relay - FR) - это метод доставки сообщений в сетях передачи данных (СПД) с коммутацией пакетов (в отличие от СПД с коммутацией каналов и сообщений). Первоначально разработка стандарта FR ориентировалась на цифровые сети с интегрированным сервисом (ISDN - Integrated Services Digital Networks), однако позже стало ясно, что FR применим и в других СПД (здесь под данными понимается любое сообщение, представленное в цифровой форме). К числу достоинств метода, прежде всего, необходимо отнести малое время задержки, простой формат кадров, содержащих минимум управляющей информации, и независимость от протоколов верхних уровней эталонной модели МОС, которую мы рассмотрели в разделе 1.7. Эту службу можно рассматривать, как аренду виртуальной линии, по которой можно передавать пакеты длиной до 1600 байт. Можно заказать постоянную виртуальную линию от одного ко многим. Разница между арендуемой физической линией и виртуальной в том, что по физической линии можно гнать данные с максимальной скоростью целый день, по виртуальной средняя скорость будет меньше. Эта служба предоставляет минимальный сервис. Если фрейм поступил с ошибкой, то он просто сбрасывается. Дело пользователя - определить, какой фрейм пропущен и как его восстановить. В отличие от Х.25, FR не поддерживает уведомления о доставке и обычного управления потоком. В настоящее время разработкой и исследованием стандартов FR занимаются три организации: Frame Relay Forum (FRF) - международный консорциум, включающий в себя свыше 300 поставщиков оборудования и услуг, среди которых 3Com, Northern Telecom, Digital, Cisco, Netrix, Ascom Timeplex, Newbridge Networks, Zilog и др.; American National Standards Institute (ANSI, Американский национальный институт по стандартизации); Международный союз электросвязи (ITU-T), который является правопреемником МКТТ. Любой международный стандарт имеет (и всегда будет иметь) множество прикладных реализаций, что зачастую приводит к несовместимости аппаратно-программных средств разных производителей. Международные организации неоднократно пытались решить данную проблему. Результатом одной из таких попыток (предпринятой FRF) стал проект стандарта, включающего в себя спецификации ANSI, которые обязательны для выполнения членами FRF. В январе 1992 г. этот проект был доработан Техническим комитетом FRF и утвержден собранием членов FRF. Принятый FRF проект рассматривает только спецификации для постоянных виртуальных каналов (PVC) и интерфейса «пользователь-сеть» (UNI). В него не вошли стандарты для коммутируемых виртуальных каналов (SVC) и интерфейса межсетевого взаимодействия. Однако работа по этим направлениям продолжается, и ее результаты найдут свое отражение в новых стандартах FR. Проект FRF не рассматривает и стандарты физических интерфейсов, поэтому при создании сетей FR допускаются разные физические интерфейсы. 1.9.3. Высокоскоростной ISDN и ATM Кроме проблем, связанных с быстро растущими требованиями в области сервиса, есть и еще одна - интеграция разных сетей. Например, Х.25, SMDS и FR сетей с сетью DQDB. Связывать и обслуживать все это разнообразие сетей - огромная головная боль. А есть еще кабельное телевидение и т.д. и т.д. Выход из этого ада - создать единую сеть, обеспечивающую такую высокую скорость передачи, что она будет способна поддерживать любую услугу. Это нельзя сделать быстро за одну ночь. Это очень масштабный проект и он уже начался. Этот новый сервис передачи данных называется Broadband ISDN - высокоскоростной ISDN. Этот сервис будет поддерживать передачу видео, аудио и цифровых данных высокого качества, обеспечивать высокоскоростную связь между локальными сетями. Основной технологией, которая делает возможным реализацию сервиса B-ISDN, является АТМ (Asynchronous Transfer Mode) - асинхронный способ передачи. Главная идея АТМ - передавать данные малыми порциями, фиксированной длины, называемыми ячейками. Каждая ячейка имеет длину 53 байта - 48 на данные и 5 на заголовок. На рисунке 1-21 показана АТМ-ячейка. АТМ - это и технология, т.е. невидимая для пользователя сущность, и сервис, т.е. то, что пользователь видит. Рисунок 1-21. Формат ячейки АТМ Переход от 100-летней технологии коммутации каналов на коммутацию пакетов - это гигантский шаг. Есть много причин, почему данные удобно передавать небольшим пакетами - ячейками: ? Ячейки удобно использовать для управления и передачи разнородных данных - звук, видео, цифра. ? При больших скоростях проще управлять переключением небольших ячеек, чем использовать старую технику мультиплексирования. ? АТМ - это технология, ориентированная на соединение: прежде чем передавать данные, устанавливается соединение и лишь потом передаются данные. Доставка данных не гарантируется, но порядок - да. ? АТМ-сеть, как любая другая ПД, состоит из каналов и коммутаторов. В настоящее время достигнута скорость 155 Мбит/сек. и 622 Мбит/сек. ? Когда АТМ появился, основной областью применения этого сервиса считалось видео по заказу. В настоящее время появились и другие приложения, которые также требуют высокой пропускной способности. 1.9.4. Эталонная модель B-ISDN АТМ Рассмотрим эталонную модель АТМ в том виде, как она представлена в области телефонии. Эта модель изображена на рисунке 1-22 в виде куба. Она состоит из трех уровней: физического, АТМ и уровня адаптации. Сверху пользователь может поместить любое приложение, например, стек TCP/IP. Рисунок 1-22. Модель АТМ Физический уровень в АТМ определяет правила передачи и приема данных в форме потока битов и преобразования их в ячейки. Носителями этого потока могут быть разные среды. АТМ не ограничивает их число. АТМ-уровень отвечает за транспорт ячеек. Он определяет формат ячейки, заголовок, его содержимое, отвечает за установление и поддержание виртуальных соединений. Управление потоком и перегрузками также сосредоточено здесь. Уровень адаптации (AAL) обеспечивает приложениям-пользователям возможность работы в терминах пакетов или подобных им единиц, а не ячеек. Плоскость пользователя отвечает за транспорт данных, управление потоком, исправление ошибок и другие функции пользователя. Плоскость управления отвечает за управление соединением. Уровни управления уровнем и плоскостью отвечают за управление ресурсами и координацию межуровневых взаимодействий. Физический уровень и уровень адаптации имеют по два подуровня. Они показаны в таблице 1-23. Таблица 1-23. Уровни и подуровни АТМ Уровень MOC Уровень ATM Подуровень ATM Функции 3/4 AAL CS (Convergence Sublayer - подуровень сходимости) Предоставление стандартного интерфейса (сходимость) SAR (Segmentation & Reassembly Sublayer - подуровень сегментации и сборки) Сегментация и сборка 2/3 ATM Управление потоком Формирование/извлечение заголовков Управление виртуальным каналом/путем (Де)мультиплексирование ячеек 2 Физический TC (Transmission Convergence Sublayer - подуровень подготовки ячеек) Разделение передачи ячеек Формирование и проверка контрольной суммы заголовка Формирование ячеек Сборка ячеек в оболочку Формирование кадра 1 PMD (Physical Medium Dependent Sublayer - подуровень среды передачи) Тактовая синхронизация Физический доступ к сети 1.9.5. SMDS - Мегабитная система передачи данных с коммутацией Эта СПД была разработана фирмой Bellcore для тех пользователей, у которых есть несколько LAN-подразделений, территориально разобщенных. Для их соединения либо надо арендовать 6 телефонных линий (рисунок 1-24 (а)), либо поступить так, как показано на рисунке 1-24 (b). В последнем случае надо арендовать четыре короткие линии от LAN до точки подключения к SMDS-сети. Рисунок 1-24. Соединение LAN через SMDS Преимущества SMDS следующие: ? Обычные телефонные линии рассчитаны на постоянную загрузку, SMDS-сеть - на взрывную, т.е. большая часть трафика будет сосредоточена в рамках каждой LAN, и лишь иногда пара LAN будет соединяться. ? Такое решение дешевле. Надо платить за n арендуемых линий, а не за n(n-1)/2, как в случае полного соединения обычными линиями. ? Скорость передачи - 45 Мбит/сек. ? Это решение лучше, чем решение через MAN, которое осуществимо лишь в условиях города. ? На рисунке 1-25 показан формат SMDS-пакета. SMDS-служба поддерживает только одну услугу - простую передачу потока пакетов. ? При этом не важно содержимое пакета. Это может быть IP-пакет, IBM маркерный пакет и т.п. Рисунок 1-25. Формат пакета SMDS Развитие этой службы идет в направлении вещательной передачи, когда пользователь может определить несколько адресов для доставки пакета. В то же время, если допустить возможность предопределения тех телефонных номеров, от которых можно получать пакеты, пользователи получат прекрасную возможность создания своей индивидуальной сети на основе телефонной службы. 1.9.6. Сравнение СПД Свойство DQDB SMDS X.25 Frame Relay ATM AAL Ориентированность на соединение Есть Нет Есть Есть Есть Стандартная скорость передачи (Мбит/сек.) 45 45 0,064 1,5 155 Коммутируемость Нет Есть Есть Нет Есть Фиксируемая нагрузка Есть Нет Нет Нет Нет Максимальная нагрузка 44 9188 128 1600 Переменная Постоянные виртуальные каналы Нет Нет Да Да Да Групповое вещание Нет Да Нет Нет Да В таблице 1-26 приведены основные данные по каждой из ранее рассмотренных СПД. Может возникнуть вопрос: почему их так много? Все они появились в разное время, под давлением потребностей разных категорий пользователей, разрабатывались разными компаниями из разных областей: телефония, цифровые сети, телевизионные сети. Таблица 1-26. Возможности разных СПД 1.10. Требования, предъявляемые к современным компьютерным сетям Главным требованием является обеспечение пользователям доступ к вычислительным сервисам сети. Все остальные требования – производительность, надежность, безопасность, расширяемость и масштабируемость, управляемость, совместимость – характеризуют качество реализации главного требования. 1.10.1. Производительность Производительность сети характеризует скорость работы сети. Эта характеристика измеряется в количестве услуг в единицу времени. Под услугой может пониматься пропускная способность - число пакетов, пройденных через сеть за секунду, минуту, час, день. Соответственно говорят о средней, мгновенной, пиковой, минимальной пропускной способности сети. Это может быть выполнение определенной операции – тогда это время реакции. Чаще всего пользователь обращает внимание именно на этот индекс производительности. Он характеризует как скорость работы клиента, так и скорость работы сервера и СПД. Индекс, характеризующий только работу СПД, называется время передачи – время от поступления запроса на вход СПД до появления его на выходе. 1.10.2. Надежность Эта характеристика сети определяет, всегда ли сеть способна выполнять операции и, если операция запущена, то всегда ли она корректно завершится. Есть несколько подходов измерения этой характеристики: ? через измерение надежности устройств (время наработки на отказ, вероятность отказа, интенсивность отказов) ? коэффициент готовности – доля времени, в течение которого система может быть использована ? вероятность доставки пакета через ТС ? вероятность искажения пакета в ТС ? отказоустойчивость 1.10.3. Безопасность Характеризует степень защищенности сети от несанкционированного использования и изменения состояния ее ресурсов: ? ТС ? СПД ? Вычислительные ресурсы ? Информация (доступ, изменение) В случае информации говорят о конфиденциальности данных, когда доступ к данным получает лишь тот, кто имеет на это право, и целостности, когда изменять данные может только тот, кто имеет на это право. 1.10.4. Расширяемость и масштабируемость Расширяемость характеризует то, насколько сложно изменить конфигурацию сети: СПД, добавить новый узел и т.п. Масштабируемость характеризует способность сети плавно увеличивать вычислительную мощность без деградации производительности сети в целом. 1.10.5. Прозрачность Эта характеристика показывает, насколько «просто» пользоваться сетью. Чем сложнее доступ для пользователя к нужному сервису в сети, тем менее прозрачна сеть. В идеале должен быть реализован принцип «Сеть – это компьютер». ? сама распределяет ресурсы и управляет ими ? среда для разработки и выполнения программ ? поставщик сервиса ? для пользователя она прозрачна (он ее не видит) ? концепция метакомпьютера 1.10.6. Передача разнородных потоков данных (видео, звук, цифра) Слияние средств вычислений и средств передачи разнородных данных. Здесь основную сложность представляет синхронность передачи. 1.10.7. Управление Возможность управлять и контролировать работу каждого отдельного устройства в сети из единого центра. 1.10.8. Совместимость Характеризует способность подключать разное оборудование и программное обеспечение. 1.11. Кто, как и для чего вводит стандарты ? Функции стандарта: o унификация (вспомним Вавилонскую башню) o координация o защита пользователей o защита инвестиций ? Стандарты o международные, государственные, отраслевые o de jure, de facto ? Международная организация по стандартизации (ISO) o Образована в 1946 году, распространена на 89 стран, включая Россию. o Имеет 200 технических комитетов, рабочие группы, более 100 000 добровольцев. o Этапы стандарта - CD, DIS, IS. ? Международный Союз электросвязи (орган ООН) o сектор радио коммуникаций (ITU-R) o сектор телекоммуникационной стандартизации (ITU-T) o сектор разработок ? Европейская ассоциация производителей компьютеров (ECMA) ? Американский национальный институт стандартов o стандартизация языков o развитие SNA совместно с IBM ? Министерство обороны США ? Институт инженеров по электротехнике и радиоэлектронике (IEEE) ? Госстандарт ? Техническая комиссия Кто есть кто в мире стандартов для Интернета ? Интернет-cообщество (ISOC) - развитие инфраструктуры, общие вопросы развития и роста Интернета. ? Совет по архитектуре Internet (IAB) - технический контроль и координация работ по разработке новых стандартов и их реализации. o IETF - решение краткосрочных проблем, спецификация предложений для стандартизации o IRTF - долгосрочные проблемы, требующие отдельных исследования ? IETF формирует draft стандарта, которому присваивают RFC o standard proposal (6 месяцев) o standard draft (4 месяца) o официальный стандарт Интернета