TCP — это протокол транспортного уровня, который обеспечивает надёжную передачу данных между устройствами. TCP использует установку соединения, контроль потока и подтверждение доставки, что гарантирует передачу данных в правильном порядке без потерь.
Заголовок TCP включает несколько полей для управления соединением и надёжной передачей данных:
| Поле | Описание | Размер |
|---|---|---|
| Source Port | Порт отправителя | 16 бит |
| Destination Port | Порт получателя | 16 бит |
| Sequence Number | Номер последовательности для упорядочивания сегментов | 32 бита |
| Acknowledgment Number | Номер подтверждения доставки данных | 32 бита |
| Data Offset | Указывает размер заголовка | 4 бита |
| Flags | Флаги для управления соединением (например, SYN, ACK, FIN) | 6 бит |
| Window Size | Размер окна для управления потоком | 16 бит |
| Checksum | Контрольная сумма для проверки целостности данных | 16 бит |
| Urgent Pointer | Указатель на срочные данные | 16 бит |
| Options | Дополнительные параметры, такие как масштабирование окна | Переменный |
UDP — это более простой протокол транспортного уровня, который обеспечивает передачу данных без установления соединения и гарантии доставки. UDP подходит для приложений, требующих минимальной задержки и устойчивых к потерям данных, таких как голосовые и видеопотоки.
Заголовок UDP содержит минимальные данные для упрощения передачи:
| Поле | Описание | Размер |
|---|---|---|
| Source Port | Порт отправителя | 16 бит |
| Destination Port | Порт получателя | 16 бит |
| Length | Длина заголовка и данных | 16 бит |
| Checksum | Контрольная сумма для проверки целостности данных | 16 бит |
Протоколы TCP и UDP решают различные задачи транспортного уровня. TCP обеспечивает надёжность, упорядочение и контроль потока, но имеет более высокие накладные расходы и задержки. UDP обеспечивает минимальные накладные расходы и быструю передачу, но не гарантирует доставку данных. Выбор протокола зависит от требований приложения к надёжности и скорости передачи.