Ответ
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-запросы, широковещательные рассылки, системы мониторинга в реальном времени, где допустима некоторая потеря пакетов.
Видео-ответы
▶
Реальное Техническое Собеседование с ВК на Senior Php Разработчика
▶
Собеседование на Golang 300к
▶
РЕАЛЬНОЕ СОБЕСЕДОВАНИЕ В OZON ч.3 Техничесий скрининг на го. Потрачено.
▶
MIDDLE DEVOPS | MOCK СОБЕСЕДОВАНИЯ
▶
Моковое собеседование на Middle Golang разработчика | Solvery & Uproger
▶
Golang живое собеседование Middle Go разработчика!
▶
Тестовое собеседование на позицию Go-разработчика / Ingternet
▶
Собеседование middle backend php
▶
Linux, Базы Данных, Сети. СОБЕСЕДОВАНИЕ Middle DevOps инженера. Часть 2.
▶
Открытое собеседование на Go-разработчика | Анонс менторской программы
▶
Парень к 16-ти годам изучил Linux и DevOps и занимается пентестом? / Техсобес Junior DevOps Engineer
▶
Tech Interview Fest | Моковое cобеседование для Go Junior | Solvery + Go-go! | Владимир Балун, Ozon
▶
Реальное собеседования DevOps инженер Junior++