Инкапсуляция: как данные оборачиваются по уровням
Понимаем, как данные «оборачиваются» заголовками при спуске по уровням и разворачиваются на приёмнике.
Инкапсуляция — это процесс, при котором каждый уровень добавляет к данным свой заголовок (и иногда хвост), оборачивая то, что пришло сверху, как письмо в конверт.
Матрёшка из заголовков
Когда вы отправляете HTTP-запрос, данные не летят «голыми». На каждом уровне к ним приклеивается служебная информация — заголовок (header). Сверху вниз это выглядит как вложение конвертов друг в друга:
Прикладной: [ HTTP-данные ]
Транспортный: [ TCP-заголовок | HTTP-данные ] -> сегмент
Сетевой: [ IP-заголовок | TCP | HTTP-данные ] -> пакет
Канальный: [ Ethernet | IP | TCP | HTTP-данные | CRC ] -> кадр
Физический: 1010101011100101... -> биты/сигнал
Каждый уровень видит то, что пришло сверху, как непрозрачную «полезную нагрузку» (payload) и не вникает в её содержимое. Он лишь добавляет свой заголовок с нужной ему информацией: транспортный — номера портов, сетевой — IP-адреса, канальный — MAC-адреса.
Терминология: как называют данные на каждом уровне
Это любимый вопрос на собеседовании. У «единицы данных» на каждом уровне своё имя:
| Уровень | Имя единицы данных (PDU) | Что добавляется |
| Прикладной | данные / сообщение (data) | — |
| Транспортный | сегмент (TCP) / датаграмма (UDP) | порты, номера последовательности |
| Сетевой | пакет (packet) | IP-адреса источника и назначения |
| Канальный | кадр (frame) | MAC-адреса, контрольная сумма |
| Физический | биты (bits) | — |
Декапсуляция на приёмнике
На принимающей стороне всё происходит в обратном порядке — декапсуляция. Кадр приходит на канальный уровень, тот снимает свой заголовок и отдаёт пакет наверх; сетевой снимает IP-заголовок и отдаёт сегмент; транспортный — отдаёт данные приложению. Каждый уровень «вскрывает свой конверт» и не трогает чужие.
Аналогия с почтой
Письмо (данные) кладут в конверт с адресом квартиры (порт), конверт — в коробку с адресом дома и улицы (IP), коробку грузят в машину с маршрутным листом (MAC до следующего узла). Почтальон на каждом этапе читает только «свой» адрес. Получатель вскрывает всё в обратном порядке и достаёт письмо.
Почему это важно на практике
- MTU и фрагментация: у кадра есть максимальный размер (обычно 1500 байт). Если данные больше — их режут на части. Отсюда понятие MTU, которое всплывает при настройке VPN.
- Накладные расходы: каждый заголовок — это лишние байты. Поэтому слать миллион крошечных запросов дороже, чем один большой.
- Инструменты: Wireshark показывает именно эту матрёшку — вы видите вложенные заголовки Ethernet → IP → TCP → HTTP.
Итог
- Инкапсуляция — добавление заголовка на каждом уровне при спуске вниз.
- Единицы данных: данные → сегмент → пакет → кадр → биты.
- На приёме идёт обратный процесс — декапсуляция.
- Каждый уровень читает только свой заголовок и не вникает в payload.