UDP
Протокол дэйтаграмм користувача UDP (User Datagram Protocol) є протоколом транспортного рівня і базується на можливостях, наданих міжмережевим протоколом IP. Основна задача TCP - забезпечення "швидкої" передачі даних у мережі. Його транспортна адреса в заголовку IP-сегмента дорівнює 17.
Його основні характеристики перераховані нижче:
- реалізує взаємодію в режимі без встановлення логічного (віртуального) з'єднання;
- організує поблочний (дэйтаграммный, пакетний) тип передачі даних;
- для ідентифікації партнерів по взаємодії на транспортному рівні використовує 16-бітові "номери портів";
- не гарантує надійної передачі даних (можлива як утрата UDP-пакетів, так і їхнє дублювання);
- не має засобів повідомлення джерела UDP-пакета про правильність/помилковості в його прийомі адресатом;
- не забезпечує правильний порядок доставки UDP-пакетів від джерела до приймача;
- може гарантувати цілісність даних у UDP-пакеті за рахунок використання контрольної суми;
- дуже простий (особливо, у порівнянні з протоколом TCP).
Слід зазначити, що, по суті справи, протокол транспортного рівня UDP відіграє роль інтерфейсу для прикладних програм до засобів протоколу міжмережевого рівня IP.
Формат заголовка UDP-пакета.
0 15 31 +------------------------------+-------------------------------+ | Порт джерела | Порт приймача | +------------------------------+-------------------------------+ | Довжина | Контрольна сума | +------------------------------+-------------------------------+
Довжина. 16-бітове поле, що містить довжину (у байтах) усього UDP-пакета, включаючи заголовок і дані.
Контрольна сума. 16-бітове поле, що містить Internet-контрольну суму, підраховану для UDP-заголовка, даних пакета і псевдозаголовка. Псевдозаголовок (такий же, як для підрахунку контрольної суми в TCP-заголовку) містить у собі ряд полів IP-заголовка і має показану таку структуру:
0 7 15 31 +-----------+-----------+-----------------------+ | IP-адреса джерела | +-----------------------+-----------------------+ | IP-адреса приймача | +-----------+-----------+-----------------------+ | Нулі | Транспорт | Довжина IP-сегмента | +-----------+-----------+-----------------------+
Якщо поле "Контрольна сума" UDP-заголовка містить нульове значення, це означає, що джерело UDP-пакета контрольну суму не підраховував, і приймач виконувати її перевірку не повинний. Деякі реалізації протоколу UDP (наприклад, у SunOS - клоні ОС UNIX від Sun Microsystems) контрольну суму не підраховують у принципі, покладаючись на можливості контролю цілісності даних, реалізовані в протоколах мережного рівня (наприклад, у Ethernet).