TCP (Transmission Control Protocol) и UDP (User Datagram Protocol) — это два основных протокола транспортного уровня в стеке протоколов TCP/IP.
Основные различия:
| Характеристика | TCP | UDP |
|---|
| Тип соединения | Ориентированный на соединение (Connection-oriented) | Без установления соединения (Connectionless) |
| Надежность | Гарантированная доставка пакетов | Доставка не гарантирована |
| Контроль ошибок | Есть (передача и упорядочивание) | Нет |
| Контроль потока | Есть | Нет |
| Скорость | Медленнее | Быстрее |
| Размер заголовка | Больше (20-60 байт) | Меньше (8 байт) |
| Передача данных | Поток байт | Послания (датаграммы) |
| Использование | HTTP, FTP, SSH, электронная почта | DNS, DHCP, потоковое вещание, онлайн-игры |
Подробнее:
- Установление соединения: TCP требует предварительного установления соединения (трехстороннее рукопожатие) перед началом передачи данных. UDP отправляет данные без предварительных согласований.
- Надежность: TCP гарантирует доставку всех пакетов в правильном порядке. Если пакет утерян, TCP его повторно отправит. UDP не гарантирует доставку и порядок пакетов.
- Контроль ошибок и потока: TCP включает механизмы для обнаружения и исправления ошибок, а также для управления скоростью передачи, чтобы избежать перегрузки сети. UDP таких механизмов не имеет.
- Производительность: Из-за накладных расходов на установление соединения, контроль ошибок и потока, TCP медленнее UDP.
- Размер заголовка: Заголовок TCP содержит больше информации (номера последовательности, подтверждения, флаги, контрольная сумма и т.д.), что делает его больше заголовка UDP.
- Модель передачи данных: TCP воспринимает данные как непрерывный поток байт. UDP оперирует независимыми пакетами данных (датаграммами).
Пример представления данных в TCP (упрощенно):
java
Пример представления данных в UDP (упрощенно):
java