Взаимодействие между уровнями
Модель OSI определяет схему обмена данными между сетевыми узлами, но сама не является способом такого обмена. Обмен данными становится возможным благодаря протоколам.
Протокол – это формальный набор правил и соглашений, регламентирующий обмен информацией между узлами по сети. Он реализует функции одного или нескольких уровней OSI.
Существует большое количество протоколов обмена данными – протоколы локальных и глобальных сетей, протоколы маршрутизации, сетевые протоколы. Протоколы локальных сетей работают на физическом и канальном уровнях модели OSI и определяют правила обмена данными по различным каналам связи, используемым в локальных сетях. Протоколы глобальных сетей определяют правила обмена данными по различным каналам связи глобальных сетей. Протоколы маршрутизации – это протоколы, которые работают на сетевом уровне модели OSI и позволяют определять наилучший маршрут передачи данных между узлами. К сетевым протоколам относятся различные протоколы, работающие на сетевом уровне и выше.
Согласно модели OSI, каждый уровень узла, который посылает информацию, логически (по горизонтали) взаимодействует с аналогичным уровнем узла, который ее принимает в соответствии с правилами того или иного протокола. Каждому уровню «кажется», что он непосредственно взаимодействует с таким же уровнем другого узла. Это позволяет взаимодействовать Web-браузеру и Web-серверу, почтовому клиенту и почтовому серверу и т.д.
Однако физическое соединение устройств выполняется только на физическом уровне модели OSI, следовательно, чтобы данные были переданы по сети другому устройству, они должны «спуститься» с уровня приложений на физический уровень внутри передающего узла. Когда данные будут переданы по каналу связи, физический уровень устройства-получателя извлечет их из среды передачи и передаст вышележащему уровню. Таким образом, реальное взаимодействие одноименных уровней происходит по вертикали посредством взаимодействия с соседними уровнями (нижележащим и вышележащим) своего стека протоколов.
Стек протоколов – совокупность протоколов разных уровней. Наиболее известным является стек протоколов TCP/IP.
Правила и процедуры, которые отвечают за взаимодействие между соседними уровнями, называются интерфейсами.
Данные и служебная информация передается между уровнями в обоих направлениях. Существуют хорошо известные интерфейсы между уровнями, что позволяет им взаимодействовать друг с другом, не задумываясь о реализации.
Рис. 2.3 Взаимодействие между уровнями
Инкапсуляция данных
Взаимодействие между одноименными уровнями модели OSI осуществляется логически с использованием правил того или иного протокола. Это взаимодействие происходит в форме передачи сообщений, которые называются блоками данных протокола (protocol data units, PDU). Каждый PDU имеет специальный формат, определенный в соответствии с функциями и требованиями конкретного протокола.
Для организации передачи данных, протокол уровня N должен передать PDU на нижележащий уровень N-1. Протокол уровня N-1 предоставит сервис вышележащему уровню N, т.е. он примет PDU протокола уровня N, который станет для него данными,обработает их и передает дальше на уровень N-2. На уровне N-1 PDU протокола уровня N будет называться блоком данных сервиса (service data unit, SDU). Чтобы обеспечить сервис, протокол уровня N-1 помещает SDU, полученный от уровня N, в поле данных своего PDU и добавляет служебную информацию (заголовки и/или концевики), необходимую протоколу для реализации своей функции. Этот процесс называется инкапсуляцией данных.
Инкапсуляция – это процесс, при котором к данным добавляется служебная информация определенного протокола (уровня) перед отправкой в сеть.
Для обозначения PDU некоторых протоколов используются специальные термины. Сегментом (segment) называется PDU протокола TCP, который работает на транспортном уровне модели OSI и стека TCP/IP. Пакетом (packet) или IP-дейтаграммой называют блок данных протокола IP, работающего на сетевом уровне модели OSI и уровня Интернет стека TCP/IP. На канальном уровне модели OSI и уровне доступа к сети стека TCP/IP PDU называются кадрами (frame).
Рассмотрим процесс инкапсуляции при передаче данных между узлами, показанный на рисунке 2.4. Когда приложение на компьютере А отправляет сообщение приложению на компьютер В, то оно передает его на уровень приложений компьютера А. Затем с уровня приложений, данные передаются на уровень представлений, который отправляет их ниже на сеансовый уровень. Сеансовый уровень пересылает данные транспортному уровню, который в свою очередь формирует сегмент путем добавления служебной информации, и передает его сетевому уровню модели OSI. Сетевой уровень принимает сегмент и добавляет свой заголовок, образуя пакет, и передает его нижележащему уровню. Канальный уровень в свою очередь создает кадр путем добавления заголовка канального уровня и концевика, затем передает его физическому уровню. На физическом уровне поток битов преобразуется в электрические, электромагнитные или оптические сигналы, которые отправляются через среду передачи компьютеру В.
Физический уровень компьютера В принимает сигналы из физической среды, извлекает из них информацию в виде потока битов. Далее из этого потока формируется кадр, который передается выше на канальный уровень. Канальный уровень принимает кадр и анализирует служебную информацию, предназначенную для него. В случае отсутствия каких-либо ошибок, канальный уровень извлекает из сообщения данные, предназначенные для вышележащего сетевого уровня, и передает их ему. Этот процесс повторяется на каждом вышележащем уровне вплоть до уровня приложений. Уровень приложений компьютера В передает информацию приложению-приемнику и процесс обмена данными завершается. Другими словами, достигнув узла-получателя, сообщение проходит через все уровни в обратном порядке (от 1-го до 7-го), последовательно преобразовываясь на каждом из них с использованием соответствующей служебной информации, пока не достигнет приложения-приемника. Этот процесс называется декапсуляцией данных.
Рис. 2.4 Обмен данными между сетевыми узлами согласно модели OSI
Описание уровней модели OSI
Уровень приложений(Application layer) — это седьмой, самый близкий к пользователю уровень модели OSI. Он отличается от других уровней тем, что не предоставляет услуги ни одному другому уровню модели OSI, а только обслуживает прикладные процессы, находящиеся вне пределов модели OSI. Примерами могут служить Web-браузер, который является прикладным процессом, запущенным на компьютере и использующим сервисы, предоставляемые протоколом прикладного уровня HTTP (Hypertext Transfer Protocol); почтовый клиент, использующий сервисы протокола POP3 (Post Office Protocol Version 3).
Уровень приложений идентифицирует и устанавливает доступность предполагаемых партнеров для связи, синхронизирует совместно работающие прикладные программы, а также устанавливает договоренность о процедурах восстановления после ошибок и контроля целостности данных. Уровень приложений также определяет степень достаточности ресурсов для осуществления предполагаемой связи.
Уровень представлений(Presentation layer) – шестой уровень модели OSI. Он отвечает за то, чтобы информация, посылаемая уровнем приложений одной системы, могла быть прочитана уровнем приложений другой системы. При необходимости уровень представлений преобразует форматы данных путем использования общего формата представления информации. Также он может выполнять сжатие (распаковку) данных с целью повышения пропускной способности сети. Помимо этого на уровне представлений может выполняться шифрование (дешифрование) данных, например, с использованием протокола SSL (Secure Sockets Layer). Однако шифрование данных может выполняться не только на 6 уровне модели OSI. Оно также выполняется и на более низких уровнях. Примером может служить технология IPSec. Следует отметить, что уровень представлений не всегда задействуется при организации сетевого взаимодействия, т.к. его функции могут быть реализованы в рамках уровня приложений или просто не требуются в данном конкретном случае.
Сеансовый уровень(Session layer) – пятый уровень модели OSI. Как следует из названия, он позволяет двум прикладным процессам устанавливать, управлять и завершать сеансы связи (сессии) друг с другом. Сеансовый уровень синхронизирует диалог между прикладными процессами и отвечает за восстановление аварийно прерванных сеансов связи. Технологии сеансового уровня часто реализованы в виде набора программных средств, называемых application program interfaces (API, прикладной программный интерфейс). API предоставляют набор сервисов, позволяющих программистам разрабатывать сетевые приложения, не заботясь о транспортировке, адресации и доставке данных. Эти функции выполняют нижележащие уровни модели OSI.
Транспортный уровень(Transport layer) – четвертый уровень модели OSI. Современные операционные системы являются многозадачными, поэтому одновременно пользователь может работать с несколькими приложениями, которые отправляют и получают данные по сети. Транспортный уровень является связующим звеном между уровнями приложений, представлений и сеансовым уровнем, которые имеют дело только с прикладными процессами и нижележащими уровнями, которые занимаются непосредственно доставкой данных. Он изолирует верхние уровни модели OSI от проблем связанных с доставкой любой информации и отвечает за надежную передачу данных между взаимодействующими приложениями разных компьютеров за счет использования средств адресации и мультиплексирования/демультиплесирования (одновременной передачи данных от разных прикладных процессов по одному соединению и последующей доставки их соответствующим приложениям). Также транспортный уровень на стороне отправителя разбивает данные, полученные от вышележащих уровней на блоки небольшого размера, называемые сегментами, и доставляет их получателю в нужной последовательности. Этот процесс называется сегментацией. На транспортном уровне получателя эти сегменты собираются в исходный поток данных.
Протоколы транспортного уровня могут предоставлять сервисы с установлением соединения (connection-oriented) и без установления соединения (connectionless). Протоколы с установлением соединения отвечают за установку, поддержание и завершение соединения между отправителем и получателем. Они могут выполнять диагностику и исправление ошибок, возникающих при передаче информации, а также предоставлять механизмы управления потоком данных (flow control). Примером протоколов такого типа является протокол TCP (Transmission Control Protocol, протокол управления передачей). Протоколы без установления соединения не выполняют установку соединения перед передачей данных и не обеспечивают надежную доставку. Протокол UDP (User Datagram Protocol, протокол дейтаграмм пользователей) является примером протокола транспортного уровня без установления соединения.
Сетевой уровень(Network layer) – третий уровень модели OSI. Он является одним из самых важных уровней модели OSI и отвечает за соединение узлов, расположенных в географически удаленных друг от друга сетях. Сетевой уровень выполняет две основные функции – логическую адресацию и маршрутизацию. Каждому устройству, подключенному к сети, назначается логический адрес, который также называют адресом 3 уровня. Он используется для маршрутизации пакетов. Маршрутизация – это процесс определения наилучшего маршрута передачи информации от отправителя к получателю, когда отправитель и получатель находятся в разных сетях, соединенных произвольным образом. Также на сетевом уровне решаются задачи управления потоком данных и диагностики ошибок передачи. Сетевой уровень выполняет инкапсуляцию сегментов, полученных от транспортного уровня в пакеты (также называемые дейтаграммами). Основным протоколом сетевого уровня является протокол IP (Internet Protocol).
Канальный уровень(Data link layer) – второй уровень модели OSI. Он обеспечивает сетевым узлам доступ к среде передачи и решает вопросы физической адресации (в противоположность сетевой или логической адресации), обнаружения и коррекции ошибок, упорядоченной доставки кадров, логической топологии. Канальный уровень завершает процесс инкапсуляции и помещает дейтаграммы (пакеты), полученные с сетевого уровня в кадры. Примерами протоколов канального уровня могут служить семейство протоколов Ethernet IEEE 802.3, протоколы беспроводных сетей IEEE 802.11.
Физический уровень(Physical layer) – самый нижний уровень модели OSI. Он выполняет передачу потока битов, полученных от канального уровня, через физическую среду в виде электрических, оптических или радиосигналов. Физический уровень отвечает за активацию, поддержание и деактивизацию физического канала между конечными системами. Спецификации физического уровня детально описывают механические, оптические, электрические, функциональные интерфейсы со средой передачи: напряжения, частоты, длины волн, разъемы, число и функциональность контактов, схемы кодирования сигналов и т.д. Также физический уровень рассматривает вопросы, связанные с физической топологией сетей.
Таблица 2.1 Сравнительная таблица уровней модели OSI
Уровень | Тип обрабатываемых данных | Функции | |
Уровень приложений | Пользовательские данные | Предоставление сервисов для сетевых приложений | |
Уровень представлений | Пользовательские данные | Общий формат представления данных, сжатие и шифрование | |
Сеансовый уровень | Пользовательские данные | Установление, управление и завершение сессий между приложениями | |
Транспортный уровень | Сегменты/дейтаграммы | Адресация процессов, сегментация/ повторная сборка данных, управление потоком, надежная доставка | |
Сетевой уровень | Пакеты/дейтаграммы | Передача сообщений между удаленными устройствами, выбор наилучшего маршрута, логическая адресация | |
Канальный уровень | Кадры | Доступ к среде передачи, передача сообщений между локальными устройствами, физическая адресация | |
Физический уровень | Биты | Передача электрических и оптических сигналов между устройствами |
Следует отметить, что в модели OSI отдельный протокол не всегда соответствует одному из семи уровней. Иногда протокол соответствует более чем одному уровню модели OSI. Так, например, протокол ARP (Address Resolution Protocol), преобразующий сетевые адреса IPv4 (уровень 3 модели OSI) в физические МАС-адреса (уровень 2 модели OSI) можно назвать протоколом «уровня 2.5». Также несколько протоколов могут быть реализованы в рамках одного уровня, как, например, протоколы маршрутизации уровня 3 RIP (Routing Information Protocol), OSPF (Open Shortest Path First) и др.
В некоторых случаях PDU протокола уровня N может инкапсулироваться в PDU протокола уровня N+1, что характерно, в частности, для виртуальных частных сетей (VPN). Во многих реализациях VPN протоколы канального (Ethernet) или сетевого уровня (IP) инкапсулируются в протоколы транспортного уровня (чаще всего UDP). При передаче сообщений протокол маршрутизации 3 уровня RIP использует протокол транспортного уровня UDP.