Эталонная модель OSI (за исключением физической
среды) показана на рисунке. Эта модель основана на разработке Международной
организации по стандартизации (International Organization for Standardization, ISO) и является первым шагом к
международной стандартизации протоколов, используемых на различных уровнях (Day и Zimmerman, 1983). Затем она
была пересмотрена в 1995 году (Day, 1995). Называется
эта структура эталонной моделью взаимодействия открытых систем ISO (ISO OSI (Open System Interconnection)
Reference Model), поскольку
она связывает открытые системы, то есть системы, открытые для связи с другими
системами. Для краткости мы будем называть эту модель просто «модель OSI». Модель OSI имеет семь уровней. Появление
именно такой структуры было обусловлено следующими соображениями. 1. Уровень
должен создаваться по мере необходимости отдельного уровня абстракции. 2. Каждый
уровень должен выполнять строго определенную функцию. 3. Выбор
функций для каждого уровня должен осуществляться с учетом создания стандартизированных
международных протоколов. 4. Границы
между уровнями должны выбираться так, чтобы поток данных между интерфейсами был
минимальным. 5. Количество
уровней должно быть достаточно большим, чтобы различные функции не объединялись
в одном уровне без необходимости, но не слишком высоким, чтобы архитектура не
становилась громоздкой. Далее мы обсудим каждый уровень модели,
начиная с самого нижнего. Обратите внимание: модель OSI не является сетевой
архитектурой, поскольку она не описывает службы и протоколы, используемые на
каждом уровне. Она просто определяет, что должен делать каждый уровень. Тем не
менее ISO также разработала стандарты для каждого уровня, хотя эти стандарты не
входят в саму эталонную модель. Каждый из них был опубликован как отдельный международный
стандарт Физический уровень занимается
реальной передачей необработанных битов по каналу связи. При разработке сети
необходимо убедиться, что когда одна сторона передает единицу, то принимающая
сторона получает также единицу, а не ноль. Принципиальными вопросами здесь
являются следующие: какое напряжение долж йо использоваться для отображения единицы, а
какое – для нуля; сколько микросекунд длится бит; может ли передача
производиться одновременно в двух направлениях; как устанавливается начальная
связь и как она прекращается, когда обе стороны закончили свои задачи;
из какого количества проводов должен состоять кабель и какова функция каждого
провода. Вопросы разработки в основном связаны с механическими,
электрическими и процедурными интерфейсами, а также с физическим носителем,
лежащим ниже физического уровня. Основная задача уровня передачи данных – быть способным передавать «сырые» данные физического уровня по надежной линии связи, свободной от необ наруженных ошибок с точки зрения вышестоящего сетевого уровня. Уровень выполняет эту задачу при помощи разбиения входных данных на кадры, обычный размер которых колеблется от нескольких сотен до нескольких тысяч байт. Кадры данных передаются последовательно с обработкой кадров подтверждения, отсылаемых обратно получателем. Еще одна проблема, возникающая на уровне передачи данных (а также и на большей части более высоких уровней), – как не допустить ситуации, когда быстрый передатчик заваливает приемник данными. Должен быть предусмотрен некий механизм регуляции, который информировал бы передатчик о наличии свободного места в буфере приемника на текущий момент. Часто подобное управление объединяется с механизмом обработки ошибок. В широковещательных сетях существует еще одна проблема уровня передачи данных: как управлять доступом к совместно используемому каналу. Эта проблема разрешается введением специального дополнительного подуровня уровня передачи данных – подуровня доступа к носителю. Сетевой
уровень занимается управлением операциями подсети. Важнейшим моментом здесь
является определение маршрутов пересылки пакетов от источника к пункту
назначения. Маршруты могут быть жестко заданы в виде таблиц и редко меняться.
Кроме того, они могут задаваться в начале каждого соединения, например
терминальной сессии. Наконец, они могут быть в высокой степени динамическими,
то есть вычисляемыми заново для каждого пакета с учетом текущей загруженности
сети. Если
в подсети одновременно присутствует слишком большое количество пакетов, то они
могут закрыть дорогу друг другу, образуя заторы в узких местах. Недопущение
подобной закупорки также является задачей сетевого уровня. В более общем смысле
сетевой уровень занимается предоставлением определенного уровня сервиса (это
касается задержек, времени передачи, вопросов синхронизации). При
путешествии пакета из одной сети в другую также может возникнуть ряд проблем.
Так, способ адресации, применяемый в одной сети, может отличаться от принятого
в другой. Сеть может вообще отказаться принимать пакеты изза
того, что они слишком большого размера. Также могут различаться протоколы, и т.
д. Именно сетевой уровень должен разрешать все эти проблемы, позволяя
объединять разнородные сети. В широковещательных сетях проблема маршрутизации
очень проста, поэтому в них сетевой уровень очень примитивный или вообще
отсутствует. Основная
функция транспортного уровня – принять данные от сеансового уровня, разбить их
при необходимости на небольшие части, передать их сетевому уровню и
гарантировать, что эти части в правильном виде прибудут по назначению. Кроме
того, все это должно быть сделано эффективно и таким образом, чтобы изолировать
более высокие уровни от каких-либо изменений в аппаратной технологии. Транспортный
уровень также определяет тип сервиса, предоставляемого сеансовому уровню и, в
конечном счете, пользователям сети. Наиболее популярной разновидностью
транспортного соединения является защищенный от ошибок канал между двумя
узлами, поставляющий сообщения или байты в том порядке, в каком они были
отправлены. Однако транспортный уровень может предоставлять и другие типы
сервисов, например пересылку отдельных сообщений без гарантии соблюдения
порядка их доставки или одновременную отправку сообщения различным адресатам по
принципу широковещания. Тип сервиса определяется при установке соединения.
(Строго говоря, полностью защищенный от ошибок канал создать невозможно.
Говорят лишь о таком канале, уровень ошибок в котором достаточно мал, чтобы ими
можно было пренебречь на практике.) Транспортный
уровень является настоящим сквозным уровнем, то есть доставляющим сообщения от
источника адресату. Другими словами, программа на машинеисточнике
поддерживает связь с подобной программой на другой машине при помощи заголовков
сообщений и управляющих сообщений. На более низких уровнях для поддержки этого
соединения устанавливаются соединения между всеми соседними машинами, через
которые проходит маршрут сообщений. Различие между уровнями с 1го по 3й,
действующими по принципу звеньев цепи, и уровнями с 4го по 7й, являющимися
сквозными, проиллюстрировано на рис. 1.16. Сеансовый
уровень позволяет пользователям различных компьютеров устанавливать сеансы
связи друг с другом. При этом предоставляются различные типы сервисов, среди
которых управление диалогом (отслеживание очередности передачи данных),
управление маркерами (предотвращение одновременного выполнения критичной
операции несколькими системами) и синхронизация (установка служебных меток
внутри длинных сообщений, позволяющих после устранения ошибки продолжить
передачу с того места, на котором она оборвалась). В
отличие от более низких уровней, задача которых – достоверная передача битов и
байтов, уровень представления занимается по большей части синтаксисом и
семантикой передаваемой информации. Чтобы было возможно общение компьютеров с
различными представлениями данных, необходимо преобразовывать форматы данных
друг в друга, передавая их по сети в неком
стандартизированном виде. Уровень представления занимается этими
преобразованиями, предоставляя возможность определения и изменения структур
данных более высокого уровня (например, записей баз данных). Прикладной
уровень содержит набор популярных протоколов, необходимых пользователям. Одним
из наиболее распространенных является протокол передачи гипертекста HTTP (HyperText Transfer Protocol), который составляет основу технологии Всемирной
Паутины. Когда браузер запрашивает вебстраницу, он
передает ее имя (адрес) и рассчитывает на то, что сервер будет использовать
HTTP. Сервер в ответ отсылает страницу. Другие прикладные протоколы
используются для передачи файлов, электронной почты, сетевых рассылок. Рассмотрим
теперь эталонную модель, использовавшуюся в компьютерной сети ARPANET, которая
является бабушкой нынешних сетей, а также в ее наследнице, всемирной сети
Интернет. Хотя краткую историю сети ARPANET мы рассмотрим чуть позднее,
некоторые ключевые моменты ее следует отметить прямо сейчас. ARPANET была
исследовательской сетью, финансируемой Министерством обороны США. В конце
концов она объединила сотни университетов и правительственных зданий при помощи
выделенных телефонных линий. Когда впоследствии появились спутниковые сети и
радиосети, возникли большие проблемы при объединении с ними других сетей с
помощью имеющихся протоколов. Понадобилась новая эталонная архитектура. Таким
образом, возможность объединять различные сети в единое целое являлась одной из
главных целей с самого начала. Позднее эта архитектура получила название
эталонной модели TCP/IP в соответствии со своими двумя основными протоколами.
Первое ее описание встречается в книге Cerf и Kahn (1974). Из более поздних описаний можно выделить
книгу, написанную Leiner и др. в 1985 году.
Конструктивные особенности модели обсуждаются в издании Clark,
1988. Поскольку
Министерство обороны беспокоилось, что ценные хосты, маршрутизаторы и
межсетевые шлюзы могут быть мгновенно уничтожены, другая важная задача состояла
в том, чтобы добиться способности сети сохранять работоспособность при
возможных потерях подсетевого оборудования, так,
чтобы при этом связь не прерывалась. Другими словами, Министерство обороны
требовало, чтобы соединение не прерывалось, пока функционируют приемная и
передающая машины, даже если некоторые промежуточные машины или линии связи
внезапно вышли из строя. Кроме того, от архитектуры нужна была определенная
гибкость, поскольку предполагалось использовать приложения с различными
требованиями, от переноса файлов до передачи речи в реальном времени. Все
эти требования обусловили выбор модели сети с коммутацией пакетов, в основе
которой лежал не имеющий соединений межсетевой уровень. Этот уровень,
называемый интернет-уровнем или межсетевым уровнем, является основой всей
архитектуры. Его задача заключается в обеспечении возможности для каждого хоста
посылать в любую сеть пакеты, которые будут независимо двигаться к пункту
назначения (например, в другой сети). Они могут прибывать не в том порядке, в
котором были отправлены. Если требуется соблюдение порядка отправления, эту
задачу выполняют более верхние уровни. Обратите внимание, что ело во «интернет»
здесь используется в своем первоначальном смысле несмотря на то, что этот уровень
присутствует в сети Интернет. Здесь
можно увидеть аналогию с почтовой системой. Человек может бросить несколько
международных писем в почтовый ящик в одной стране, и если повезет, большая
часть из них будет доставлена по правильным адресам в других странах. Вероятно,
письма по дороге пройдут через несколько международных почтовых шлюзов, однако
это останется тайной для корреспондентов. В каждой стране (то есть в каждой
сети) могут быть свои марки, свои предпочитаемые размеры конвертов и правила
доставки, незаметные для пользователей почтовой службы. Межсетевой
уровень определяет официальный формат пакета и протокол, называемый IP (Internet Protocol). Задачей
межсетевого протокола является доставка IPпакетов к
пунктам назначения. Основными аспектами здесь являются выбор маршрута пакета и
недопущение закупорки транспортных артерий. Поэтому можно утверждать, что
межсетевой уровень модели TCP/IP функционально близок сетевому уровню модели
OSI. Это соответствие показано на рис. Уровень,
расположенный над межсетевым уровнем модели TCP/IP, как правило, называют
транспортным. Он создан для того, чтобы одноранговые
сущности на приемных и передающих хостах могли поддерживать связь, подобно
транспортному уровню модели OSI. На этом уровне должны быть описаны два
сквозных протокола. Первый, TCP (Transmission Control Protocol – протокол
управления передачей), является надежным протоколом с установлением соединений,
позволяющим без ошибок доставлять байтовый поток с одной машины на любую другую
машину объединенной сети. Он разбивает входной поток байтов на отдельные
сообщения и передает их межсетевому уровню. В пункте назначения получающий TCPпроцесс собирает из полученных сообщений выходной поток.
Кроме того, TCP осуществляет управление потоком, чтобы быстрый отправитель не
завалил информацией медленного получателя. Второй
протокол этого уровня, UDP (User Data
Protocol – пользовательский протокол данных),
является ненадежным протоколом без установления соединения, не использующим
последовательное управление потоком протокола TCP, а предоставляющим свое
собственное. Он также широко используется в одноразовых клиентсерверных
запросах и приложениях, в которых оперативность важнее аккуратности, например,
при передаче речи и видео. Взаимоотношения протоколов IP, TCP и UDP показаны на
рис. Со времени создания протокола IP этот протокол был реализован во многих
других сетях. В
модели TCP/IP нет сеансового уровня и уровня представления. В этих уровнях
просто не было необходимости, поэтому они не были включены в модель. Опыт
работы с моделью OSI доказал правоту этой точки зрения: большинство приложений
в них мало нуждаются. Над
транспортным уровнем располагается прикладной уровень. Он содержит все
протоколы высокого уровня. К старым протоколам относятся протокол виртуального
терминала (TELNET), протокол переноса файлов (FTP) и протокол электронной почты
(SMTP), как показано на рис. 1.18. Протокол виртуального терминала позволяет
пользователю регистрироваться на удаленном сервере и работать на нем. Протокол
переноса файлов предоставляет эффективный способ перемещения информации с
машины на машину. Электронная почта изначально представляла собой разновидность
переноса файлов, однако позднее для нее был разработан специальный протокол. С
годами было добавлено много других протоколов, таких как DNS (Domain Name Service
– служба имен доменов), позволяющая преобразовывать имена хостов в сетевые
адреса, NNTP (Network News Transfer Protocol – сетевой протокол передачи
новостей), HTTP, протокол, используемый для создания страниц на World Wide Web,
и многие другие.
3.3.3 Хостсетевой уровень В эталонной модели TCP/IP не описывается подробно, что располагается ниже межсетевого
уровня. Сообщается только, что хост соединяется с сетью при помощи какогонибудь протокола, позволяющего ему посылать по сети IPпакеты. Этот протокол никак
не определяется и может меняться от хоста к хосту и от сети к сети. В книгах и
статьях, посвященных модели TCP/IP, этот вопрос обсуждается
редко.
3.4
Сравнение эталонных моделей OSI и TCP У моделей OSI и TCP имеется много общих черт. Обе модели основаны на концепции
стека независимых протоколов. Функциональность уровней также во многом схожа.
Например, в обеих моделях уровни, начиная с транспортного и выше, предоставляют
сквозную, не зависящую от сети транспортную службу для процессов, желающих
обмениваться информацией. Эти уровни образуют поставщика транспорта. Также в
каждой модели уровни выше транспортного являются прикладными потребителями
транспортных сервисов. Несмотря на это фундаментальное сходство,
у этих моделей имеется и ряд отличий. В данном разделе мы обратим внимание на
ключевые различия. Обратите внимание на то, что мы сравниваем именно эталонные
модели, а не соответствующие им стеки протоколов. Сами протоколы будут
обсуждаться несколько позднее. Существует книга (Piscitello и Chapin, 1993), которая
целиком посвящена сравнению моделей TCP/IP и OSI. Для модели OSI центральными являются три концепции: 1. Службы. 2. Интерфейсы. 3. Протоколы. Вероятно, наибольшим вкладом модели OSI стало явное разделение
этих трех концепций. Каждый уровень предоставляет некоторые сервисы для
расположенного выше уровня. Сервис определяет, что именно делает уровень, но не
то, как он это делает и каким образом сущности, расположенные выше, получают
доступ к данному уровню. Интерфейс уровня определяет способ
доступа к уровню для расположенных выше процессов. Он описывает параметры и
ожидаемый результат. Он также ничего не сообщает о внутреннем устройстве
уровня. Наконец, равноранговые протоколы,
применяемые в уровне, являются внутренним делом самого уровня. Для выполнения
поставленной ему задачи (то есть предоставления сервиса) он может использовать
любые протоколы. Кроме того, уровень может менять протоколы, не затрагивая
работу приложений более высоких уровней. Эти идеи очень хорошо соответствуют
современным идеям объектноориентированного
программирования. Уровень может быть представлен в виде объекта, обладающего
набором методов (операций), к которым может обращаться внешний процесс. Семантика
этих методов определяет набор служб, предоставляемых объектом. Параметры и
результаты методов образуют интерфейс объекта. Внутреннее устройство объекта
можно сравнить с протоколом уровня. За пределами объекта оно никого не
интересует и никому не видно. Изначально в модели TCP/IP не было четкого разделения между службами, Интерфейсом и
протоколом, хотя и производились попытки изменить это, чтобы сделать ее более
похожей на модель OSI.
Так, например, единственными настоящими сервисами, предоставляемыми межсетевым
уровнем, являются SEND IP PACKET
(послать IPпакет) и RECEIVE IP PACKET (получить IPпакет). В результате в модели OSI протоколы скрыты лучше, чем в модели
TCP/IP, и при изменении технологии они могут
быть относительно легко заменены. Возможность проводить подобные изменения –
одна из главных целей многоуровневых протоколов. Эталонная модель OSI была разработана прежде, чем были
изобретены протоколы для нее. Такая последовательность событий означает, что
эта модель не была настроена на какойто конкретный
набор протоколов, что сделало ее универсальной. Обратной стороной такого
порядка действий было то, что у разработчиков было мало опыта в данной области
и не было четкого представления о том, какие функции должен выполнять каждый
уровень. Например, уровень передачи данных
изначально работал только в сетях с передачей от узла к узлу. С появлением
широковещательных сетей в модель потребовалось ввести новый подуровень. Когда
же на базе модели OSI
начали строить реальные сети с использованием существующих протоколов,
обнаружилось, что они не соответствуют требуемым спецификациям служб. Поэтому в
модель пришлось добавить подуровни для устранения несоответствия. Наконец,
изначально ожидалось, что в каждой стране будет одна сеть, управляемая
правительством и использующая протоколы OSI, поэтому никто и не думал об объединении различных сетей. В
действительности все оказалось не так. С моделью TCP/IP было все наоборот: сначала появились протоколы, а уже затем
была создана модель, описывающая существующие протоколы. Таким образом, не было
проблемы с соответствием протоколов модели. Они ей соответствовали прекрасно.
Единственной проблемой было то, что модель не соответствовала никаким другим
стекам протоколов. В результате она не использовалась для описания какихнибудь других сетей, отличных от TCP/IP. Если взглянуть на эти две модели поближе,
то прежде всего обратит на себя внимание различие в количестве уровней: в
модели OSI семь
уровней, в модели TCP/IP –
четыре. В обеих моделях имеются межсетевой, транспортный и прикладной уровни, а
остальные уровни различные. Еще одно различие между моделями лежит в
сфере возможности использования связи на основе соединений и связи без
установления соединения. Модель OSI
на сетевом уровне поддерживает оба типа связи, а на транспортном уровне –
только связь на основе соединений (поскольку транспортные службы являются
видимыми для пользователя). В модели TCP/IP на
сетевом уровне есть только один режим связи (без установления соединения), но
на транспортном уровне он поддерживает оба режима, предоставляя пользователям
выбор. Этот выбор особенно важен для простых протоколов
«запрос – ответ». |
||