Ответ
TCP (Transmission Control Protocol) и UDP (User Datagram Protocol) — это транспортные протоколы, работающие поверх IP. В контексте Node.js выбор между ними влияет на архитектуру сетевых приложений.
TCP — надежный, с установкой соединения.
- Гарантии: Гарантирует доставку, целостность и порядок пакетов. Использует подтверждения (ACK), повторные передачи и контроль перегрузки.
- Соединение: Перед обменом данными устанавливается соединение (three-way handshake).
- Использование в Node.js: Модуль
netдля создания TCP-серверов и клиентов. Это основа для HTTP, WebSocket, баз данных (PostgreSQL, Redis протоколы). - Пример TCP-сервера:
const net = require('net'); const server = net.createServer((socket) => { socket.write('Echo serverrn'); socket.pipe(socket); // Эхо-ответ }); server.listen(1337, '127.0.0.1');
UDP — быстрый, без установки соединения.
- Гарантии: Не гарантирует доставку, порядок или целостность. Пакеты могут быть потеряны, продублированы или прийти в неправильном порядке.
- Соединение: Отправляет датаграммы без предварительного соединения.
- Использование в Node.js: Модуль
dgram. Идеален для сценариев, где скорость важнее надежности. - Пример UDP-сервера:
const dgram = require('dgram'); const server = dgram.createSocket('udp4'); server.on('message', (msg, rinfo) => { console.log(`Server got: ${msg} from ${rinfo.address}:${rinfo.port}`); }); server.bind(41234);
Когда что использовать?
- TCP: Веб-серверы (HTTP/HTTPS), API, электронная почта (SMTP), передача файлов (FTP), когда важна полная и точная доставка данных.
- UDP: Стриминг видео/аудио (VoIP, онлайн-игры), DNS-запросы, широковещательные рассылки, системы мониторинга в реальном времени, где допустима некоторая потеря пакетов.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶