Що таке UDP і як працює цей протокол?
Автор: Редакція Domeny.ForSale Опубліковано
Коротко: UDP — це мережевий протокол, який передає невеликі порції даних без попереднього встановлення з’єднання. Сам він не підтверджує їх отримання, не надсилає втрачені пакети повторно й не забезпечує правильного порядку доставки. Він корисний там, де актуальність даних і малі затримки важливіші за відновлення кожної втраченої порції — наприклад, у голосових розмовах та онлайн-іграх.
Як працює UDP і що таке датаграма?
UDP, тобто User Datagram Protocol, — це протокол транспортного рівня: він визначає спосіб передавання даних між застосунками через мережу. Він працює на основі IP — протоколу, що відповідає за адресацію та передавання пакетів між пристроями. IP допомагає доставити дані до потрібного вузла, а UDP використовує номери портів, щоб спрямувати їх до відповідної служби чи застосунку.
Окреме повідомлення UDP — це датаграма. Вона містить дані застосунку та заголовок із такими відомостями, як порт джерела, порт призначення й довжина повідомлення. Заголовок UDP має розмір 8 байтів; для передавання через мережу потрібні також заголовки інших рівнів, зокрема IP.
Відправник надсилає датаграму на вибрану IP-адресу й номер порту. UDP не виконує попереднього узгодження з’єднання з одержувачем, яке називають handshake. Однак це не означає, що застосунок, який використовує UDP, не може мати входу в обліковий запис, сеансів або власного етапу узгодження обміну даними.
UDP зберігає межі повідомлень: дві надіслані датаграми не перетворюються на один потік байтів. Проте одержувач може отримати їх у зворотному порядку, отримати дублікат або не отримати жодної з них.
Чого UDP не гарантує?
Успішне надсилання датаграми застосунком не доводить, що одержувач її отримав. Пакет може загубитися, зокрема через перевантаження мережі, роботу міжмережевого екрана або відсутність програми, яка очікує дані на відповідному порту. Сам UDP не виправляє такої ситуації.
Протокол також не забезпечує керування потоком, тобто узгодження швидкості надсилання з можливостями одержувача, і не контролює перевантаження мережі. Якщо застосунку потрібні ці функції, він має використовувати додаткові механізми. Надсилання дедалі більшого обсягу даних без реагування на втрати може погіршити обмін даними, а не прискорити його.
UDP не шифрує дані й не підтверджує особу відправника. Конфіденційність та автентифікацію можуть забезпечувати протоколи, які працюють поверх нього, наприклад DTLS або QUIC. Тож відсутність цих функцій у самому UDP не означає, що кожна служба, яка його використовує, передає інформацію без захисту.
UDP і TCP: коли різниця має значення?
TCP, тобто Transmission Control Protocol, — інший широко використовуваний транспортний протокол. Він встановлює з’єднання й надає застосунку впорядкований потік байтів, автоматично повторюючи передавання втрачених даних. Якщо обмін даними неможливо продовжити, він може завершитися помилкою. TCP також не гарантує успішного виконання всієї бізнес-операції, наприклад збереження замовлення.
| Характеристика | UDP | TCP |
|---|---|---|
| Встановлення з’єднання | Не передбачене самим протоколом | Обов’язкове |
| Спосіб передавання даних | Окремі датаграми | Потік байтів |
| Повторне передавання втрачених даних | Без автоматичного повторення | Вбудоване |
| Порядок даних | Не гарантований | Зберігається в потоці |
| Контроль перевантаження | Не передбачений самим UDP | Вбудований |
Твердження «UDP швидший за TCP» — це спрощення. UDP має менший заголовок і не чекає на підтвердження, але фактичні затримки залежать також від мережі та архітектури застосунку. Коли програма мусить сама підтверджувати отримання й повторно надсилати кожне повідомлення, частина цієї переваги може зникнути.
Уявіть гру, у якій клієнт регулярно отримує дані про позицію супротивника. Якщо одне оновлення загубиться, новіше може бути кориснішим за повторне надсилання старого. Натомість інформація про купівлю предмета потребує підтвердження та захисту від подвійного виконання операції — сам UDP цього не забезпечить.
Де UDP використовується на практиці?
UDP використовують у багатьох службах, хоча конкретні особливості залежать від програми та умов у мережі:
- Голосові розмови й відеоконференції: фрагмент звуку, що надійшов із запізненням, може бути менш корисним, ніж коротка пауза, яку застосунок маскує.
- Онлайн-ігри: часті оновлення стану можна передавати, не чекаючи на відновлення попередніх даних.
- DNS, тобто система доменних імен: багато запитів і відповідей передаються через UDP, але DNS використовує також TCP, а її зашифровані варіанти залучають додаткові протоколи.
- HTTP/3: використовує QUIC, який працює поверх UDP і додає, зокрема, шифрування, надійне передавання потоків та контроль перевантаження.
HTTP/3 показує, що «працює поверх UDP» не означає «може без наслідків втрачати вміст сторінки». Гарантії, яких немає в UDP, може забезпечувати рівень над ним.
Як перевірити, чи потрібен застосунку UDP?
Якщо ви налаштовуєте маршрутизатор або міжмережевий екран, перевірте в документації застосунку потрібний протокол, порт і напрямок трафіку. Порт TCP і порт UDP з однаковим номером — це окремі точки обміну даними: дозвіл для TCP не розблокує автоматично UDP.
Не відкривайте обидва протоколи «про всяк випадок». Звичайне вихідне з’єднання зазвичай не потребує ручного перенаправлення порту, а от надання доступу до сервера в домашній мережі може цього потребувати. Спершу з’ясуйте, чи програма лише підключається до служби, чи має приймати трафік з інтернету — від цього залежить правильне налаштування.
Дивіться також: Що таке GitLab?
