Прикладной уровень
В модели TCP/IP нет сеансового уровня и уровня представления. В этих уровнях просто не было необходимости, поэтому они не были включены в модель. Вместо этого приложения просто включают все функции сеансов и представления, которые им нужны. Опыт работы с моделью OSI доказал правоту этой точки зрения: большинство приложений мало нуждаются в этих уровнях.
Над транспортным уровнем располагается прикладной уровень. Он содержит все протоколы высокого уровня. К старым протоколам относятся протокол виртуального терминала (TELNET), протокол переноса файлов (FTP) и протокол электронной почты (SMTP). С годами было добавлено много других протоколов. Некоторые наиболее важные, которые мы рассмотрим, показаны на рис. 1.19. Это DNS (Domain Name Service — служба имен доменов), позволяющая преобразовывать имена хостов в сетевые, HTTP, протокол, используемый для создания страниц на World Wide Web, а также RTP, протокол для представления мультимедиа в реальном времени, таких как звук или фильмы.
1.4.3. Модель, используемая в книге
Как упомянуто ранее, сила эталонной модели OSI — сама модель (минус представление и уровни сеансов), которая оказалась исключительно полезной для обсуждения компьютерных сетей. Напротив, сила эталонной модели TCP/IP — протоколы, которые широко использовались много лет. Чтобы совместить эти качества, мы будем использовать в книге гибридную модель, показанную на рис. 1.20.
Рис. 1.20. Эталонная модель, используемая в этой книге
Задача сетевого уровня объединить многочисленные каналы в сети и сети сетей, а также в объединенные сети, чтобы мы могли посылать пакеты между удаленными компьютерами. Это включает задачу обнаружения пути, по которому можно послать пакеты. IP — основной протокол, который мы изучим в качестве примера для этого уровня. Транспортный уровень усиливает гарантии доставки сетевого уровня, обычно с увеличенной надежностью, и обеспечивает параметры доставки, такие как надежный поток байтов, соответствующий потребности различных приложений. TCP — важный пример протокола транспортного уровня.
Наконец, прикладной уровень содержит программы, которые используют сеть. У многих, но не всех сетевых приложений есть пользовательские интерфейсы, такие как веб-браузер. Нас интересует, однако, та часть программы, которая использует сеть. Это — протокол HTTP в случае веб-браузера. Есть также важные программы поддержки в прикладном уровне, такие как DNS, которые используются многими приложениями.
Последовательность глав в книге основана на этой модели. Таким образом, мы сохраняем значение модели OSI для понимания сетевой архитектуры, но концентрируемся, прежде всего, на протоколах, которые важны практически, от TCP/IP и связанных с ним протоколов до более новых, таких как 802.11, SONET и Bluetooth.
1.4.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 на сетевом уровне есть только один режим связи (без установления соединения), но на транспортном уровне она поддерживает оба режима, предоставляя пользователям выбор. Этот выбор особенно важен для простых протоколов запрос-ответ.