Тема № 2.________Модель OSI (Open System Interconnection). Стек протоколов TCP\IP.
С целью стандартизации уровней общения сетевых устройств международной организацией ISO (international organization of standard) была разработана модель OSI (Open System Interconnection), которая описывает, как, по каким правилам высокоуровневое сообщение преобразуется в конечном итоге в электрические сигналы, передающиеся по сетевому кабелю или телефонной сети, а затем восстанавливаются вновь у получателя.
Обеспечивает связь человека и компьютера или любого другого сетевого устройства. Определяет правила интерфейса с пользователем.
Обеспечивает подготовку данных к передаче по сети, например, кодирование, упаковка.
Обеспечивает установление логического или физического соединения.
Обеспечивает надежную передачу пакетов данных.
Обеспечивает распределение пакетов по многоуровневой сети (с подсетями). Решаются вопросы адресации, выбора маршрута.
Обеспечивает прохождение пакета по каналу связи. Стандарты на сетевые технологии.
Описывает требования к физическим характеристикам сетевых устройств, способы кодирования, аппаратного контроля правильности и т.п.
Сейчас нам важно понять, что для протоколов более старшего уровня информация, получаемая от протоколов младшего уровня, рассматривается как непрерывный поток битов, которые разбиваются на некоторые куски, называемые пакетами или дейтаграммами в зависимости от типа соединения. Пакетом обычно называют единицу информации, передаваемой с подтверждением. А дейтаграммой – без подтверждения. Причем обе эти единицы рассматриваются на транспортном уровне. На канальном уровне единица передаваемой информации обычно называется кадром.
Пусть исходный текст, который мы хотим передать по сети: «Данные». Тогда этот текст разобьется на некоторые фрагменты, размер которых соответствует размеру минимального буфера (минимум по источнику, получателю и промежуточным узлам). Каждый фрагмент снабжается заголовком. Такая конструкция называется пакетом. Заголовок пакета (адрес отправителя и адрес получателя + служебная информация).
Выделенные каналы, как вы уже поняли, это дорого. На практике применяется так называемое разделение каналов или мультиплексирование, при котором канал связи поступает в распоряжение того или иного абонента по некоторым правилам.
Существует множество алгоритмов, которые позволяют нескольким абонентам пользоваться одной линией связи. Как обычно, хороших и плохих алгоритмов не бывает, бывают более или менее соответствующие заданным условиям.
Так, например, самый простой алгоритм состоит в следующем: если узлу требуется передать данные, он их передает. При этом возможна ситуация, при которой в это же время начал передачу еще какой-нибудь узел. Очевидно, оба сообщения будут испорчены. (Если одновременно кричат два человека, не слышно никого!) Но, если вероятность такой одновременной передачи низка, то вполне можно согласиться на этот алгоритм.
Пусть теперь узлы достаточно часто передают данные по сети, следовательно, требуется как-то упорядочить их работу. Рассмотрим канал с временным (ударение на последнем слоге слова!) разделением. При этом за каждым абонентом закрепляются промежутки времени, в которые абонент момент передавать данные. Если абоненту нечего передавать, то в течение выделенного ему времени сеть простаивает. Вторая проблема этого протокола состоит в необходимости синхронизации узлов. В курсе «Надежность информационных систем» мы рассмотрим способы синхронизации. А сейчас главное – осознавать, что в случае неверно идущих часов у одного из узлов снова появляются коллизии (наложение и порча пакетов).
Частотное мультиплексирование более распространено. При этом за каждым абонентом закрепляется определенная полоса пропускания – полоса частот, используемых для приема и передачи данных. Полосы не перекрываются и даже более: между ними есть неиспользуемые промежутки. Такой прием реализуем в случае, если физический сигнал обладает широким спектром, а передаваемый -ограниченным и значительно меньшим спектром. Частотное мультиплексирование сильно похоже на выделенную линию, хотя при этом физическая линия распределена между несколькими абонентами, но диапазон частот закреплен. Теоретически коллизий данный алгоритм избегает.
В следующих алгоритмах сделаем попытку отойти от выделенных каналов еще дальше.
Есть еще термин коммутация. При мультиплексировании мы рассматриваем ситуацию, в которой находятся несколько желающих передать данные, при этом они имеют один канал связи. Сейчас мы будем говорить о ситуации, в которой есть несколько желающих и несколько каналов связи.
Различают следующие виды коммутации: коммутация каналов, коммутация пакетов. При коммутации каналов передача данных происходит следующим образом: если некоторый узел желает передать данные, то ему временно отдается в распоряжение канал связи. То есть образуется как будто выделенный канал на то время, пока узел не освободит его. В другое время этот же канал связи может быть передан в пользование другому абоненту. Обычные телефонные линии связи – пример коммутации каналов. Недостаток такого распределения каналов – недостаточно эффективное использование линий связи. Так, если, разговаривая с кем-то по телефону, вы молчите, обдумывая ответ, то выделенный вам канал связи простаивает.
Наиболее эффективное использование каналов связи получается при коммутации пакетов. При этом передаваемые данные разных отправителей оформляются в пакеты ( на одни данные много пакетов!), и эти пакеты передаются друг за другом, занимая канал связи на небольшое время, максимально используя возникающие свободные промежутки.
Transmission Control Protocol/Internet Protocol (TCP/IP) - это промышленный стандарт стека протоколов, разработанный для глобальных сетей.
Стандарты TCP/IP опубликованы в серии документов, названных Request for Comment (RFC). Документы RFC описывают внутреннюю работу сети Internet. Некоторые RFC описывают сетевые сервисы или протоколы и их реализацию, в то время как другие обобщают условия применения. Стандарты TCP/IP всегда публикуются в виде документов RFC, но не все RFC определяют стандарты.
Стек был разработан по инициативе Министерства обороны США (Department of Defence, DoD) в конце 70-х годов прошлого столетия для связи экспериментальной сети ARPAnet с другими подчиненными сетями. Стек представляет собой набор общих протоколов для разнородной вычислительной среды. Сеть ARPA поддерживала разработчиков и исследователей в военных областях. В сети ARPA связь между двумя компьютерами осуществлялась с использованием протокола Internet Protocol (IP), который и по сей день является одним из основных в стеке TCP/IP и фигурирует в названии стека.
Большой вклад в развитие стека TCP/IP внес университет Беркли, реализовав протоколы стека в своей версии ОС UNIX. Широкое распространение ОС UNIX привело и к широкому распространению протокола IP и других протоколов стека. В основном на этом же стеке работает всемирная информационная сеть Internet, чье подразделение Internet Engineering Task Force (IETF) вносит основной вклад в совершенствование стандартов стека, публикуемых в форме спецификаций RFC.
Итак, лидирующая роль стека TCP/IP объясняется следующими его свойствами:
Так как стек TCP/IP был разработан до появления модели взаимодействия открытых систем ISO/OSI, то, хотя он также имеет многоуровневую структуру, соответствие уровней стека TCP/IP уровням модели OSI достаточно условно.
Структура протоколов TCP/IP и его соотношение с моделью OSI приведены ниже.
Таблица 2.1 - Стек TCP/IP
Самый нижний уровень соответствует физическому и канальному уровням модели OSI. Этот уровень в протоколах TCP/IP не регламентируется, но поддерживает все популярные стандарты физического и канального уровня: для локальных сетей это – Ethernet, Token Ring, FDDI, Fast Ethernet, 100VG-AnyLAN, для глобальных сетей - протоколы соединений "точка-точка" SLIP и PPP, протоколы территориальных сетей с коммутацией пакетов X.25, frame relay. Разработана также специальная спецификация, определяющая использование технологии ATM в качестве транспорта канального уровня. Обычно при появлении новой технологии локальных или глобальных сетей она быстро включается в стек TCP/IP за счет разработки соответствующего RFC, определяющего метод инкапсуляции пакетов IP в ее кадры.
Следующий уровень - это уровень межсетевого взаимодействия, который занимается передачей пакетов с использованием различных транспортных технологий локальных сетей, территориальных сетей, линий специальной связи и т. п.
В качестве основного протокола сетевого уровня (в терминах модели OSI) в стеке используется протокол IP, который изначально проектировался как протокол передачи пакетов в составных сетях, состоящих из большого количества локальных сетей, объединенных как локальными, так и глобальными связями. Поэтому протокол IP хорошо работает в сетях со сложной топологией, рационально используя наличие в них подсистем и экономно расходуя пропускную способность низкоскоростных линий связи. Протокол IP является дейтаграммным протоколом, то есть он не гарантирует доставку пакетов до узла назначения, но старается это сделать.
К уровню межсетевого взаимодействия относятся и все протоколы, связанные с составлением и модификацией таблиц маршрутизации, такие как протоколы сбора маршрутной информации RIP (Routing Internet Protocol) и OSPF (Open Shortest Path First), а также протокол межсетевых управляющих сообщений ICMP (Internet Control Message Protocol). Последний протокол предназначен для обмена информацией об ошибках между маршрутизаторами сети и узлом - источником пакета. С помощью специальных пакетов ICMP сообщается о невозможности доставки пакета, о превышении времени жизни или продолжительности сборки пакета из фрагментов, об аномальных величинах параметров, об изменении маршрута пересылки и типа обслуживания, о состоянии системы и т.п. О маршрутизаторах подробно будет рассказано позже.
Следующий уровень называется основным. На этом уровне функционируют протокол управления передачей TCP (Transmission Control Protocol) и протокол дейтаграмм пользователя UDP (User Datagram Protocol). Протокол TCP обеспечивает надежную передачу сообщений между удаленными прикладными процессами за счет образования виртуальных соединений. Протокол UDP обеспечивает передачу прикладных пакетов дейтаграммным способом, как и IP, и выполняет только функции связующего звена между сетевым протоколом и многочисленными прикладными процессами. В стеке протоколов TCP/IP протокол TCP (Transmission Control Protocol) работает так же, как и протокол UDP, на транспортном уровне. Он обеспечивает надежную транспортировку данных между прикладными процессами путем установления логического соединения.
Наконец, на самом верху мы видим прикладные протоколы, базирующиеся на TCP/IP, о которых будет рассказано позже.