Ответ
TCP (Transmission Control Protocol) и UDP (User Datagram Protocol) — это транспортные протоколы стека TCP/IP с фундаментально разными подходами к доставке данных.
| Характеристика | TCP | UDP |
|---|---|---|
| Соединение | Установка соединения (handshake) | Без установки соединения (connectionless) |
| Надежность | Гарантированная, с подтверждениями и повторной отправкой | Без гарантий (возможна потеря пакетов) |
| Порядок данных | Гарантирует порядок доставки | Не гарантирует порядок |
| Контроль перегрузки | Есть, регулирует скорость отправки | Отсутствует |
| Заголовок | Больше (20+ байт), содержит управляющую информацию | Меньше (8 байт) |
| Использование | HTTP/HTTPS, SSH, FTP, Email (SMTP/IMAP) | DNS, VoIP (SIP), видеостриминг, онлайн-игры |
Почему такие различия? TCP жертвует скоростью ради надежности, что критично для веб-страниц или файлов. UDP жертвует надежностью ради минимальной задержки, что важно для реального времени.
Пример создания сокетов на Python:
import socket
# TCP-сокет (надежный, потоковый)
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_socket.connect(("example.com", 80))
# UDP-сокет (быстрый, дейтаграммный)
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_socket.sendto(b"Hello", ("example.com", 53))
Практический выбор:
- Используйте TCP, когда важна целостность данных (загрузка файла, отправка формы).
- Используйте UDP, когда важна низкая задержка и некоторые потери допустимы (видеозвонок, игровая позиция).