Модель уровней TCP/IP

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

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

Концептуальный уровень Объекты, передаваемые между уровнями
Прикладной (ftp, email, http, telnet) <---------Сообщения или потоки
Транспортный (tcp, udp,) <---------Пакеты транспортного протокола
Межсетевой (ip, icmp) <---------Дейтаграммы IP
Уровень канала данных (arp, ethernet, …) <---------Кадры конкретной сети

· Уровень канала данных. ПО TCP/IP самого низкого уровня состоит из уровня интерфейса с сетью, ответственного за прием IP-дейтаграмм и передачу их по конкретной сети. Интерфейс с сетью может состоять из драйвера устройства (когда сеть - это ЛВС, к которой машина присоединена напрямую) или сложной подсистемы, использующей свой протокол канального уровня (когда сеть состоит из коммутаторов пакетов, взаимодействующих с ГВМ, используя HDLC).

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

· Транспортный уровень. Основной задачей транспортного уровня явялется обеспечение взаимодействия между прикладными программами. Такое взаимодействие часто называется межконцевое (end-to-end). Транспортный уровень может управлять потоком информации. Он может также обеспечивать надежную передачу, гарантируя, что данные прибыли без ошибок и в порядке их передачи. Для этого он заставляет принимающую сторону посылать обратно подтверждения, и повторно передает потерянные пакеты. Транспортное ПО делит передаваемый поток данных на небольшие части( называемые пакетами согласно терминологии ISO) и передает каждый пакет вместе с адресом назначения следующему уровню. Транспортный уровень должен принимать данные от нескольких прикладных программ и посылать их более нижнему уровню. Для этого он добавляет дополнительную информацию к каждому пакету, включая коды, идентифицирующие прикладную программу, пославшую его, и прикладную программу-получателя, а также контрольную сумму. Принимающая машина использует контрольную сумму для проверки целостности принятого пакета, а код назначения - для идентификации прикладной программы, которой он должен быть передан.

· Межсетевой уровень. Как мы уже видели, Межсетевой уровень управляет взаимодействием между машинами. Он принимает запрос на посылку пакета от транспортного уровня вместе с указанием машины, на которую этот пакет должен быть послан. Он инкапсулирует пакет в IP-дейтаграмме, заполняет заголовок дейтаграммы, использует алгоритмы маршрутизации для определения того, можно ли послать дейтаграмму напрямую, или следует послать ее шлюзу, и передает дейтаграмму соответствующему интерфейсу с сетью. Межсетевой уровень также обрабатывает приходящие дейтаграммы, проверяет их корректность, и использует алгоритм маршрутизации для того, чтобы решить, нужно ли обработать дейтаграмму локально или ее следует переправить дальше. Для дейтаграмм, адресованных локальной машине, ПО межсетевого уровня удаляет заголовок дейтаграммы и определяет, какой из транспортных протоколов будет обрабатывать пакет. Наконец, межсетеовй уровень посылает сообщения об ошибках ICMP по мере необходимости и обрабатывает все приходящие сообщения ICMP.