Ответ
TCP (Transmission Control Protocol) и UDP (User Datagram Protocol) — это транспортные протоколы уровня L4 модели OSI/TCP-IP. Их основное различие — в подходе к надежности доставки данных.
| Критерий | TCP (Надежный, с установкой соединения) | UDP (Быстрый, без установки соединения) |
|---|---|---|
| Соединение | Требует установки соединения (3-way handshake). | Работает без установки соединения (датаграммы). |
| Гарантии | Гарантирует доставку, порядок пакетов и контроль целостности. | Не гарантирует доставку, порядок или отсутствие дубликатов. |
| Контроль перегрузки | Есть. Динамически регулирует скорость передачи. | Нет. Отправляет данные с максимально возможной скоростью. |
| Накладные расходы | Высокие (заголовок 20+ байт, подтверждения, повторные передачи). | Низкие (заголовок 8 байт). |
| Использование | HTTP(S), FTP, SSH, SMTP — где важна надежность. | DNS, VoIP (Zoom, Skype), онлайн-игры, стриминг — где важна скорость и низкая задержка. |
Пример сокета UDP в PHP (отправка):
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
$message = 'Данные для быстрой отправки';
$targetIp = '192.168.1.100';
$targetPort = 9000;
// sendto — отправка без установки соединения
socket_sendto($socket, $message, strlen($message), 0, $targetIp, $targetPort);
socket_close($socket);
Выбор протокола:
- Выбирайте TCP, когда критически важна полнота и точность данных (веб-страницы, файлы, команды).
- Выбирайте UDP, когда важнее минимальная задержка (latency) и потеря отдельных пакетов некритична (видеозвонок, игровая позиция).
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶