Принципы работы составных сетей.
Сетевой уровень в компьютерных сетях служит доя образования единой транспортной системы, объединяющей несколько сетей с различными принципами передачи информации между конечными узлами.
Из описания стандартов канального уровня локальных сетей видно, сосуществование различных стандартов и технологий передачи пакетов - норма жизни любой компьютерной сети средних и крупных размеров.
Появление новых технологий не означает мгновенного исчезновения старых, таких как 10-Мбитный Ethernet из-за огромной базы капиталовложений в эти технологии.
Кроме того, локальные сети необходимо объединять с помощью глобальных связей друг с другом в территориально распределенные корпоративные сети. Так как глобальные связи - это не только выделенные линии, соединяющие локальные сети по топологии "точка-точка", но и связи через сети со своими методами передачи информации, то задача объединения их всех в одну сеть, прозрачную для транспортных операций конечных узлов, еще больше усложняется.
Часто термин internetworking используют для обозначения составной сети, включающей связи локальных сетей через глобальные, то есть как термин внешнее межсетевое взаимодействие, а для составной локальной сети используют термин intranetworking, то есть внутреннее межсетевое взаимодействие.
Коммутаторы, представляют собой хорошее средство для построения структурированных сетей, но их возможности ограничиваются в основном масштабами локальных сетей одной или близких технологий. Соединение разнородных сетей для коммутатора становится неразрешимой задачей, которая решается при помощи устройства другого класса, а именно маршрутизатора (или шлюза в традиционной терминологии пользователей сети Internet).
Основная идея введения сетевого уровня состоит в том, чтобы оставить в объединяемых сетях все особенности их технологий в неизменном в виде, но инкапсулировать в пакеты всех сетей единообразную информацию, позволяющую находить на ее основании адресата в сети любого типа.
Если провести хорошо работающую в неоднородном сетевом мире аналогию с общением людей, говорящих на разных языках, то сетевая информация - это общепринятый индекс страны, добавленный к письму, адрес назначения которого написан на одном из сотни языков земного шара, например, на хинди. И даже если это письмо должно пройти через множество стран, почтовые работники которых не знают хинди, понятный им индекс страны-адресата подскажет, через какие промежуточные страны лучше передать письмо, чтобы оно кратчайшим путем попало в Индию. А уже там работники местных почтовых отделений смогут прочитать точный адрес, указывающий город, улицу, дом и индивидуума и доставить письмо конечному пользователю, так как адрес написан на языке и в форме, принятой для данной страны.
Единообразная информация и составляет заголовок пакета сетевого уровня, который вставляется в пакеты любых форматов сетей, которые могут входить в интерсеть.
Основным полем заголовка сетевого уровня является номер сети-адресата. В протоколах локальных сетей такого поля в кадрах предусмотрено не было - предполагалось, что все узлы принадлежат одной сети. Явная нумерация сетей позволяет протоколам сетевого уровня составлять точную карту межсетевых связей и выбирать рациональные маршруты при любой их топологии, используя альтернативные маршруты, если они имеются, что не умеют делать мосты.
Прежде, чем приступить к рассмотрению межсетевого взаимодействия, уточним, что понимается под термином "сеть".
Этот термин может употребляться в широком смысле (сеть - это совокупность связанных между собой компьютеров) и в узком смысле (сеть - это совокупность компьютеров, соединенных между собой в соответствии с одной из стандартных типовых топологий - шина, звезда, кольцо - и использующих для передачи пакетов внутри этого сообщества свой набор протоколов). В протоколах сетевого уровня термин "сеть" используется в узком смысле.
Кроме номера сети заголовок сетевого уровня должен содержать и другую информацию, необходимую для успешного перехода пакета из сети одного типа в сеть другого типа. К такой информации может относиться, например:
• номер фрагмента пакета, нужный для успешного проведения операций сборки-разборки фрагментов при соединении сетей с разными максимальными размерами пакетов,
• время жизни пакета, указывающее, как долго он путешествует по интерсети и которое может использоваться для уничтожения заблудившихся пакетов,
• информация о наличии и состоянии связей между сетями, помогающая узлам сети рационально выбирать межсетевые маршруты,
• информация о загруженности сетей, также помогающая согласовать темп посылки пакетов в сеть конечными узлами с реальными возможностями сетей на пути следования пакетов,
• качество сервиса - критерий выбора маршрута при межсетевых передачах - например, узел-отправитель может потребовать передать пакет с максимальной надежностью, возможно, в ущерб времени доставки.
На рисунке приведена гипотетическая интерсеть, иллюстрирующая идею использования сетевого протокола. Интерсеть состоит из 6 сетей, к каждой из которых присоединены ее узлы, которые в соответствии с терминологией ISO называются конечными системами - ES (End System). Терминология ISO здесь используется для удобства, так как сети разных типов используют различные термины для обозначения одних и тех же понятий, что вносит путаницу при рассмотрении механизма межсетевого взаимодействия с общих позиций. Внутренняя структура каждой сети не показана, так как она не имеет значения с точки зрения сетевого протокола. Сети соединяются маршрутизаторами, которые ISO называет промежуточными системами - IS (Intermediate System).
Рис. Гипотетическая интерсеть.
ISN - промежуточная система/шлюз /маршрутизатор N,
ESNn - конечная система /узел /хост п.
Каждая промежуточная система присоединена к нескольким сетям (по крайней мере к двум) и имеет в каждой такой сети локальный адрес, как и остальные конечные системы этой сети. Соответственно, промежуточная система должна поддерживать все протоколы, используемые в каждой из сетей, к которым она непосредственно присоединена.
Узел ES также обязан принимать участие в работе протокола сетевого уровня. Именно конечный узел формирует заголовок сетевого уровня с необходимой информацией, в том числе и адресом сети назначения, и вкладывает его в протокол своей сети, который для локальных сетей является протоколом канального уровня, таким как Ethernet. В служебном заголовке канального уровня конечный узел указывает локальный адрес маршрутизатора, подключенного к его сети, и отправляет ему кадр с вложенным пакетом сетевого уровня (если на канальном уровне протокольные блоки данных чаще называются кадрами, то на сетевом - пакетами, хотя принципиальной разницы между ними нет).
Маршрутизатор, получив кадр, извлекает из него заголовок сетевого уровня и решает, каким маршрутом лучше далее отправить этот пакет, если сеть назначения не подключена к нему непосредственно. Принятие решения о маршруте для него равнозначно принятию решения о выборе следующего маршрутизатора. После того, как выбор сделан, он упаковывает пакет в кадр сети, которая связывает его с выбранным маршрутизатором, указывает в кадре локальный адрес маршрутизатора и отправляет кадр по этой сети. В конце концов пакет приходит в сеть назначения, где маршрутизатор направляет его в соответствии с локальным адресом узлу назначения.
Важным вопросом является схема адресации узлов в отдельных сетях.
Описанный подход не требует наличия уникальных адресов и единой схемы адресации для внутрисетевой доставки пакета. После того, как пакет доставлен в нужную сеть за счет использования ее уникального номера, доставка в пределах этой сети осуществляется по ее правилам, и адрес узла внутри этой сети может быть традиционного для нее формата. Однако различия в форматах адресов узлов не очень удобны для реализации сетевого протокола, так как адрес узла назначения необходимо поместить в заголовок сетевого уровня - в заголовке канального уровня в случае пути, проходящего через несколько сетей, указывается локальный адрес маршрутизатора, который должен передать пакет в другую сеть. Поэтому в некоторых сетевых протоколах, например, IP, локальные адреса узлов имеют единый формат, не зависящий от локального формата адреса сети.
Маршрутизатор выбирает маршрут на основании его представления о текущей конфигурации сети и соответствующего критерия выбора маршрута. Обычно в качестве критерия выступает время прохождения маршрута, которое в локальных сетях совпадает с длиной маршрута, измеряемой в количестве пройденных узлов маршрутизации (в глобальных сетях это не так, там принимается в расчет и время передачи пакета по каждой линии связи).
В сложных составных сетях почти всегда существует несколько альтернативных маршрутов для передачи пакетов между двумя конечными узлами. Так, в нашем примере для передачи пакетов от узла ESI.I сети 1 узлу ES5.1 сети 5 существует несколько альтернативных маршрутов, из которых наиболее очевидными представляются:
ES1.1® IS3 ® СЕТЬ 3 ® IS 6 ® СЕТЬ 5 ® ES5.1
ES1.1 ® IS4 ® СЕТЬ 6 ® IS 8 ® СЕТЬ 5 ® ES5.1
ES1.1 ® IS1 ® CETЬ 2 ® IS 2 ® CETЬ 4 ® IS 10 ® СЕТЬ 5 ® ES5.1,
если считать, что все маршрутизаторы и сети работоспособны, и производительность и надежность сетей и связей между ними одинакова.
Семиуровневая модель OSI
В настоящее время компьютерные системы повсеместно применяются в сфере телекоммуникаций. Большинство устройств включая абонентские терминалы представляют собой компьютерные системы, а оказание услуг электросвязи является прежде всего обменом данными между компьютерами.
Передача данных между двумя компьютерами представляет сложную задачу. Необходимо согласовать механические и электрические параметры используемых кабелей и разъёмов, уровни напряжений, формат передаваемых данных, методы обработки ошибок и множество других параметров.
Для решения сложной задачи часто используется принцип многоуровневой декомпозиции, в соответствии с которым происходит разбиение задачи на ряд более простых подзадач, для решения каждой из которых определяется отдельный модуль (рис.).
Рис. |
Все модули разбиваются на иерархические уровни. Вышестоящий модуль может обратиться к нижестоящему, результаты работы модуля передаются модулю вышестоящего уровня.
Обмен данными между двумя модулями, расположенными на одном уровне в разных узлах, можно рассматривать как непосредственный обмен данными между этими модулями. Обмен данными между модулями, лежащими на одном уровне, производится в соответствии с определённым протоколом. Иерархически организованный набор протоколов, достаточный для организации межсетевого взаимодействия, называется стеком протоколов. Как правило, протоколы оперируют блоками данных, которые обобщённо называются PDU (Protocol Data Unit). Для обмена данными между двумя компьютерами необходимо, чтобы они поддерживали один и тот же стек протоколов.
Протокол (стек протоколов) – это прежде всего стандарт (набор стандартов), в соответствии с которыми происходит обмен данными. Программные (аппаратные) модули, осуществляющие обмен данными в соответствии с этим стандартом, представляют программную (аппаратную) реализацию стека протоколов. Часто реализацию того или иного стека протокола также называют стеком протоколом.
Разные реализации одного и того же стека протоколов могут различаться в зависимости от производителя, операционной системы и других факторов. Например, реализация стека TCP/IP под Windows отличается от реализации TCP/IP под UNIX с точки зрения возможностей, предоставляемых прикладному процессу. Но поскольку в обоих случаях стек TCP/IP реализован в соответствии со стандартом, обеспечивается обмен данными между UNIX и Windows машинами, поддерживающими TCP/IP.
Часть протоколов является проприетарным (англ. property), т.е. является собственностью фирмы-разработчика, и может не поддерживаться оборудованием или программным обеспечением других производителей. Во избежание проблем с совместимостью рекомендуется ориентироваться на открытые протоколы, являющиеся международным стандартом, на обязательную поддержку которых ориентируется большинство производителей.
Различают протоколы с установление соединения (connection-oriented) и без установления соединения (connectionless). Протоколы с установлением соединения осуществляют установление соединения между отправителем и получателем перед отправкой данных. Как правило, это виртуальное (или логическое) соединение – virtual circuit. Устройства, организующие соединение, согласуют параметры, которые должны обеспечиваться при передаче данных, например, маршрут и минимальную гарантированную скорость передачи. Коммутации физических каналов при установлении виртуального соединения не происходит.
Протоколы без установления соединения называют также дейтаграммными протоколами. При отправке блока данных получатель никак не уведомляется, повторная отправка утерянных PDU не осуществляется. Такие протоколы работают в режиме best effort, т.е. пытаются передать данные как можно качественнее и без потерь, но надёжность не гарантируется.
Многоуровневый подход обеспечивает независимость внутренней структуры отдельных модулей при условии неизменности межмодульного интерфейса. Например, при замене сетевой карты достаточно инсталлировать новый драйвер сетевой карты, при этом в прикладные программы и программное обеспечение, реализующее протоколы более высоких уровней, никаких изменений вносить не нужно.
Семиуровневая модель OSI была разработана ISO в начале 80-х годов рядом международных организаций по стандартизации (ITU, ISO и др). В дальнейшем была создана программная реализация стека протоколов OSI, полностью соответствующего данной модели. Но к тому времени уже достаточно широко применялся стек TCP/IP, который гораздо проще и дешевле стека OSI, поэтому внедрить стек OSI не удалось. Тем не менее, модель OSI представляет существенный теоретический интерес и используется для описания межсетевого взаимодействия. Терминология модели OSI используется повсеместно.
Модель OSI содержит семь уровней (рис.): 1 - физический (physical), 2 - канальный (datalink), 3 - сетевой (network), 4 - транспортный (transport), 5 - сеансовый (session), 6 - уровень представления (presentation),7 - прикладной (application).
Рис. |
Прикладной уровень предоставляет приложениям доступ к сети. Прикладной уровень обменивается данными с представительским уровнем.
Представительский уровень обеспечивает согласование и преобразование форматов передаваемых данных между модулями прикладного уровня. На представительском уровне может выполняться шифровка/дешифровка, компрессия/декомпрессия или другое преобразование передаваемых данных.
В качестве примера функций представительского уровня можно привести определение кодировки веб-страницы браузером. Часто при загрузке веб-страницы она отображается нечитабельными символами из-за неправильного определения кодировки, что является примером сбоя представительского уровня.
Сеансовый уровень предоставляет средства управления диалогом, позволяющие фиксировать, какая из взаимодействующих сторон является активной в настоящий момент, а также предоставляет средства синхронизации в рамках процедуры обмена сообщениями. Пример функции сеансового уровня – определение активной стороны при полудуплексной голосовой связи.
Транспортный уровень обеспечивает передачу данных между двумя приложениями с требуемым уровнем надежности.
На транспортном уровне происходит разбиение потока данных на сегменты при отправке данных или сборка исходного потока данных из сегментов при приёме. Сегментом называется блок данных (PDU) транспортного уровня.
В случае передачи данных, критичных к ошибкам (например, передача двоичных файлов), нужна надёжная передача с исправлением ошибок и повторной передачей утерянных сегментов. В таком случае используются надёжные протоколы с установлением виртуальных соединений. При передаче некоторых видов трафика, чувствительных к задержке, но допускающих частичную потерю передаваемых данных (например, потоковое видео) можно использовать дейтаграммные протоколы.
Сетевой уровень обеспечивает доставку пакета между двумя узлами в сети с произвольной топологией. Пакетом называется блок данных сетевого уровня. Обобщённый формат пакета изображён на рис..
Рис.. |
Главная задача сетевого уровня – это поиск маршрута от одного компьютера к другому и передача пакета по этому маршруту. Надёжность передачи данных, как правило, обеспечивается протоколами более высоких уровней. Пакет обобщенно состоит из заголовка и поля данных. В поле данных чаще всего содержится сегмент транспортного уровня, а заголовок содержит служебную информацию, а также адреса отправителя и получателя.
На сетевом уровне вводится адресация компьютеров. Адреса сетевого уровня называют логическими адресами, поскольку адресация не зависит от аппаратного обеспечения. Адресация сетевого уровня иерархическая, адрес состоит как минимум из двух частей – номер сети и номер узла в этой сети. При этом сеть прежде всего понятие логическое, к одной сети относятся те компьютеры, у которых номер сети совпадает.
Передача данных между сетями осуществляется при помощи специальных устройств, которые называются маршрутизаторами. Маршрутизатор – это компьютер специального назначения, который имеет несколько сетевых интерфейсов, при этом каждый интерфейс является частью той сети, к которой он подключен (рис.).
Рис. |
Задача маршрутизатора – определение маршрута и коммутация пакета, т.е. маршрутизатор должен принять пакет на один из своих интерфейсов, определить, через какой интерфейс этот пакет должен быть передан далее, и отправить пакет через этот интерфейс. Задача выбора маршрута называется маршрутизацией.
Протоколы, относящиеся к сетевому уровню, можно разделить на 2 группы – маршрутизируемые протоколы (routed protocols) и протоколы маршрутизации (routing protocols). Маршрутизируемые протоколы используются для передачи данных между хостами, тогда как протоколы маршрутизации используются для передачи маршрутной информации между маршрутизаторами.
Канальный уровень обеспечивает передачу фрейма данных между любыми узлами в сетях с типовой топологией либо между двумя соседними узлами в сетях с произвольной топологией. Также на канальном уровне осуществляется управление доступом к среде передачи данных.
Фреймом (англ. frame - кадр) или реже кадром называется PDU канального уровня. В поле данных кадра инкапсулируется пакет. На канальном уровне используется плоская или неиерархическая адресация. Адреса канального уровня в локальных сетях часто называют МАС-адресами, или физическими адресами.
Адресация канального уровня, а также формат фрейма зависят от типа оборудования. Это значит, что для передачи фрейма отправитель и получатель должны использовать на канальном уровне один и тот же стандарт. Например, можно объединить в одном сегменте сети два компьютера с сетевыми картами Etehrnet, но объединение компьютеров с сетевыми картами Ethernet и Token ring в одном сегменте является невозможным.
Обобщённо формат фрейма представлен на рис..
Рис. |
Фрейм состоит из заголовка, поля данных, и трейлера. В заголовке содержится служебная информация, а также адресная информация, необходимая для доставки фрейма. В поле данных содержится блок данных сетевого уровня, т.е. пакет. В трейлере содержится контрольная сумма, позволяющая определить, был ли фрейм повреждён при передаче.
Во избежание захвата среды передачи данных каким-либо одним узлом максимальный размер фрейма ограничен, соответственно ограничен максимальный размер поля данных. Максимальный размер поля данных фрейма называется MTU – Maximum Transfer Unit. Например, для сетей Ethernet MTU составляет 1500 байт.
Физический уровень.
Задача физического уровня - осуществлять передачу отдельных битов по физическим каналам, таким как витая пара или оптоволоконный кабель. На этом уровне определяются характеристики среды передачи данных, параметры электрических сигналов, стандарты на прокладку кабельной проводки, методы модуляции/демодуляции, кодирования и пр. С точки зрения физического уровня осуществляется передача неформатированного потока данных бит за битом, физический уровень “не понимает” формата фреймов или пакетов.
Порядок инкапсуляции.
При передаче данных от отправителя к получателю (рис.) данные сначала поступают на прикладной уровень, с прикладного на представительский, с представительского на сеансовый, а далее на транспортный уровень. На транспортном уровне поток данных разбивается на сегменты. На сетевом уровне сегмент инкапсулируется в пакет, на канальном уровне пакет инкапсулируется во фрейм, а фрейм на физическом уровне бит за битом передаётся через среду передачи данных. Получатель осуществляет обратный процесс, т.е. из фрейма извлекается пакет, из пакета извлекается сегмент. На транспортном уровне из сегментов собирается исходный поток данных, после чего данные передаются на сеансовый уровень, далее на представительский, с представительского – на прикладной уровень. Прикладной уровень передаёт данные приложению-получателю.
Таким образом, имеет место следующий порядок инкапсуляции: сегмент-пакет-фрейм (рис.).
Модель TCP/IP.