Модель TCP/IP: основа сетевого взаимодействия
Модель TCP/IP лежит в основе всего сетевого взаимодействия, от офисного Wi Fi до глобальных сервисов. Будет полезно понимать ее логику, чтобы быстрее ориентироваться в инцидентах и не теряться в технических деталях. Разберем "на пальцах" самое важное из этой модели

Содержание
Зачем нам ещё одна модель, если уже есть OSI
В предыдущем разделе мы познакомились с моделью OSI - теоретической "лесенкой" из 7 уровней, которая помогает объяснять, как устроена сеть.
Но интернет строили не "по учебнику OSI".
Когда военные и университеты начинали соединять сети между собой, им нужна была практическая схема, по которой компьютеры в разных учреждениях и странах могли обмениваться данными, не было единого центра управления (каждая сеть - своя "автономная республика"), можно было использовать разные физические линии (радио, кабель, оптика), но поверх них - одни и те же правила обмена данными.
Так появилась группа протоколов, вокруг которой и вырос интернет.
Эту группу называют стек протоколов TCP/IP.
- Протокол - набор правил: как оформлять данные, что в них писать, кто кому что отправляет и в каком порядке. Как правила деловой переписки: тема, приветствие, подпись, вложения и т.д.
- Стек протоколов - набор протоколов, которые работают слоями один над другим, как этажи в доме или как несколько конвертов, вложенных друг в друга.
Модель OSI - красивая теоретическая схема "как можно разложить сеть на уровни".
Стек TCP/IP - то, как реально работает интернет.
Чтобы уверенно разговаривать с разработчиками и DevOps, важно понимать именно TCP/IP, а OSI держать как полезную картинку для ориентира.
Слои TCP/IP и соответствие уровням OSI
Начнем с определения. Слой - это логический уровень, который решает один класс задач и опирается на возможности слоя ниже.
Пример из жизни:
- На верхнем уровне человек пишет письмо.
- Чуть ниже он кладёт его в конверт и пишет адрес.
- Ещё ниже - почтовая служба сортирует мешки с письмами по городам.
- Ещё ниже - кто-то физически возит эти мешки на машинах и поездах.
Все эти шаги можно представить как слои:
- слой "содержание письма" (что именно мы хотим сказать);
- слой "адреса на конверте";
- слой "сортировка и маршруты между городами";
- слой "физическая доставка (машины, поезда)".
В TCP/IP то же самое, только для компьютерных данных.
Какие слои есть в TCP/IP
В модели TCP/IP выделяют 4 слоя:
- Канальный (Network Access)
- Межсетевой слой (Internet)
- Транспортный слой (Transport)
- Прикладной слой (Application)
Их можно мысленно сравнить с OSI:
- Канальный ≈ физический + канальный уровни OSI.
- Межсетевой слой ≈ сетевой уровень OSI.
- Транспортный слой ≈ транспортный уровень OSI.
- Прикладной слой ≈ три верхних уровня OSI, слепленные вместе.
Разберём каждый слой по-отдельности.
Канальный (Network Access)
Вопрос, который решает этот слой:
Как конкретное устройство (компьютер, сервер, телефон) физически подключено к сети и как передать данные внутри одной локальной сети?
Здесь появляются несколько важных терминов:
- Локальная сеть - группа устройств, соединённых между собой "на месте": офис, квартира, одна стойка в дата-центре. Обычно у них общий сетевой оборудование (роутер, коммутатор).
- Сетевой адаптер (сетевая карта) - железка (или встроенная часть железки) в компьютере, которая умеет отправлять и принимать данные по сети: по кабелю (Ethernet) или по воздуху (Wi-Fi).
- MAC-адрес - уникальный номер сетевого адаптера.
Похоже на "паспорт" именно этой сетевой карты: - записывается как 00:1A:2B:3C:4D:5E;
- нужен, чтобы отличать устройства в одной локальной сети.
- Фрейм / кадр (frame) - блок данных, который передаётся на уровне локальной сети.
Внутри кадра есть: - MAC-адрес отправителя,
- MAC-адрес получателя,
- служебные поля (проверка ошибок),
- полезная нагрузка (кусочек пакета более верхнего уровня).
- Коммутатор (switch) - сетевое устройство, у которого много сетевых разъёмов (портов), и к каждому порту можно подключить кабель от компьютера или другого устройства.
- Физический порт - это реальное гнездо в устройстве, куда втыкается кабель.
- Задача коммутатора - получать кадры и пересылать их в нужный порт, чтобы они дошли до нужного устройства.
Как это работает:
- Компьютер формирует кадр: "от MAC “A” к MAC “B”, вот данные".
- Посылает кадр в сеть (по кабелю или по Wi-Fi).
- Коммутатор получает кадр, смотрит:
- "кому он адресован? какому MAC-адресу?"
- Внутри коммутатора есть таблица: "какой MAC сидит за каким физическим портом".
- Коммутатор отправляет кадр только через нужный порт, а не всем подряд.
На этом уровне нас ещё не интересуют IP-адреса, маршруты между городами и странами. Задача канального слоя - довести кадр до ближайшей точки маршрута: от компьютера до коммутатора, от коммутатора до маршрутизатора и т.п.
Примеры технологий:
- Ethernet - стандарт проводных сетей, который определяет как выглядит кадр (где в нём MAC-адреса, где данные, где контрольная сумма) и как устройства "делят" общий кабель, чтобы не мешать друг другу.
- Wi-Fi (семейство стандартов IEEE 802.11) - то же самое, но по радио: как подключаться к точке доступа, как кодировать сигнал, чтобы он был устойчив к помехам, как шифровать трафик (WPA2, WPA3).
- ARP (Address Resolution Protocol) - вспомогательный протокол, который связывает IP-адрес и MAC-адрес внутри одной локальной сети. Простыми словами:
- "Кто в этой сети владеет IP-адресом 192.168.1.10?"
- "Я, мой MAC - 00:11:22:33:44:55".
Межсетевой слой (Internet)
Вопрос, который решает этот слой - как доставить данные из одной сети в другую, например, из офисной сети в сеть дата-центра в другой стране?
Здесь нужно новое понятие:
- IP-адрес - логический адрес узла (компьютера/сервера) в мире TCP/IP.
Записывается обычно как 203.0.113.42 (IPv4, в следующих статьях расскажем об этом подробней).
IP-адрес нужен, чтобы: - отличать сети друг от друга;
- понять, через какие промежуточные сети нужно пройти, чтобы попасть к адресу назначения.
- IP-пакет - блок данных сетевого уровня.В нём есть:
- IP-адрес отправителя,
- IP-адрес получателя,
- служебная информация,
- "внутри" - данные транспортного уровня (например, кусок TCP-потока).
- Маршрутизатор / роутер (router) - сетевое устройство, которое:
- принимает IP-пакеты,
- смотрит на IP-адрес назначения,
- по своей таблице маршрутов решает, на какой "следующий шаг" (следующий маршрутизатор или локальную сеть) отправить пакет.
То есть на сетевом слое мы уже не думаем про MAC-адрес конкретной сетевой карты. Мы думаем: "пакет должен попасть в сеть, где есть IP-адрес такой-то. Через кого его отправить дальше?"
В сравнении с почтой:
- канальный слой - как донести письмо от квартиры до ближайшего отделения;
- межсетевой слой - как по всей системе почтовых отделений и сортировочных центров довезти письмо до города и отделения получателя.
Транспортный слой (Transport)
Вопрос, который решает этот слой - как доставить данные не просто на нужный компьютер, а в нужную программу (сервис, приложение) на нём
и с какими гарантиями (надёжно/быстро)?
Новые понятия:
- Приложение - программа, которая делает полезную работу для пользователя или другого сервиса.
Примеры приложений: - веб-сервер,
- почтовый сервер,
- сервер базы данных.
- Порт (port) - числовой идентификатор приложения внутри одного IP-адреса. Если IP - "адрес дома", то порт - "номер квартиры".
Примеры: - порт 80 - по традиции веб-сервер (HTTP),
- порт 443 - HTTPS,
- порт 25 - почтовый сервер (SMTP),
- порт 5432 - сервер PostgreSQL.
- TCP (Transmission Control Protocol) - протокол транспортного уровня, который:
- устанавливает соединение между двумя парами "IP + порт";
- обеспечивает надёжную доставку: следит, чтобы все куски данных дошли, переотправляет потерянные, собирает всё в правильном порядке.
- UDP (User Datagram Protocol) - другой протокол транспортного уровня:
- не устанавливает постоянного соединения;
- отправляет отдельные "датаграммы" (пакеты) без подтверждений;
- не гарантирует, что все дойдут и в нужном порядке;
- зато проще и быстрее.
На транспортном уровне появляется понятие:
- Сокет (socket) - пара из IP-адреса и порта. Например: 203.0.113.10:443 - это конкретный веб-сервер на конкретном компьютере.
Сравнение с почтой:
- межсетевой слой говорит: "письмо надо доставить в дом по адресу Москва, ул. Такая-то, дом 5";
- транспортный слой добавляет: "и в квартиру 25, а не в 26".
Прикладной слой (Application)
Вопрос этого слоя - о чём вообще данные? Что за смысл в этих байтах?
Здесь мы наконец говорим о конкретной бизнес-логике:
- веб-страницы и API,
- почтовые письма,
- файлы, которые скачивает пользователь,
- команды для удалённого управления сервером.
Новые понятия:
- HTTP (HyperText Transfer Protocol) - протокол прикладного уровня:
- определяет, как браузер и веб-сервер обмениваются запросами и ответами;
- как записывается URL, заголовки, тело запроса, коды статусов (200, 404, 500 и т.д.).
- DNS (Domain Name System) - система доменных имён:
- переводит удобные для человека имена (example.com) в IP-адреса.
- SMTP, IMAP, POP3 - протоколы почты:
- SMTP - отправка писем от клиента к серверу и между серверами;
- IMAP/POP3 - получение писем с сервера на почтовый клиент.
- SSH - протокол защищённого удалённого доступа к серверу (чтобы админ мог подключиться, ввести команды и управлять системой).
Прикладной слой:
- не думает о маршрутизаторах и MAC-адресах;
- воспринимает сеть как "канал, по которому можно передать запрос и получить ответ";
- реализует правила предметной области (бизнес-логики).
Маршрутизация пакетов в интернете
Как проходит путь от браузера до сайта (по слоям TCP/IP)
Теперь соберём это всё в одну историю: как данные проходят через интернет по слоям TCP/IP. Представим, что ты набрал в браузере адрес сайта и нажал Enter.
Опустим сейчас DNS (доменные имена), считаем, что браузер уже знает IP-адрес нужного сервера, но обязательно вернемся к этому позже.
Шаг 1. Прикладной слой
Браузер (приложение) формирует HTTP-запрос:
- метод (например, GET),
- адрес ресурса (/products),
- заголовки (какой браузер, язык и т.п.),
- при необходимости - тело запроса (JSON с данными формы).
Шаг 2. Транспортный слой
Браузер передаёт этот запрос операционной системе и говорит примерно так:
"Открой, пожалуйста, надёжное соединение (TCP) с IP-адресом сервера X на порт 443 (HTTPS). Вот данные, которые нужно отправить".
Операционная система:
- выбирает клиентский порт на нашей стороне (например, 50123),
теперь у нас есть сокет: наш_IP:50123; - устанавливает TCP-соединение:
наш_IP:50123 → IP_сервера:443; - разбивает данные (HTTP-запрос) на кусочки (TCP-сегменты), каждый сегмент помечает номерами, чтобы на той стороне их можно было собрать и проверить.
Шаг 3. Межсетевой слой
Каждый TCP-сегмент упаковывается в IP-пакет:
- адрес отправителя: наш IP;
- адрес получателя: IP сервера;
- служебные данные.
Операционная система смотрит:
- находится ли IP сервера в нашей локальной сети?
- если нет - пакет надо отправить на шлюз по умолчанию.
Шлюз по умолчанию - это IP-адрес нашего маршрутизатора (роутера), к которому подключена наша сеть (офис, дом).
Мы отправляем IP-пакет непосредственно роутеру, а роутер дальше решает, куда его девать.
Шаг 4. Канальный слой
Чтобы доставить IP-пакет роутеру, нам нужно:
- узнать MAC-адрес роутера (через ARP - "кто у нас в сети с IP 192.168.0.1?"),
- сформировать кадр Ethernet или Wi-Fi:
- MAC-адрес отправителя - наш адаптер,
- MAC-адрес получателя - роутер,
- внутри - IP-пакет.
Этот кадр отправляется по физической сети: по кабелю до коммутатора и дальше до роутера или по радиоканалу до Wi-Fi-точки, а затем по кабелю до роутера.
Шаг 5. Внутри интернета: цепочка маршрутизаторов
Дальше роутер:
- Принимает кадр, достаёт из него IP-пакет.
- Смотрит на IP-адрес назначения.
- По своей таблице маршрутов решает:
- "этот IP не в моей сети, надо переслать пакет следующему маршрутизатору".
Дальше всё повторяется:
- IP-пакет пересылается от маршрутизатора к маршрутизатору;
- на каждом отрезке между ними он упаковывается в свои кадры (Ethernet, оптика и т.п.);
- так он путешествует через сети провайдеров, магистральные сети, сеть дата-центра.
В конце:
- пакет попадает в локальную сеть дата-центра, где находится сервер;
- там уже маршрутизатор понимает: "IP сервера 10.0.5.12 - это моя локальная сеть, надо отправить пакет ему".
Дальше снова - кадр с MAC-адресом сервера, пересылка по локальной сети.
Шаг 6. Обработка на стороне сервера
На стороне сервера всё идёт вверх в обратном порядке. Надеемся, что суть тут ясна.