Стек TCP/IP: полное погружение в протоколы передачи данных

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

TCP/IP модель
v

Модель TCP/IP vs OSI

В отличие от теоретической модели OSI (7 уровней), TCP/IP имеет 4 уровня, которые отражают реальные протоколы:

Уровень сетевых интерфейсов: Ethernet и MAC-адреса

Этот уровень отвечает за передачу кадров между устройствами в одной физической сети. Ethernet-кадр содержит MAC-адреса источника и назначения, тип протокола (например, 0x0800 для IPv4) и CRC для проверки целостности.

Пример Ethernet-кадра (упрощённо):
┌─────────┬─────────┬─────────┬─────────┬─────────┐
│ MAC dest│ MAC src │  Type   │  Payload│   CRC   │
│ 6 bytes │ 6 bytes │ 2 bytes │ 46-1500 │ 4 bytes │
└─────────┴─────────┴─────────┴─────────┴─────────┘

Межсетевой уровень: IP, маршрутизация и фрагментация

IP-пакет содержит IP-адреса источника и назначения. В отличие от MAC-адресов, IP-адреса могут быть маршрутизируемыми между разными сетями. Важные поля IPv4-заголовка:

ICMP — диагностический протокол

ICMP используется для утилит ping и traceroute. Типы сообщений: Echo Request (8), Echo Reply (0), Destination Unreachable (3), Time Exceeded (11).

ARP — от IP к MAC

ARP (Address Resolution Protocol) позволяет узнать MAC-адрес по IP-адресу внутри одной сети. Когда компьютер хочет отправить пакет, он проверяет ARP-кэш. Если записи нет, отправляется ARP-запрос (broadcast).

# Просмотр ARP-таблицы в Windows/Linux
arp -a

Транспортный уровень: TCP vs UDP

TCP — надёжная доставка с установкой соединения

TCP обеспечивает гарантированную доставку, контроль порядка пакетов, устранение дубликатов и контроль перегрузки. Процесс установки соединения — трёхэтапное рукопожатие (Three-Way Handshake):

Клиент --- SYN (seq=x) ---> Сервер
Клиент <--- SYN+ACK (seq=y, ack=x+1) --- Сервер
Клиент --- ACK (ack=y+1) ---> Сервер

Основные поля TCP-сегмента: Source Port, Destination Port, Sequence Number, Acknowledgment Number, Flags (SYN, ACK, FIN, RST, PSH, URG), Window Size.

UDP — быстрая, но ненадёжная доставка

UDP не устанавливает соединение, не подтверждает получение и не восстанавливает потери. Зато он быстрее и имеет меньшие накладные расходы (8 байт заголовка против 20+ у TCP). Используется в DNS, VoIP, видеоконференциях, потоковом видео, DHCP.

Прикладной уровень: HTTP/HTTPS, DNS

DNS — преобразование имён в IP

DNS работает поверх UDP (иногда TCP для больших ответов). Рекурсивный запрос: ваш компьютер спрашивает DNS-резолвер, тот идёт к корневым серверам, потом к TLD-серверам (.ru, .com), потом к авторитативным. Кэширование на всех уровнях ускоряет работу.

# Проверка DNS
nslookup setevyetehnologii.ru
dig setevyetehnologii.ru

HTTP/HTTPS — передача веб-контента

HTTP — текстовый протокол поверх TCP (порт 80). HTTPS добавляет шифрование TLS поверх TCP (порт 443). Пример HTTP-запроса:

GET /index.php HTTP/1.1
Host: setevyetehnologii.ru
User-Agent: Mozilla/5.0
Accept: text/html

Практика: анализ трафика в Wireshark

Запустите Wireshark на интерфейсе, выполните ping google.com и посмотрите:

Откройте любой сайт — увидите TCP Three-Way Handshake, затем HTTP-запрос и ответ, затем TCP FIN для закрытия соединения.

Частые проблемы и диагностика

Заключение: TCP/IP — это фундамент, на котором построены все современные сети. Понимание того, как пакеты инкапсулируются, маршрутизируются и доставляются, поможет вам быстро находить неисправности и проектировать эффективные сети. Держите Wireshark под рукой и анализируйте реальный трафик — это лучший способ обучения.