12.3. Стек протоколов TCP/IP

Обмен сообщениями в сети производится программным обеспечением разных устройств: компьютерами, маршрутизаторами, сетевыми картами и т.п.

Протокол определяет формат и очередность сообщений, которыми обмениваются два и более устройства, а также действия, выполняемые при передаче и или приеме сообщений либо при наступлении иных событий.

Набор протоколов разных уровней, работающих одновременно, называют стеком протоколов. Stack — стопка. Рис. Стек протоколов TCP/IP

Персональные компьютеры должны использовать специальное программное обеспечение, которое понимает и интерпретирует протоколы TCP/IP. Это программное обеспечение называемое как socket (гнездо) или стек TCP/IP, и это встроено на любой компьютер. Для Windows оно называется Winsock. Это программное обеспечение служит как посредник между Internet и персональным компьютером.

Техническая спецификация, которая определяет стандартный интерфейс между приложением клиента TCP/IP Windows (типа FTP клиента или клиента Gopher) и основного стека протокола TCP/IP. Спецификация основана на приложениях Sockets, программирующих модель интерфейса, используемую в Berkeley UNIX для связи между программами. WWW 7designavenue.com/glossary.htm

Winsock - Microsoft Windows DLL файл, который обеспечивает интерфейс к услугам TCP/IP, по существу позволяя Windows использовать программы просмотра Сети, программы FTP, и другие. Www.vikont.com/clients/glossary.htm

Сообщение передаваемое с одного компьютера на другой, последовательно обрабатывается каждым протоколом из стека.

Протоколы делят на базовые отвечающие за физическую пересылку сообщений между компьютерами в сети, и прикладные — отвечают за функционирование спец. cлужб.

Выделяют четыре уровня: прикладной (непосредственная связь между приложениями), транспортный (обеспечение установки соединений между приложениями и передачи данных без потерь), межсетевой (адресация компьютеров, выбор маршрутов движения пакетов), уровень доступа к сети (физический).

Каждый вышележащий уровень использует нижележащий для передачи своих данных. Сообщение перед отправкой обрабатывается с помощью протоколов разных уровней. На каждом уровне протокол добавляет сообщению служебную информацию, которая предписывает аналогичному уровню на машине получателя, как поступить с полученной порцией данных. После доставки на машину получателя сообщение точно также обрабатывается аналогичной последовательностью протоколов. Каждый уровень обрабатывает свой заголовок, выполняет действия и удаляет соответствующий заголовок.

Такое взаимодействие протоколов при передачи сообщений по сети можно сравнить со схемой пересылки письма.

1. Директор пишет письмо и отдает секретарю.

2. Секретарь помещает его в конверт, подписывает адрес и относит на почту.

3. Почта передает письмо транспортной службе, которая помещает письмо в упаковку.

4. Транспортная служба кладет письмо в контейнер и везет.

В пункте назначения происходит обратный процесс. В этой структуре каждый выполняет свои функции. То есть директор не передает информацию об адресе, это хранится у секретаря. Поэтому если придется заменить секретаря. Новому не надо объяснять в каких контейнерах перевозится почта.

Аналогично в стеке протоколов TCP/IP каждый протокол выполняет свою функцию, не заботясь о функциях протокола другого уровня. Поэтому при модернизации ПО одного из протоколов нет необходимости изменять все модули стека, и одна программа передает другой данные не зная как именно они передаются.

Прикладной уровень. Есть некое сообщение, отправляемое электронной почтой. Передача почты осуществляется по протоколу SMTP который опирается на протоколы TCP/IP. Под блоком данных сообщение имеется ввиду не весь текст письма, а некоторый фрагмент диалога между клиентским приложением компьютера и SMTP-сервером.

С прикладного уровня сообщение поступает на транспортный. Согласно протоколу TCP отправляемые данные разбиваются на небольшие пакеты фиксированной структуры и длины, маркирующиеся таким образом, чтобы при их получении эти данные можно было бы собрать в правильной последовательности. TCP-пакеты мы изобразили в виде конвертов.

(2) По ряду причин, включая аппаратные ограничения, данные, посланные через Интернет должны быть разбиты на пакеты не менее чем 1.500 символов каждый. Каждому пакету присваивается заголовок, который содержит разнообразную информацию, например порядок, в котором пакеты должны быть собраны с другими связанными пакетами. Поскольку TCP создает каждый пакет, это также вычисляет и добавляет к заголовку контрольную сумму, которая является номером, который TCP использует на конце получения, чтобы определить, появились ли ошибки в пакете в течение передачи. Контрольная сумма основана на точном количестве данных в пакете.

Далее эти пакеты поступают на межсетевой уровень (уровень Интернета). Каждый пакет условно оборачивается в дополнительный конверт. Данный процесс называется инкапсуляцией в пакет следующего уровня. К каждому полученному TCP-пакету протокол IP добавляет информацию по которой можно определить адрес отправителя и получателя.

(3) Каждый пакет помещается в отдельные IP-конверты, которые содержат адресную информацию по которой можно определить адреса отправителя и получателя. Конверты IP содержат заголовки, которые включают информацию типа адреса отправителя, адреса назначения, время, которым пакет должен сохраниться перед отказом от этого, и многих других типов информации.

После этого IP-пакеты попадают на уровень доступа к сети. Здесь происходит очередная инкапсуляция в конверт следующего уровня, после чего пакеты отправляются по сети на адрес компьютера получателя.

(4) Поскольку пакеты посылают через Интернет, маршрутизаторы по пути проверяют конверты IP и смотрят на их адреса. Эти маршрутизаторы определяют самый эффективный путь для того, чтобы послать каждый пакет следующему маршрутизатору, наиболее близкому к его конечному адресату. Наконец путешествия через ряд маршрутизаторов, пакеты прибывают. Поскольку загрузка трафика Интернета постоянно меняется, пакеты можно послать по различным маршрутам, и пакеты могли бы прибыть не в порядке.

(5) Когда пакеты достигают их адресатов, TCP вычисляет контрольную сумму для каждого пакета. Он сравнивает эту контрольную сумму с контрольной суммой, которую послали в пакете. Если контрольные суммы не соответствуют, TCP знает, что данные в пакете были нарушены в течение передачи. Тогда происходит отказ от пакета и запрашивает, чтобы первоначальный пакет был повторно передан.

Размер пакета физического уровня в сетях Ethernet около 1500 байт, учитывая несколько сотен байт служебной информации всех уровней стека протоколов, можно считать, что чистые данные занимают около 1000 байт. Поэтому одно письмо может состоять из нескольких сотен таких пакетов. Малая длина пакета позволяет избежать блокировки линий связи, поскольку не позволяет отдельным пользователям надолго захватывать канал связи.

Взаимосвязанные пакеты данных могут передаваться разными путями. И в результате конечного числа пересылок пакеты достигают адресата. Часть пакетов может быть потеряна. Службы транспортного уровня повторно отправляют утерянные пакеты.

(6) Когда ненарушенные пакеты получены тем компьютером, которому информацию посылают, TCP, транслирует их в их первоначальную, объединенную форму.

Итого: за перемещение данных отвечает физический уровень. IP обеспечивает адресацию сетевых устройств и выбор маршрута, а протокол TCP надежную доставку данных, используя систему кодов, исправляющих ошибки.