6.1 TCP
TCP обеспечивает надёжную, упорядоченную доставку данных между приложениями поверх ненадёжной сети IP. Соединение устанавливается через трёхстороннее рукопожатие (SYN → SYN‑ACK → ACK), после чего стороны обмениваются сегментами данных с подтверждениями.
Основные механизмы TCP
- Надёжность: положительные подтверждения (ACK), повторные передачи при тайм‑аутах (RTO), скользящее окно.
- Контроль потока: rwnd (receiver window) ограничивает объём не подтверждённых данных с учётом буфера приёмника.
- Управление перегрузкой: cwnd (congestion window), медленный старт, избегание перегрузок, fast retransmit/fast recovery.
- Упорядочивание: нумерация байтов, сборка потока в верном порядке, отбраковка дубликатов.
- Оптимизации: Delayed ACK, Nagle, Window Scaling (RFC 7323), SACK.
Структура заголовка TCP (ключевые поля)
- Порты источника/назначения, номера последовательности и подтверждения.
- Флаги: SYN/ACK/FIN/RST/PSH/URG, размер окна, контрольная сумма, опции (MSS, WS, SACK Permitted, TSopt).
# Наблюдение за TCP-соединениями
# Windows
netstat -ano | findstr ESTABLISHED
# Linux/macOS
ss -tn state established
6.2 UDP
UDP — простой дейтаграммный протокол без установления соединения и подтверждений. Минимальные накладные расходы и отсутствие механизма восстановления потерь делают его подходящим для приложений, где критичны задержки и допускаются потери: голос/видео в реальном времени, DNS, игры.
Особенности UDP
- Заголовок 8 байт: порты источника/назначения, длина, контрольная сумма (обязательна в IPv6).
- Отсутствие порядка/доставки: логика повторов и упорядочивания реализуется приложением при необходимости.
- Use‑cases: QUIC/HTTP/3 (на базе UDP), DNS, RTP/SRTP.
6.3 Порты
Порты (0–65535) определяют конечную точку взаимодействия на хосте и совместно с IP‑адресом образуют сокет. Диапазоны: известные (0–1023), зарегистрированные (1024–49151), динамические/частные (49152–65535).
Практические аспекты
- Сокеты: {srcIP:srcPort → dstIP:dstPort} уникально идентифицируют соединение TCP.
- Эфемерные порты: динамически выделяются клиентам для исходящих соединений.
- Безопасность: фильтрация/ограничение открытых портов, принцип наименьших привилегий.
# Просмотр прослушиваемых портов
# Windows
netstat -ano | findstr LISTENING
# Linux/macOS
ss -tulpen
6.4 Для профессионалов
- Window Scaling: расширяет размер окна и повышает Throughput на высоколатентных каналах.
- QUIC (HTTP/3): транспорт поверх UDP с шифрованием и мультиплексированием потоков.
Поздравляем!
Теперь вы умеете объяснять различия TCP/UDP, интерпретировать состояния соединений и работать с портами в диагностике.