Що таке UDP і як працює цей протокол?

Автор: Опубліковано

Коротко: 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 також не гарантує успішного виконання всієї бізнес-операції, наприклад збереження замовлення.

ХарактеристикаUDPTCP
Встановлення з’єднанняНе передбачене самим протоколомОбов’язкове
Спосіб передавання данихОкремі датаграмиПотік байтів
Повторне передавання втрачених данихБез автоматичного повторенняВбудоване
Порядок данихНе гарантованийЗберігається в потоці
Контроль перевантаженняНе передбачений самим UDPВбудований

Твердження «UDP швидший за TCP» — це спрощення. UDP має менший заголовок і не чекає на підтвердження, але фактичні затримки залежать також від мережі та архітектури застосунку. Коли програма мусить сама підтверджувати отримання й повторно надсилати кожне повідомлення, частина цієї переваги може зникнути.

Уявіть гру, у якій клієнт регулярно отримує дані про позицію супротивника. Якщо одне оновлення загубиться, новіше може бути кориснішим за повторне надсилання старого. Натомість інформація про купівлю предмета потребує підтвердження та захисту від подвійного виконання операції — сам UDP цього не забезпечить.

Де UDP використовується на практиці?

UDP використовують у багатьох службах, хоча конкретні особливості залежать від програми та умов у мережі:

HTTP/3 показує, що «працює поверх UDP» не означає «може без наслідків втрачати вміст сторінки». Гарантії, яких немає в UDP, може забезпечувати рівень над ним.

Як перевірити, чи потрібен застосунку UDP?

Якщо ви налаштовуєте маршрутизатор або міжмережевий екран, перевірте в документації застосунку потрібний протокол, порт і напрямок трафіку. Порт TCP і порт UDP з однаковим номером — це окремі точки обміну даними: дозвіл для TCP не розблокує автоматично UDP.

Не відкривайте обидва протоколи «про всяк випадок». Звичайне вихідне з’єднання зазвичай не потребує ручного перенаправлення порту, а от надання доступу до сервера в домашній мережі може цього потребувати. Спершу з’ясуйте, чи програма лише підключається до служби, чи має приймати трафік з інтернету — від цього залежить правильне налаштування.

Дивіться також: Що таке GitLab?

Читайте також

Дізнайтеся, як PHP-FPM обробляє запити PHP, чим відрізняється від вебсервера та як налаштувати процеси під трафік і ресурси хостингу.
Дізнайтеся, як BIND обслуговує DNS, чим відрізняються його серверні ролі та коли варто розгортати його самостійно замість керованої послуги.
Дізнайтеся, що означають польський реєстр і номер REGON, чим вони відрізняються від NIP та KRS і як перевірити дані підприємства.