Обычно анализ стеков коммуникационных протоколов начинают - и не без основания - с рассмотрения семиуровневой модели взаимодействия открытых систем (Open System Interconnection, OSI), которую Международная организация по стандартизации ISO разработала совместно с сектором телекоммуникаций Международного союза электросвязи ITU-T. Конечно, современные принципы построения сетей связи можно изучать по стекам протоколов SNA от IBM или TCP/IP, появившихся раньше модели OSI. Однако при всей своей эффективности применительно к решаемым ими задачам указанные сетевые архитектуры характеризуются существенно большей сложностью по сравнению с моделью OSI. Поэтому модель OSI по-прежнему остается прекрасным пособием для изучения основ архитектуры телекоммуникационных сетей, хотя и не получила того распространения, на которое надеялись ее создатели.
Главная особенность модели OSI - в ее открытости. Это означает, что соответствующий стандартизованный набор протоколов гарантирует возможность взаимодействия оборудования различных производителей, что, надо сказать, жизненно необходимо не только для производителей оборудования и программного обеспечения, но и для операторов связи, провайдеров услуг и пользователей, поскольку резко упрощает процедуру оснащения сетей.
Модель OSI была разработана в 1970-е гг. с учетом опыта, накопленного при создании компьютерных сетей, в основном глобальных. Поэтому областью ее применения, строго говоря, являются пакетные сети передачи данных.
Любопытно, что глобальные сети передачи данных возникли раньше, чем локальные. Это объясняется историей развития ЭВМ, первый этап которой связан с мэйнфреймами. Эти огромные машины были очень дорогими и потому обслуживали множество пользователей, доступ которым предоставлялся только на определенное время. Для организации подобного доступа нужны были каналы связи большой протяженности. На первом этапе в роли таких средств передачи данных выступали аналоговые модемы, работавшие по каналам тональной частоты (ТЧ) аналоговых систем передачи (АСП), а в качестве первых протоколов передачи данных служили модемные протоколы физического уровня, которые ITU-T стандартизовала в серии рекомендаций типа V.
Поскольку канал ТЧ АСП очень узок - он имеет ширину от 300 до 3200 Гц, помимо многопозиционных методов модуляции для передачи данных требовались дополнительные эффективные алгоритмы использования полосы частот, в частности алгоритмы сжатия сигналов данных. Ключевой проблемой при модемной передаче данных по каналам АСП оказалась проблема ошибок, по-скольку каналы ТЧ изначально были рассчитаны только на передачу телефонных сигналов. Поэтому третья группа протоколов серии V содержит, кроме прочего, протоколы коррекции ошибок.
Надо сказать, что в отношении коррекции ошибок системы связи делятся на системы с повторной передачей и системы без повторной передачи ошибочных элементов данных. В системах передачи по электропроводящим кабелям, подверженных воздействию внешних помех и содержащих большое число промежуточных усилителей или регенераторов, вероятность появления ошибок в сигналах данных очень высока. Поэтому каналы этих систем работают обычно в режиме повторной передачи поврежденных фрагментов сообщения. Естественно, что такой способ значительно снижает информационную эффективность каналов.
Ситуация стала совсем иной с переходом на оптические кабели, имеющие высокую защищенность от внешних помех и содержащие малое число промежуточных усилителей и регенераторов. Благодаря этому существенно уменьшилось число ошибок, так что в результате оказалось возможным отказаться от коррекции ошибок на физическом уровне и при необходимости выполнять ее на более высоких протокольных уровнях.
Активное развитие локальных сетей началось с появлением мини-ЭВМ, затем микро-ЭВМ и, наконец, персональных компьютеров. Таким образом, если при телефонной передаче сначала создавались местные сети и только потом, по мере технического прогресса, междугородные, то при передаче данных сети эволюционировали от глобальных к локальным.
В основу создания семиуровневой модели OSI были положены следующие принципы:
Понятно, что успешное решение подобной задачи требует не только большого опыта и знаний, но и - пожалуй, не в меньшей степени - искусства.
Каждый уровень модели OSI взаимодействует с тремя другими: предоставляет услуги соседнему вышележащему уровню, пользуется услугами соседнего нижележащего уровня и обращается к аналогичному уровню (peer layer) другой компьютерной системы.
Говоря более формальным языком, архитектура услуг содержит три базовых элемента: пользователя услуги (Service User), провайдера услуги (Service Provider) и точку доступа к услуге (Service Access Point, SAP).
В этом контексте пользователь услуги является уровнем модели OSI, получающим услуги от соседнего уровня модели OSI. Провайдер услуги - это уровень модели OSI, предоставляющий услуги. Наконец, SAP - элемент модели OSI, через который один уровень OSI может запрашивать услугу у другого уровня модели OSI. Проще говоря, SAP - не что иное, как протокол предоставления услуг.
Например, канальный уровень системы А является пользователем услуг физического уровня, провайдером услуг для сетевого уровня этой системы, а кроме того, обменивается информацией с канальным уровнем системы В.
Каждый уровень модели OSI выполняет определенные функции, необходимые для правильного функционирования системы в целом. Перечислим сверху вниз семь уровней модели OSI и укажем их основные функции.
Прикладной уровень (Application Layer) предоставляет услуги непосредственно пользовательским прикладным программам. Он обеспечивает набор открытых и стандартных интерфейсов прикладного программирования (Application Programming Interface, API). Реализация прикладного уровня достаточно сложна, поскольку его услугами пользуется множество приложений. Примеры протоколов прикладного уровня OSI: распределенная служба каталогов в соответствии с рекомендацией Х.500 ITU-T и ее «облегченной» версией (Lightweight Directory Access Protocol, LDAP), а также удаленный вызов процедур (Remote Procedure Call, RPC). Последний представляет собой весьма эффективный способ распределения вычислительной мощности между клиентом и сервером.
Презентационный уровень (Presentation Layer) выполняет преобразование данных общего характера. Одна из услуг этого уровня - шифрование, которое обеспечивает информационную безопасность. В частности, в программном обеспечении серверов Web предусмотрены протоколы шифрования для защиты финансовой информации клиентов. Другим примером сервиса презентационного уровня может служить сжатие информации, что позволяет уменьшить объем данных, пересылаемых между двумя компьютерами. Так, многие реализации виртуальных частных сетей (Virtual Private Network, VPN) применяют протоколы туннелирования, когда пакет одного протокола помещается внутрь пакета другого. Механизм туннелирования требует добавления к передаваемым данным значительного количества служебной информации, которая хорошо поддается сжатию. Поэтому в VPN обычно предусматривается процедура сжатия информации.
Еще одной типовой операцией презентационного уровня информации является перекодирование, которое, впрочем, уступает по сложности операциям засекречивания и компрессии/декомпрессии. Пример перекодирования - взаимное преобразование кодов ASCII и EBCDIC, выполняемое в соответствии со специальными таблицами. Правда, столь простые алгоритмы перекодирования не всегда возможны. Поэтому Международная организация по стандартизации ISO разработала специальную программу абстрактной синтаксической нотации версии 1 (Abstract Syntax Notation, ASN.1), с помощью которой программы, работающие на разных машинах и написанные на разных языках программирования, могут обмениваться данными.
Сеансовый уровень (Session Layer) предоставляет дополнительные услуги транспортному уровню в сеансах с предварительным установлением соединения. Кроме управления диалогом важнейшими функциями этого уровня являются организация и завершение сеанса и синхронизация. В соединениях без предварительного установления соединения услуги сеансового уровня оказываются невостребованными.
Транспортный уровень (Transport Layer) выполняет свободную от ошибок, ориентированную на работу с сообщениями сквозную передачу, причем он обязан поддерживать эту функцию независимо от надежности нижележащего уровня. Особенно ненадежным нижележащий уровень оказывается при пакетной передаче без установления соединения. В этом случае транспортный уровень должен быть достаточно сложным, чтобы компенсировать слабые стороны нижележащего уровня. В пакетной сети с установлением соединения благодаря ее большей надежности транспортный уровень может быть менее сложным. Наконец, сервис нижележащего уровня может быть очень устойчив, например, при соединениях с коммутацией каналов и надежным протоколом канального уровня. В этом случае транспортному уровню не нужно ничего предпринимать, чтобы гарантировать стабильно высокое качество передачи. Таким образом, сложность транспортного уровня обратно пропорциональна надежности нижележащих уровней. Для решения своей главной задачи - свободной от ошибок доставки сообщений - транспортный уровень обеспечивает выполнение функций адресации, установления и разрыва соединения, назначения данным приоритета, мониторинга и коррекции ошибок, управления потоком данных, восстановления после сбоев и мультиплексирования.
Если признаки четырех верхних уровней модели OSI - прикладного, презентационного, сеансового и транспортного можно обнаружить в каждом оконечном устройстве, то три нижних уровня - сетевой, канальный и физический - присутствуют во всех промежуточных (транзитных) точках соединения между оконечными устройствами.
Поэтому уровни модели OSI могут быть разделены на две функционально различающиеся группы: верхних и нижних уровней. Первые - называемые также «сквозные» (end-end) - отвечают за работу приложений и выполняются только в виде программных продуктов, а вторые - «связные» (chained) - обеспечивают транспорт информации. Причем физический и канальный уровни содержат как программные, так и аппаратные компоненты.
Общая особенность трех нижних уровней состоит в том, что они способны поддерживать любой тип информации (включая служебную), формируемый четырьмя верхними уровнями. Иначе говоря, нижние уровни совершенно индифферентны к передаваемым ими данным и занимаются исключительно тем, чтобы доставить их из одной точки в другую.
Сетевой уровень (Network Layer) маршрутизирует блоки данных (пакеты или сообщения) через сложные составные сети. Для решения этой главной задачи в протоколе сетевого уровня должны быть определены структура адресов сетевого уровня, формат блоков данных, вид услуг (с предварительным установлением соединения или без него), которые он предоставляет вышележащему транспортному уровню. Протокол должен иметь встроенные механизмы запроса и обеспечения требуемого качества предоставляемых услуг, а также функции управления загруженностью канала связи.
От степени сложности сетевого уровня зависит простота реализации транспортного уровня. Если протокол сетевого уровня предусматривает предварительное установление соединения, то нет необходимости встраивать в транспортный уровень механизмы для упорядочивания блоков данных и контроля ошибок, а значит, он оказывается более простым.
Вместе с тем, сетевые протоколы с предварительным установлением соединения, в отличие от протоколов без установления соединения, должны включать описание процедур установления, обслуживания и завершения соединения. Однако эта сложность окупается за счет того, что предварительное установление соединения предоставляет более широкие возможности контроля за его качеством.
Тип применяемого сетевого протокола зависит от типа сетевого трафика. Сетевой трафик можно разделить на два вида: один чувствителен к ошибкам и толерантен к задержке, а второй чувствителен к задержке и толерантен к ошибкам. К трафику первого типа принадлежит практически весь трафик данных, а ко второму - весь речевой и видеотрафик.
В сетях с предварительным установлением соединения сетевые узлы перенаправляют сообщения в соответствии с номером виртуального соединения. Причем сообщения - за исключением тех, которые посылаются при настройке логического соединения, - не содержат информации о конечном пункте соединения.
В сетях без установления соединения каждый пакет содержит необходимую информацию о пункте его назначения. Решение о том, куда направить этот пакет дальше, принимает маршрутизатор. Процесс маршрутизации состоит из двух операций - построения таблицы маршрутизации и перенаправления отдельных пакетов.
Наибольшей популярностью сегодня пользуется Internet Protocol (IP) - это типичный протокол без предварительного установления соединения. Он используется в IP телефонах, различных шлюзах и другом сетевом оборудовании.
В условиях конвергенции трафика, когда пакеты протокола IP должны нести в одном потоке речь и данные (технология VoIP), самым серьезным его недостатком является отсутствие приоритезации трафика. Поэтому основные усилия по развитию протокола IP направлены на введение в него соответствующего механизма и придание ему свойств типичного протокола с предварительным установлением соединения, что позволит успешно транспортировать оба основных типа сетевого трафика. В качестве средства адаптации протокола IP к современным требованиям предлагается использовать метод многопротокольной коммутации меток (Multiprotocol Label Switching, MPLS).
Канальный уровень (Data Link Layer) должен обеспечить доставку данных без ошибок для сетевого уровня. Таким образом, его основная задача - выявление и устранение ошибок физического уровня. Информация на канальном уровне, в отличие от физического, передается в структурированном ви-де - кадрами. Способ исправления ошибок канальным уровнем зависит от типа физического канала. Прямое исправление основано на включении в кадр дополнительной информации. Этот метод обычно используется в каналах передачи с многочисленными ошибками (линии доступа абонентских сетей) или большой задержкой (спутниковые каналы). Некоторые современные протоколы канального уровня ошибки не исправляют, а только обнаруживают и отбрасывают поврежденные кадры. Ошибки устраняются посредством протоколов верхних уровней. Протоколы, использующие такой метод, рассчитаны на высококачественные физические каналы с малой вероятностью ошибок, к которым, в частности, относится волоконно-оптический кабель.
Канальный уровень должен предоставлять следующие услуги:
Необходимо отметить, что с улучшением качества физического уровня потребность во всех функциях канального уровня уменьшается. В этой ситуации разумно ограничиться контролем несвоевременной доставки кадров только на конечных узлах. Задача восстановления потерянных кадров может быть возложена на вышележащие уровни (например, транспортный).
Пожалуй, наиболее распространенным протоколом канального уровня является протокол прямого, или двухточечного, соединения (Point-to-Point Protocol, PPP). Этот протокол взаимодействия равноправных (peer-to-peer) систем предполагает использование полнодуплексного физического канала - выделенного или коммутируемого. Интересно, что с учетом новых реалий физического уровня в нем предусмотрена только проверка ошибок в соответствии с процедурой CRC, но не заложена их коррекция. Протокол РРР просто отбрасывает ошибочные кадры и не занимается упорядочиванием кадров, полагаясь на физический уровень.
Физический уровень (Physical Layer) выполняет передачу бит данных. Главное его отличие от остальных уровней модели OSI заключается в том, что только он одновременно как необходим, так и достаточен для обмена данными между двумя точками.
Физический уровень характеризуется несколькими важнейшими особенностями.
В качестве примеров популярных интерфейсов физического уровня укажем два интерфейса - интерфейс DTE-DCE и интерфейс DSU-CSU.