Ответ
TCP (Transmission Control Protocol) — это надежный протокол с установлением соединения. UDP (User Datagram Protocol) — это быстрый протокол без установления соединения (дейтаграммный).
| Сравнение TCP vs UDP: | Критерий | TCP | UDP |
|---|---|---|---|
| Надежность | Гарантирует доставку, порядок пакетов и контроль перегрузок. | Не гарантирует доставку, порядок или целостность данных. | |
| Установка соединения | Требует handshake (SYN, SYN-ACK, ACK). |
Соединение не устанавливается. | |
| Накладные расходы | Высокие (заголовки, подтверждения, повторные передачи). | Низкие (маленький заголовок). | |
| Скорость | Медленнее из-за обеспечения надежности. | Быстрее, подходит для реального времени. | |
| Использование | Веб (HTTP/HTTPS), email (SMTP), передача файлов (FTP). | Видеостриминг, VoIP, DNS-запросы, онлайн-игры. |
Пример создания сокетов на Python:
import socket
# TCP-клиент (надежный потоковый сокет)
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # SOCK_STREAM
tcp_socket.connect(("example.com", 80))
tcp_socket.send(b"GET / HTTP/1.1rnHost: example.comrnrn")
response = tcp_socket.recv(4096)
# UDP-клиент (быстрый дейтаграммный сокет)
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # SOCK_DGRAM
udp_socket.sendto(b"DNS Query", ("8.8.8.8", 53)) # Нет connect(), данные отправляются сразу
data, addr = udp_socket.recvfrom(1024)
Выбор протокола зависит от требований приложения: нужна ли гарантия доставки (TCP) или минимальная задержка (UDP).