Обзор протокола TCP/IP
Мы предполагаем, что читатель знает, что такое семиуровневая модель межсетевого взаимодействия ISO/OSI, или хотя бы представляет себе, что такое протокол сетевого и транспортного уровня. Однако, чтобы освежить это в памяти, мы рассмотрим, какое отношение к TCP/IP имеют эти понятия.
Модель межсетевого взаимодействия описывает семь уровней абстракции, которым соответствуют реальные сетевые протоколы передачи и обработки данных. Чтобы эти уровни обрели для нас смысл, рассмотрим вначале, как одни программы передают другим данные по сети. Допустим, что приложение А хочет получить данные от приложения В. Для этого приложение А оформляет свой запрос к приложению В в соответствии с некими правилами, которые хорошо известны обоим приложениям. Так, например, происходит при просмотре web-страниц. Браузер пользователя посылает запрос web-серверу и ожидает от него ответ. Для посылки запроса приложение А должно не только оформить этот запрос в соответствии с правилами, известными приложению В, но и потребовать от своей системы передачи данного запроса. Для этого должен быть установлен сеанс связи, в котором произойдет передача пакета с запросом, получение подтверждения об успешном прохождении пакета, и затем сеанс связи может быть завершен. Отметим, что пакет может передаваться через сети различной природы, например, браузер пользователя, подключенного к Интернету по технологии ADSL в Москве, может обратиться к web-серверу Yahoo, подключенному к Интернету через канал АТМ.
На самом деле все еще сложнее, поскольку запрос и ответ на него будут передаваться, скорее всего, не одним пакетом, а несколькими, и по ходу дела надо будет выбрать наилучший маршрут между системами, в которых запущены приложения А и В и т.д.
Чтобы разработчик программ, системный администратор и пользователь не мучались, пытаясь реализовать этот сложный алгоритм самостоятельно, каждая система имеет так называемый стек протоколов, представляющий собой набор программных модулей, которые умеют общаться друг с другом, передавать данные друг другу в ожидаемом формате .
Именно этот стек протоколов и является реальным воплощением идеальной модели межсетевого взаимодействия (рис. 13.1).
Рис. 13.1. Модель OSI/ISO
Уровень приложения этой модели описывает правила передачи данных от приложения к приложению. В случае браузера и web-сервера этому уровню соответствует протокол HTTP.
Уровень представления описывает представление данных (например, в случае с HTTP символы национальных алфавитов кодируются последовательностями типа %E20; это легко видеть, когда вы делаете запрос в поисковой системе по-русски, и в строке адреса этот запрос отображается такими последовательностями). Протокол уровня представления может зависеть от смысла передаваемых данных, используемой ОС и т.п.
Сеансовый уровень определяет правила управления сеансом связи (как начать сеанс, какие команды можно использовать для согласования параметров сеанса, как передать данные и как завершить сеанс - все это в примере с браузером определяется протоколом HTTP, который, как видно, охватывает целых три уровня модели межсетевого взаимодействия).
Транспортный уровень задает правила передачи пакетов и гарантирует их доставку. Существуют два типа протоколов транспортного уровня - с гарантией доставки и без гарантии. Например, протокол UDP (User Datagram Protocol) - это протокол транспортного уровня без гарантии доставки пакета, а TCP (Transmission Control Protocol) - с гарантией доставки. Если протокол транспортного уровня не обеспечивает гарантии доставки, то эту функцию берут на себя протоколы более высоких уровней.
Сетевой уровень определяет правила адресации и форматы пакетов для передачи по сетям любой природы, независимо от того, какие каналы связи используются. В сети Интернет применяется протокол сетевого уровня IP (Internet Protocol).
Канальный уровень служит для определения правил передачи данных по каналу связи, при этом он делится на уровень управления логическим каналом (LLC - logical link control) и уровень управления доступом к среде передачи (MAC - media access control).
Примером протокола канального уровня является протокол Ethernet, широко используемый в локальных сетях или для быстрого доступа к провайдеру Интернет. В протоколах канального уровня, предполагающих связь нескольких сетевых интерфейсов, определяются адреса каждого из интерфейсов. Так, согласно протоколу Ethernet, каждый сетевой интерфейс должен иметь уникальный MAC-адрес, по которому можно отправить пакет.
Физический уровень определяет правила передачи данных по физическому каналу связи, такие как последовательность бит, четность, наличие стартовых и стоповых битов и т.п. протокол Ethernet может быть отнесен к тем протоколам, которые фактически объединяют в себе протоколы физического и канального уровня.
Кроме того, различают еще один уровень модели межсетевого взаимодействия - "нулевой". Это - уровень среды передачи. Протоколы этого уровня описывают физические параметры сигналов, специфичные для конкретной среды передачи данных. Для медного провода это - уровень сигналов (например, +5В, 0В), допустимое сопротивление провода и т.п.
Протоколы TCP и IP постоянно используются вместе, в связке друг с другом. Поэтому все семейство протоколов, которые базируются на их совместном использовании, часто называют семейством протоколов TCP/IP , а саму связку - протоколом TCP/IP . Действительно, хотя протоколы TCP и IP - это два разных протокола, фактически ТСР не используется ни с каким иным протоколом, кроме IP.
Приложение, которое работает с сетью, может реализовывать один или несколько протоколов, каждый из которых относится к своему уровню представленной модели. Например, программа ftp самостоятельно реализует протоколы, относящиеся к трем уровням: сессионному, представления и приложения.
При передаче через сеть данные претерпевают изменения, которых требуют протоколы всех перечисленных уровней.
Протокол или группа протоколов реализуются подпрограммами операционной системы или самим сетевым приложением. При передаче данных между подпрограммами, от высокоуровневых подпрограмм (уровень приложения) к низкоуровневым (например, реализующим протокол канального уровня), данные разделяются на пакеты и снабжаются служебными заголовками, специфичными для каждого протокола.Когда данные доберутся до места назначения, они пройдут обратный путь снизу вверх по стеку протоколов. Вначале драйверы и подпрограммы операционной системы соберут разрозненные пакеты данных, удалят из них служебные заголовки, затем данными займутся подпрограммы приложения-получателя.