Протокол дейтаграм користувача
Матеріал з Вікіпедії — вільної енциклопедії.
»
Програмний рівень | HTTP, SMTP, FTP, SSH, IRC, SNMP, SIP, IMAP ... |
Транспортний рівень | TCP, UDP, SCTP, RTP, DCCP ... |
Мережевий рівень | IPv4, IPv6, ARP, ICMP ... |
Канальний рівень | Ethernet, 802.11a/b/g WiFi , Token ring, FDDI, ... |
Протокол дейтаграм користувача (англ. User Datagram Protocol, UDP)
Протокол дейтаграм користувача (UDP, User Datagram Protocol) є одним з протоколів у стеку TCP/IP. Від протоколу TCP він відрізняється тим, що працює без встановлення з'єднання. UDP - це один з найпростіших протоколів транспортного рівня моделі OSI, котрий виконує обмін дейтаграмами без підтвердження та гарантії доставки. При використанні протоколу 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. UDP забезпечує дуже простий інтерфейс між мережним та програмним рівнями. UDP не гарантує доставку повідомлень, та відправник не запам'ятовує стан вже відісланих повідомлень. З цієї причини протокол UDP іноді розшифровують як <<Unreliable Datagram Protocol>>(протокол ненадіних дейтаграм). Якщо на базі UDP треба організувати надійну передачу даних, то для цього необхідно залучити протоколи більш високого рівня.
+ | Біти 0 - 15 | 16 - 31 | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Порт відправника | Порт одержувача | ||||||||||||||||||||||||||||||
32 | Розмір | Контрольна сума | ||||||||||||||||||||||||||||||
64 | Дані |
Заголовок 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, протокол маршрутизації інформації) та багато інших.