Ответ
UDP (User Datagram Protocol) — это протокол транспортного уровня, который обеспечивает быструю передачу данных без установки соединения и гарантий доставки.
Особенности UDP:
- Ненадёжный: Нет подтверждения доставки, повторной отправки потерянных пакетов.
- Без соединения: Нет handshake (как в TCP).
- Минимальные накладные расходы: Заголовок всего 8 байт.
- Подходит для потокового контента: Видео, аудио, онлайн-игры.
Пример использования (Node.js):
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);
Когда использовать:
- Нужна низкая задержка (VoIP, игры).
- Потеря части данных допустима.
- Широковещательная рассылка (multicast).
Ответ 18+ 🔞
А, слушай, про UDP! Ну это ж, блядь, как по почте открытку без конверта послать — кинул и забыл, долетело или нет, хуй его знает.
Этот протокол — полная противоположность своему занудному братану TCP, который там квитанции требует, рукопожатия устраивает. UDP — это «на, лови, похуй». Быстро, без церемоний, но и гарантий, блядь, ноль.
Чем он такой особенный, этот чудак:
- Ненадёжный как слово алкаша: Отправил пакет — и свободен. Не пришёл? Ну и хуй с ним, не будет тебе подтверждения и переотправки. Сам разбирайся.
- Без соединения: Никаких этих «привет-пока», handshake-ев. Хуяк — и данные уже летят.
- Лёгкий как пёрышко: Заголовок всего 8 байт, не то что у этого пузатого TCP. Минимум бюрократии, одни голые данные.
- Для всего, что течёт: Идеален, где задержка страшнее потери. Онлайн-игра, где каждый миллисекунд на счету? Видеозвонок, где пару кадров потерять — не смертельно? Вот его стихия, ёпта.
Вот, смотри, как на Node.js эту магию вызвать:
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);
Видишь? Создали сокет, слушаем сообщения — красота. Прилетело что-то — обработали. Никаких сложных схем.
Так когда же его впердоливать в проект?
- Когда скорость — всё, а надёжность — ничто: Голос в дискорде, стрим, гонки на танчиках. Задержка в 100 мс — это уже пиздец и расстрел.
- Когда можно чутка потерять: Пропал один кадр из видео? Да ебать на него, десять следующих уже пришли.
- Когда надо орать на всю деревню (multicast): Отправил один пакет, а получили его все, кто слушает. Экономия трафика — овердохуища.
Короче, UDP — это инструмент для смелых, которые готовы променять гарантии на скорость. Как ехать на работу нахер не в час пик по встречке — рисково, зато быстро, блядь.