Как пакет проходит путь от клиента до сервера через сеть?
Путь пакета от клиента до сервера — это последовательный процесс инкапсуляции данных на каждом уровне модели OSI, передачи через сетевые устройства с пере-инкапсуляцией на L2 и деинкапсуляции на стороне получателя.
Аналогия из жизни: отправка международной посылки. Вы пишете письмо (L7 — данные), кладёте в конверт с адресом (L4 — порт, L3 — IP), конверт в упаковку с адресом почтового отделения (L2 — MAC). На каждом перевалочном пункте меняется внешняя упаковка (L2), но внутренний конверт (L3/L4) остаётся прежним.
Рассмотрим полный путь HTTP-запроса от браузера к серверу www.example.com:
1. Разрешение DNS (L7)
- Браузер проверяет кэш → ОС проверяет кэш и
hosts→ DNS-резолвер (рекурсивный запрос) - Получаем IP:
93.184.216.34
2. Формирование HTTP-запроса (L7 — прикладной уровень)
Пример
GET /index.html HTTP/1.1
Host: www.example.com
3. Установление TCP-соединения (L4 — транспортный уровень)
- ОС выбирает эфемерный порт (например,
52431) - Three-way handshake: SYN → SYN-ACK → ACK
- Если HTTPS — дополнительно TLS handshake
4. Сегментация (L4)
- TCP разбивает данные на сегменты (обычно до MSS ~1460 байт)
- Каждый сегмент получает TCP-заголовок:
src port: 52431,dst port: 443, sequence number и т.д.
5. Добавление IP-заголовка (L3 — сетевой уровень)
- К каждому сегменту добавляется IP-заголовок:
src IP: 192.168.1.10,dst IP: 93.184.216.34, TTL, protocol=TCP - ОС проверяет таблицу маршрутизации:
93.184.216.34не в локальной сети → отправить на default gateway192.168.1.1
6. Определение MAC-адреса шлюза (L2)
- ОС знает IP шлюза:
192.168.1.1. Нужен его MAC-адрес - Проверяет ARP-кэш. Если нет — ARP-запрос (broadcast) → ARP-ответ
- Получает MAC:
AA:BB:CC:DD:EE:01
7. Формирование Ethernet-кадра (L2 — канальный уровень)
- Добавляется Ethernet-заголовок: src MAC (сетевой карты клиента), dst MAC (маршрутизатора), EtherType (IPv4)
- Добавляется FCS (контрольная сумма)
8. Передача по физической среде (L1 — физический уровень)
- Кадр преобразуется в электрические сигналы (витая пара), световые импульсы (оптоволокно) или радиоволны (Wi-Fi)
9. На маршрутизаторе (default gateway)
- Получает кадр, проверяет FCS, снимает L2-заголовок
- Смотрит IP назначения в таблице маршрутизации → определяет следующий hop
- NAT: заменяет src IP на публичный (
203.0.113.5:40001), записывает в NAT-таблицу - Создаёт новый L2-кадр с MAC следующего маршрутизатора
- Отправляет кадр дальше
10. Через Интернет (транзитные маршрутизаторы)
- Пакет проходит через несколько маршрутизаторов (hops), каждый повторяет шаг 9
- На каждом хопе L2-заголовок меняется (MAC-адреса), но L3 остаётся (IP-адреса, кроме NAT)
- TTL уменьшается на 1 на каждом хопе. Если TTL = 0 — пакет отбрасывается (защита от петель)
11. На сервере
- Пакет приходит, L2- и L3-заголовки снимаются (деинкапсуляция)
- TCP-стек собирает сегменты в поток данных, отправляет ACK
- TLS расшифровывает данные
- HTTP-запрос передаётся веб-серверу (приложению)
12. Ответ проходит обратный путь
Сервер формирует HTTP-ответ, который проходит все те же этапы в обратном направлении. NAT на маршрутизаторе клиента подставляет обратно приватный IP из NAT-таблицы.
Сводная схема инкапсуляции
Пример
L7: [HTTP-данные]
L4: [TCP-заголовок][HTTP-данные]
L3: [IP-заголовок][TCP-заголовок][HTTP-данные]
L2: [Eth-заголовок][IP-заголовок][TCP-заголовок][HTTP-данные][FCS]
L1: 01010111001010110... (биты → сигнал)
Что меняется на каждом хопе
| Уровень | Заголовки | Меняется на хопе? |
|---|---|---|
| L2 | MAC src/dst | Да, на каждом хопе |
| L3 | IP src/dst | Нет (кроме NAT) |
| L4 | Port src/dst | Нет (кроме PAT/NAPT) |
| L7 | HTTP-данные | Нет |
Вывод
Путь пакета от клиента до сервера — это процесс многоуровневой инкапсуляции, маршрутизации и деинкапсуляции. На каждом уровне добавляется свой заголовок, и на каждом промежуточном устройстве обрабатываются только релевантные уровни. Ключевой момент: MAC-адреса меняются на каждом хопе, а IP-адреса остаются неизменными (за исключением NAT).
На собеседовании: это классический вопрос «Что происходит, когда вы вводите URL в браузере?». Важно описать полную цепочку: DNS → TCP handshake → TLS handshake → HTTP-запрос → маршрутизация → ответ. Покажите понимание того, что L2-заголовки меняются на каждом хопе, а L3 — нет (кроме NAT). Этот вопрос проверяет глубину понимания сетевой модели.