1.5. Архитектура TCP/IP
В предыдущей статье мы познакомились с основными моментами стека. Сейчас рассмотрим архитектуру слоёв стека TCP/IP и сравним с OSI.
Уровни TCP/IP
TCP/IP, как и OSI, является многоуровневой моделью. Она состоит из четырёх уровней.
Уровень сетевых интерфейсов
Уровень сетевых интерфейсов (или канальный уровень) отвечает за размещение и приём пакетов. TCP/IP разработан так, чтобы не зависеть от метода доступа к сети, формата пакетов и носителя.
TCP/IP не вдаётся в подробности, просто знает, поверх какой технологии сейчас находится: локальной, городской, глобальной или телефонной. Он просто фрагментирует данные под эту технологию и дальше отправляет ей эти фрагменты. Нижние технологии он рассматривает как передатчик данных. Это позволяет такой технологии работать независимо от технологии, поверх которой строится.
Четырёхуровневая модель — коммуникационная модель. Поэтому мы можем её рассмотреть с точки зрения общения из реальной жизни.
Таня и Катя — подруги, которые живут в разных городах. Скоро у Кати день рождения, и Таня решила отправить ей в подарок коллекционную серию книг о Гарри Поттере. Таня живёт в городе А, Катя — в городе Б.
В этом случае Таня — отправитель, а Катя — получатель. В коллекционной серии о Гарри Поттере семь книг, каждая весит, скажем, килограмм. Таня упаковывает все книги в конверт, итоговый вес которого получается 7кг. На конверте написан адрес Тани и адрес Кати.
Дальше идёт описание передачи книг.
Прикладной уровень
Таня подходит к ближайшему почтовому ящику и кладёт 7-килограммовый конверт в «почтовый ящик». На этом задача Тани закончена. Тане не нужно беспокоиться о том, как почтальон выполнит свою работу.
Эта часть является прикладным уровнем.
Транспортный уровень
Когда «почтальон» подходит к почтовому ящику, он собирает в нём все конверты (вместе с 7-килограммовым конвертом Тани).
НО! Сортировочная контора принимает только посылки весом не более килограмма. В связи с этим «почтальон» делает следующее:
- Вынимает все семь книг из конверта Тани.
- Помещает каждую книгу в один конверт весом в килограмм.
- Отмечает номера всех семи конвертов по порядку.
- Пишет адрес Тани и адрес Кати на всех конвертах.
- Относит все конверты в сортировочный центр города отправления.
На этом работа почтальона закончена. Ему не нужно заботиться о том, как сортировочная служба доставляет конверты по назначению. То есть «почтальон» не должен беспокоиться о деталях того, как сортировочная служба выполняет свою работу.
Эта часть — транспортный уровень.
Сетевой уровень
Поскольку в «сортировочном офисе города А» есть все конверты Тани, они должны отправить эти конверты в город Б, чтобы потом их можно было доставить Кате. Но есть некоторые правила, которым должны следовать сортировочные центры.
Правила могут быть такими:
- на конверте должна быть почтовая марка;
- на конверте должны быть указаны правильные адреса отправителя и получателя (во избежание двусмысленности);
- пункт назначения должен находиться в той же стране, что и отправитель.
Сортировочный офис следит за тем, чтобы все правила соблюдались должным образом.
Примечание: приведённые выше правила указаны только для примера, они ненастоящие и могут быть разными.
Для отправки конвертов в другой город сортировочному отделу приходится использовать услуги перевозчика. Например, сортировочное бюро оплачивает услуги по перевозке конвертов в разные города.
Итак, сортировочная служба передаёт конверты в службу доставки. На этом её работа закончена. Ей не нужно беспокоиться о том, как служба доставки отправляет свои конверты в разные города или как работает служба доставки.
Эта часть является сетевым уровнем.
Канальный уровень
Служба доставки получила все конверты и должна отправить их в город Б. Она может выполнить работу разными способами, например:
- по воздуху — авиаперелёт;
- по земле — автобус, грузовик, машина;
- по воде — корабль.
Предположим, служба доставки выбирает авиаперелёт. Когда посылка с конвертами прибывает в аэропорт города назначения (аэропорт в городе Б), служба перевозчика доставляет их в сортировочный пункт этого города.
На этом работа службы доставки закончена. Ей не нужно думать о том, как сортировочная служба города Б будет доставлять конверты адресату.
Эта часть является канальным уровнем.
Аналогии с реальной передачей данных
- Таня — отправитель.
- Конверт 7кг — данные.
- Почтовый ящик в качестве внешнего прикладного программного обеспечения, например: Telegram, Gmail, Facebook.
- Помещение каждой книги в отдельный конверт и указание порядкового номера и адресов Тани и Кати на каждом конверте — это сегментация данных на пакеты. Примечание: сегментация выполняется в соответствии с пропускной способностью сетевого уровня.
- Каждый конверт весом килограмм — это пакеты данных.
- Почтальон — служба протокола транспортного уровня, например, TCP, UDP.
- Сортировочный офис — служба протокола сетевого уровня, то есть IP (в случае связи через интернет), FTP и другие.
- Служба оператора — служба протокола канального уровня, например, Wi-Fi, Ethernet-кабель.
- Катя — получатель данных.
Для чего модель разделена на слои?
Вот основные преимущества, предлагаемые моделью слоёв:
Каждый слой действует как отдельный модуль. Поэтому каждый отдельный модуль можно модифицировать, не затрагивая другие слои. Например, если за конвертами приходит новый почтальон, то это не влияет на Таню или сортировочную контору. Конечно, до тех пор, пока этот новый почтальон хорошо выполняет свою работу.
Каждый слой автономен и имеет отдельные задачи. Поэтому каждый слой может сосредоточить все свои ресурсы на выполнении своей работы и не беспокоиться о работе других слоёв. Например, почтальон просто собирает конверты, при необходимости разделяет их содержимое и сдаёт в сортировочное бюро. Ему не нужно тратить энергию на размышления о том, как работает сортировочный офис.
Иерархическая организация системы. Существует непрерывный поток данных между различными уровнями, и нет никакой двусмысленности в отношении выполнения различных операций. Есть определённый порядок выполнения работ, что упрощает проектирование и внедрение систем связи. Например, сортировочная служба не может выполнять свою работу, если почтальон не доставил конверты.
С какими проблемами можно столкнуться во время передачи данных?
- Конверты могут быть повреждены в пути или даже утеряны.
- Возможно, книги будут доставлены в разные дни. То есть одни книги доставят Кате вовремя, а другие — позже.
- Катя может получить книги в неправильном порядке. То есть сначала она получит седьмой том, через три дня — пятый и так далее.
Что можно сделать, чтобы избежать таких ситуаций? «Нанять почтальона», который следит за доставкой книг в целости и сохранности (первый том → второй том 2 → … → седьмой том) и информирует Таню, когда книги доходят до Кати. Этого «надёжного почтальона» можно рассматривать как службу протокола TCP.
Исходя из всего вышесказанного, протокол TCP выполняет следующие задачи:
- доставляет пакеты данных по порядку;
- если пакеты данных теряются в пути или повреждаются (битовая ошибка), то информирует об этом отправителя: посылает сообщение об ошибке;
- повторно передаёт пакеты данных, если есть какая-то проблема.
Программные приложения, которым необходима такая надёжная передача данных через интернет (IP как сетевой протокол), используют TCP в качестве транспортного протокола. Про них говорят: «Такие приложения используют TCP».
Теперь рассмотрим эти же уровни на более формальном и профессиональном языке.
Уровень сетевого интерфейса
Этот уровень соотносится с канальным и физическим уровнями модели OSI. Здесь идёт подготовка пакетов для передачи на следующий уровень.
Протоколы: Ethernet (проводная связь), PPP (протокол «точка-точка», который транспортирует IP пакеты).
Интернет-уровень
Цель этого уровня — адресовать пакет, упаковать и составить маршрут до сети назначения. Дальше сеть доставляет эти данные окончательно тому узлу, которому они были адресованы. На этом уровне IP добавляет к пакетам заголовок, который известен как IP-адрес.
Протоколы: IP (интернет-протокол), ARP (протокол разрешения адресов), ICMP (интернет-протокол управляющих сообщений, отвечает за предоставление функций диагностики и сообщения об ошибках из-за неудачной доставки IP-пакетов).
Транспортный уровень
Этот уровень позволяет доставлять данные из источника на хост назначения.
Обеспечивает два типа доставки сообщений:
- Гарантированная доставка сообщений с заданным классом надёжности. Это протокол TCP.
- Негарантированная, то есть доставка по возможности («пропадут — ну и ладно»). Это протокол UDP. Отправляет данные в виде дейтаграмм. Дейтаграммы — блок информации, передаваемый независимо от других пакетов без установки соединения и подтверждения приёма. Слово дейтаграмма было выбрано по аналогии со словом телеграмма.
Уровень приложения
Этот уровень также называют прикладным. Он позволяет пользователям получать доступ к услугам глобального или частного интернета.
Протоколы: протокол передачи гипертекста (HTTP), система доменных имён (DNS), передача файлов (FTP), транспортный протокол в реальном времени (RTP), виртуальный терминал (TELNET), электронная почта (SMTP).
Уровень приложений TCP/IP является комбинацией прикладного уровня, уровня представления и сеансового уровня модели OSI.
Сопоставление стека TCP/IP с моделью OSI:

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