📌 TCP
Transmission Control Protocol TCP — транспортный протокол уровня 4 модели OSI, обеспечивающий надёжную, упорядоченную и контролируемую доставку потока байт между двумя узлами.
🧠 Как работает
TCP устанавливает логическое соединение (сессия), гарантирует доставку и корректный порядок пакетов. Работает поверх IP и включает:
- Установку соединения через трёхстороннее рукопожатие (3-way handshake)
- Нумерацию байт и подтверждение доставки (ACK)
- Контроль перегрузки (Congestion Control)
- Контроль потока (Flow Control, windowing)
- Повторную передачу потерянных пакетов (Retransmission)
- Закрытие соединения по 4-фазному протоколу FIN/ACK
⚙️ Где применяется
Область | Примеры протоколов |
---|---|
Web | HTTP, HTTPS |
SMTP, IMAP, POP3 | |
Remote Access | SSH, Telnet |
File Transfer | FTP, SFTP |
Streaming (где важен порядок) | RTSP, SMB |
💻 Пример (Linux)
ss -t -a # показать все TCP-соединения
tcpdump -i eth0 'tcp port 80' # захват TCP-трафика HTTP
nmap -sT target.com # TCP connect scan
📐 Состояния TCP FSM
CLOSED → SYN_SENT → ESTABLISHED → FIN_WAIT → TIME_WAIT → CLOSED
↑ ↓
SYN_RCVD ← ACK
🧩 Структура TCP-заголовка
Поле | Назначение |
---|---|
Source/Dest Port | Идентификация приложений |
Sequence Number | Нумерация байтов |
ACK Number | Подтверждение полученного |
Flags | SYN, ACK, FIN, RST и др. |
Window Size | Контроль потока |
Checksum | Проверка целостности |
Options | Расширения (MSS, Window Scale и др) |
✅ Преимущества
-
Надёжная доставка данных
-
Автоматическая коррекция потерь и упорядочивание
❌ Недостатки
-
Задержки из-за подтверждений и контроля перегрузки
-
Невысокая эффективность при больших потерях (в отличие от UDP)
-
Не подходит для real-time без настройки параметров