Обычно анализ стеков коммуникационных протоколов начинают — и не без основания — с рассмотрения семиуровневой модели взаимодействия открытых систем (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 — не что иное, как протокол предоставления услуг.
Например, канальный уровень системы А (см. Рисунок 1) является пользователем услуг физического уровня, провайдером услуг для сетевого уровня этой системы, а кроме того, обменивается информацией с канальным уровнем системы В.
Каждый уровень модели 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) выполняет свободную от ошибок, ориентированную на работу с со-общениями сквозную передачу, причем он обязан поддерживать эту функцию независимо от надежности нижележащего уровня. Особенно ненадежным нижележащий уровень оказывается при пакетной передаче без установления соединения. В этом случае транспортный уровень должен быть достаточно сложным, чтобы компенсировать слабые стороны нижележащего уровня. В пакетной сети с установлением соединения благодаря ее большей надежности транспортный уровень может быть менее сложным. Наконец, сервис нижележащего уровня может быть очень устойчив, например, при соединениях с коммутацией каналов и надежным протоколом канального уровня. В этом случае транспортному уровню не нужно ничего предпринимать, чтобы гарантировать стабильно высокое качество передачи. Таким образом, сложность транспортного уровня обратно пропорциональна надежности нижележащих уровней. Для решения своей главной задачи — свободной от ошибок доставки сообщений — транспортный уровень обеспечивает выполнение функций адресации, установления и разрыва соединения, назначения данным приоритета, мониторинга и коррекции ошибок, управления потоком данных, восстановления после сбоев и мультиплексирования.
Три оставшихся уровня будут рассмотрены в следующем выпуске рубрики.
Игорь Иванцов — менеджер отдела «Инструменты и приборы для монтажа и обслуживания телекоммуникационных систем» компании «СвязьКомплект». С ним можно связаться по тел. (095) 362-7787, по адресам: info@skomplekt.com, www.skomplekt.com.