← Назад к вопросам

В чем разница между TCP и UDP?

2.0 Middle🔥 181 комментариев
#API и сетевые протоколы

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Разница между TCP и UDP

TCP и UDP — это два основных транспортных протокола, работающих на слое 4 (транспортный слой) модели OSI. Они определяют, как данные передаются между компьютерами в сети.

TCP (Transmission Control Protocol)

Назначение: надежная передача данных с гарантией доставки и порядка.

Характеристики:

  • Соединение: требует установления соединения (three-way handshake: SYN, SYN-ACK, ACK)
  • Надежность: гарантирует доставку всех пакетов в правильном порядке
  • Проверка ошибок: использует механизмы контроля ошибок и повторной отправки
  • Скорость: медленнее, чем UDP из-за гарантий
  • Применение: веб-сайты (HTTP/HTTPS), email (SMTP, POP3), файловая передача (FTP), SSH

Процесс передачи:

  1. Установка соединения (handshake)
  2. Передача данных с подтверждением
  3. Закрытие соединения

Пример в Node.js:

const net = require('net');

const server = net.createServer((socket) => {
  console.log('Client connected');
  socket.write('Welcome to TCP server\n');
  
  socket.on('data', (data) => {
    console.log('Received:', data.toString());
    socket.write('Data received: ' + data);
  });
  
  socket.on('end', () => {
    console.log('Client disconnected');
  });
});

server.listen(3000, 'localhost');

UDP (User Datagram Protocol)

Назначение: быстрая передача данных без гарантии доставки.

Характеристики:

  • Соединение: без соединения (connectionless), отправляет данные сразу
  • Надежность: не гарантирует доставку пакетов, возможна потеря данных
  • Проверка ошибок: базовый контроль целостности, но без повторной отправки
  • Скорость: быстрее TCP благодаря отсутствию гарантий
  • Применение: видео-конференции, онлайн-игры, DNS, потоковая передача аудио

Пример в Node.js:

const dgram = require('dgram');

const server = dgram.createSocket('udp4');

server.on('message', (msg, rinfo) => {
  console.log('Message from', rinfo.address, ':', msg.toString());
  server.send('Data received', 0, 13, rinfo.port, rinfo.address);
});

server.bind(3000, 'localhost');

const client = dgram.createSocket('udp4');
client.send('Hello', 0, 5, 3000, 'localhost', (err) => {
  if (err) console.error(err);
  client.close();
});

Сравнительная таблица

ПараметрTCPUDP
СоединениеС соединениемБез соединения
НадежностьГарантирует доставкуМожет потерять пакеты
СкоростьМедленнееБыстрее
Порядок данныхГарантирует порядокМожет быть разный порядок
Контроль ошибокПолный контрольБазовый контроль
ИспользованиеHTTP, Email, FTPDNS, видео, игры
Размер заголовка20 байт8 байт

Когда использовать

Выбирайте TCP когда:

  • Надежность доставки критична (банки, платежи)
  • Порядок данных важен (файлы, документы)
  • Скорость менее критична
  • Требуется контроль потока данных

Выбирайте UDP когда:

  • Скорость критична (видео, игры)
  • Может быть потеря некоторых пакетов
  • Синхронизированная передача в реальном времени
  • Широковещательные или многоадресные передачи
В чем разница между TCP и UDP? | PrepBro