UDP

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

User Datagram Protocol, UDP (укр. Протокол датаграм користувача) — один із протоколів в стеку TCP/IP. Від протоколу TCP він відрізняється тим, що працює без встановлення з'єднання. UDP — це один з найпростіших протоколів транспортного рівня моделі OSI, котрий виконує обмін повідомленнями (датаграмами — англ. datagram) без підтвердження та гарантії доставки. При використанні протоколу UDP відповідальність за обробку помилок і повторну передачу даних покладена на протокол рівнем вище. Але попри всі недоліки, протокол UDP є ефективним для серверів, що надсилають невеликі відповіді великій кількості клієнтів.

Протокол UDP використовують такі сервіси та протоколи вищого рівня:

  • TFTP (англ. Trivial File Transfer Protocol, найпростіший протокол передачі файлів),
  • SNMP (англ. Simple Network Management Protocol, простий протокол управління мережею),
  • DHCP (англ. Dynamic Host Configuration Protocol, протокол динамічної конфігурації вузла),
  • DNS (англ. Domain Name System, служба доменних імен).

Також цей протокол може використовуватися для різноманітних мережевих ігор реального часу, потокового відео та аудіо, інших типів даних.

Технічний огляд[ред. | ред. код]

UDP є одним з найпростіших протоколів транспортного рівня моделі OSI. Його детальний опис можна знайти в IETF RFC 768 [Архівовано 12 лютого 2006 у Wayback Machine.]. UDP забезпечує дуже простий інтерфейс між мережним та програмним рівнями. UDP не гарантує доставку повідомлень, та відправник не запам'ятовує стан вже відісланих повідомлень. З цієї причини протокол UDP іноді розшифровують як «Unreliable Datagram Protocol» (протокол ненадійних датаграм). Якщо на базі UDP треба організувати надійну передачу даних, то для цього необхідно залучити протоколи більш високого рівня.

Заголовок UDP-конверту складається з 4 полів, з яких 2 є опціональними. «Порт відправника» та «контрольну суму» — це 16-бітні поля, котрі ідентифікують відправляючий та одержуючий процеси. «Порт відправника» є необов'язковим, оскільки UDP працює без встановлення з'єднання та відправник може не потребувати відповіді. В такій ситуації «порт відправника» повинен дорівнювати нулю. Номери портів як правило зарезервовані за службами.

Поле «Розмір» є обов'язковим, воно визначає довжину усієї UDP-дейтаграми в байтах, з полем «Дані» включно. Мінімальне значення цього поля дорівнює 8 байт.

Останнє поле заголовка довжиною 16 біт містить у собі контрольну суму заголовка і поля даних. «Контрольна сума» теж є необов'язковим полем, але на практиці воно майже завжди використовується.

Програми, що використовують UDP як транспортний протокол, мають бути готові до помилок, втрати деяких конвертів та повторної передачі даних. Деякі програми, такі як TFTP, можуть використовувати додаткові програмні механізми для підвищення надійності передачі. Але у більшості випадків для таких програм надійність не є необхідною і може навіть завадити уповільненням зв'язку. Потокове відео, ігри реального часу та VoIP (голос поверх IP) є прикладами програм, що дуже часто використовують UDP. Якщо ж програма потребує високого рівня надійності, то може використовуватися такий протокол як TCP або надлишковість коду, за допомогою якої можна знаходити помилки при передачі даних.

Оскільки у протоколі UDP відсутній будь-який контрольний механізм запобігання перевантаженням, мережні механізми повинні мати засоби для зменшення ефекту потенційних перевантажень від великого, неконтрольованого потоку UDP-трафіку. Кажучи інакше, оскільки UDP-відправники не спроможні виявляти перевантаженість, єдиним інструментом для призупинення надмірного UDP-трафіку залишаються мережні елементи, такі як роутери, що використовують «черги конвертів» та «відкидання конвертів». DCCP (англ. Datagram Congestion Control Protocol, протокол контролю навантаженості датаграм) був створений як часткове рішення цієї проблеми. Він контролює навантаження на кінцевих вузлах високошвидкісних потоків UDP-трафіку, наприклад, потокового відео.

Хоча кількість UDP-трафіку в типовій мережі сягає лишень кількох відсотків, проте багато важливих програм використовують UDP. Серед них: DNS (Domain Name System, служба доменних імен), SNMP (англ. Simple Network Management Protocol, простий протокол управління мережею), DHCP (англ. Dynamic Host Configuration Protocol, протокол динамічної конфігурації вузла), RIP (англ. Routing Information Protocol, протокол маршрутизації інформації) та багато інших.

Див. також[ред. | ред. код]

Посилання[ред. | ред. код]