UDP

Модель TCP/IP (RFC 1122)
Прикладний рівень
Транспортний рівень
Мережевий рівень
Канальний рівень
Цей шаблон:
  • переглянути
  • обговорити
  • редагувати

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, протокол маршрутизації інформації) та багато інших.

Див. також

Посилання

  • IANA Port Assignments [Архівовано 4 червня 2001 у Wayback Machine.]
  • IANA Port Assignments [Архівовано 24 травня 2012 у Wayback Machine.]
  • The Trouble with UDP Scanning (PDF) [Архівовано 6 листопада 2015 у Wayback Machine.]
  • Breakdown of UDP frame [Архівовано 22 січня 2009 у Wayback Machine.]
  • UDP on MSDN Magazine Sockets and WCF [Архівовано 21 квітня 2012 у Wayback Machine.]
  • UDP connections [Архівовано 28 квітня 2012 у Wayback Machine.]


{{{alt}}} Це незавершена стаття про комп'ютерні мережі.
Ви можете допомогти проєкту, виправивши або дописавши її.
Ця стаття потребує додаткових посилань на джерела для поліпшення її перевірності. Будь ласка, допоможіть удосконалити цю статтю, додавши посилання на надійні (авторитетні) джерела. Зверніться на сторінку обговорення за поясненнями та допоможіть виправити недоліки.
Матеріал без джерел може бути піддано сумніву та вилучено.
(червень 2017)

П:  Портал «Програмування» П:  Портал «Інформаційні технології»