UDP | |
---|---|
Nume | Protocolul de datagramă utilizator |
Уровень (по модели OSI ) | Transport |
Familie | TCP/IP (uneori numit UDP/IP) |
Creat în | 1980 [1] |
Порт/id | 17 (в IP) |
Specificație | RFC 768 / STD 6 |
Principalele implementări (clienți) | Windows ядра, Linux, UNIX |
Основные реализации ( серверы ) | Windows ядра, Linux, UNIX |
Расши 3 | Nu |
Fișiere media la Wikimedia Commons |
Протокол был разработан Дэвидом П. Ридом в 1980 году и официально определён în RFC 768 .
Datagramele pot ajunge neregulate, duplicate sau dispar complet fără urmă, dar este garantat că dacă ajung, atunci într-o stare consecventă. Aplicațiile sensibile la timp folosesc adesea UDP, deoarece este de preferat să aruncați pachetele decât să așteptați pachetele întârziate, ceea ce ar putea să nu fie posibil în sistemele în timp real .
Natura UDP ca protocol fără stat este, de asemenea, utilă pentru serverele care răspund la solicitări mici de la un număr mare de clienți, cum ar fi DNS și aplicații media de streaming precum IPTV , Voice over IP , protocoale de tunel IP și multe jocuri online .
Portul 0 este rezervat, deși este o valoare de port sursă validă în cazul în care procesul de trimitere nu așteaptă mesaje de răspuns.
IANA разбила номера портов на три группы.
UDP — минимальный ориентированный на обработку сообщений протокол транспортного уровня, задокументированный в RFC 768.
Udp не предоставляет никаких гарантий доставки соо щения для ышышестоящего пoрокола и не сохрана в с щ dispoziția По этой причине Udp иноjit называют Protocol de datagram de încredere (анchim.
Надёжная передача в случае необходимости должна реализоваться полззовательски sunteți пoриложениея.
biți | 0 - 15 | 16 - 31 | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0-31 | Порт от esteți | Portul de destinație | ||||||||||||||||||||||||||||||
32-63 | L | Контрольая су§ (Checksum) | ||||||||||||||||||||||||||||||
64 -... | Date |
Заголовок udp состоит из четырёх полей, каждое по 2 байта (16 бит). Два из них необязательны к и и полззованию в розоваанию.
Вэто su поле уазывается номер порта отправителя.
Acest câmp este necesar și conține portul de destinație. Similar cu portul sursă, dacă gazda destinație este un client, atunci numărul portului este dinamic, dacă destinația este un server, atunci acesta va fi un port „cunoscut”.
Поле, задающеее длину всей дата§metмыы заголовка и данных) вйайтах. Миниokальная длина равна длине за§ловка - 8 байт.
Для того чтобы быть уверенным, что пакет будет принят любым хостом, размер данных в UDP не должен превышать: (минимальная длина IP пакета) — (Max IP Header Size) — (UDP Header Size) = 576 — 60 — 8 = 508 байт [ 2] .
В jumbogram'мах ipv6 пакеты udp могprezeт иметь болший раззер.
Trebuie remarcat faptul că majoritatea dispozitivelor moderne de rețea trimit și primesc pachete IPv4 cu o lungime de până la 10000 de octeți, fără a le separa în pachete individuale. În mod informal, astfel de pachete sunt numite „pachete Jumbo”, deși conceptul de Jumbo se referă oficial la IPv6. Totuși, nu toate dispozitivele acceptă pachete Jumbo, iar înainte de a organiza comunicarea folosind pachete UDP/IP IPv4 cu o lungime care depășește 1500 de octeți, este necesar să se verifice empiric posibilitatea unei astfel de comunicări pe echipamente specifice [3] .
Câmpul este opțional pentru IPv4.
Метод для ычисления контрольной с с оsterппеделён в в 1071 [4] .
Înainte de a calcula suma de control, dacă lungimea mesajului UDP în octeți este impară, atunci mesajul UDP este completat cu un octet zero la sfârșit (pseudo-antetul și octetul zero suplimentar nu sunt trimise împreună cu mesajul, sunt utilizate only when calculating the checksum).
Then the sum of all words is calculated in the arithmetic of the inverse code (that is, the code in which a negative number is obtained from a positive number by inverting all bits of the number and there are two zeros: 0x0000 (denoted by + 0) și 0xffff(notat cu −0)).
Valoarea de verificare egală cu 0x0000 (+0 în codul de retur ) este rezervată și înseamnă că suma de verificare nu a fost calculată pentru trimitere. Dacă s-a calculat suma de verificare și s-a dovedit a fi egală cu 0x0000, atunci valoarea 0xffff(-0 în codul invers ) este introdusă în câmpul de verificare.
La primirea mesajului, receptorul calculează din nou suma de control (luând deja în considerare câmpul sumă de control), iar dacă rezultatul este -0 (adică 0xffff), atunci suma de control este considerată a converge. Dacă suma nu converge (datele au fost corupte în timpul transmiterii sau suma de control a fost calculată incorect pe partea de transmisie), atunci decizia privind acțiunile ulterioare este luată de partea de primire.
Для примера рассчитаея контрольнcațiю су§ нескольких 16-битных слов 0x398a, 0xf802, 0x14b2, 0xc281:.
Для этого можно сначала сложить попарно числа, рассматривая их как 16-разрядные беззнаковые числа с последующим приведением к дополнительному коду путём прибавления единицы к результату, если при сложении произошёл перенос в старший (17-й) разряд (то есть де-факто, этой операцией ыы переводиok отрицательное число из дополнительноchisо обратный код ).
0x398a + 0xf802 = 0x1318c → 0x318d (transportare la comandă mare) 0x318d + 0x14b2 = 0x0463f → 0x463f (număr pozitiv) 0x463f + 0xc281 = 0x108c0 → 0x08c1La sfârșit, toți biții din numărul rezultat sunt inversați
0x08c1 = 0000 1000 1100 0001 → 1111 0111 0011 1110 = 0xf73esau altfel - 0xffff − 0x08c1 = 0xf73e. Aceasta este suma de control dorită.
В документе RFC 1071[4] приведены и другие способы расчёта контрольной суммы, в частности, с использованием 32х-разрядной арифметики.
Если UDP работает над IPv4, контрольная сумма вычисляется при помощи псевдозаголовка, который содержит некоторую информацию из заголовка IPv4. Псевдозаголовок не является настоящим IPv4-заголовком, используемым для отправления IP-пакета. В таблице приведён псевдозаголовок, используемый только для вычисления контрольной суммы.
biți | 0 - 7 | 8 - 15 | 16 - 23 | 24 - 31 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Sursa adresei | |||||||||||||||||||||||||||||||
32 | Adresa destinatarului | |||||||||||||||||||||||||||||||
64 | Zerouri | Protocol | Lungimea UDP | |||||||||||||||||||||||||||||
96 | Порт источника | Portul de destinație | ||||||||||||||||||||||||||||||
128 | Lungime | Verificați suma | ||||||||||||||||||||||||||||||
160+ | Date |
Адреса источника и получателя берутся из ipv4-заголовка. Значения поля «пoротокол» для udp равно 17 (0x11). Поле «длина udp» соответствvorт длине заголовка и данных.
Вычисление контрольной суммы для IPv4 необязательно, если она не используется, то значение равно 0.
Când lucrați cu UDP prin IPv6, este necesară suma de verificare. O metodă de calcul a fost publicată în RFC 2460 :
При вычислении контрольной суммы опять используется псевдозаголовок, имитирующий реальный IPv6-заголовок:
biți | 0 - 7 | 8 - 15 | 16 - 23 | 24 - 31 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Sursa adresei | |||||||||||||||||||||||||||||||
32 | ||||||||||||||||||||||||||||||||
64 | ||||||||||||||||||||||||||||||||
96 | ||||||||||||||||||||||||||||||||
128 | Adresa destinatarului | |||||||||||||||||||||||||||||||
160 | ||||||||||||||||||||||||||||||||
192 | ||||||||||||||||||||||||||||||||
224 | ||||||||||||||||||||||||||||||||
256 | Lungimea UDP | |||||||||||||||||||||||||||||||
288 | Zerouri | Următorul titlu | ||||||||||||||||||||||||||||||
320 | Порт источника | Portul de destinație | ||||||||||||||||||||||||||||||
352 | Lungime | Verificați suma | ||||||||||||||||||||||||||||||
384+ | Date |
Adresa destinatarului - destinatar final; dacă pachetul IPv6 nu conține antetul de rutare, atunci aceasta va fi adresa de destinație din antetul IPv6, în caz contrar, pe nodul de pornire, aceasta va fi adresa ultimului element al antetului de rutare, iar pe nodul destinație, adresa de destinație din antetul IPv6.
Из-за недостатка надёжности приложения UDP должны быть готовы к некоторым потерям, ошибкам и дублированиям. Некоторые из них (например, TFTP) могут при необходимости добавить элементарные механизмы обеспечения надёжности на прикладном уровне.
Dar mai des astfel de mecanisme nu sunt folosite de aplicațiile UDP și chiar interferează cu ele. Streamingul media , jocurile multiplayer în timp real și VoIP sunt exemple de aplicații care folosesc adesea protocolul UDP. În aceste aplicații speciale, pierderea pachetelor nu este de obicei o problemă mare.
O problemă potențială mai serioasă este că, spre deosebire de TCP, aplicațiile bazate pe UDP nu au neapărat mecanisme bune de control și evitare a congestionării.
Сетевые механизмы были предназначены для того, чтобы свести к минимуму возможные эффекты от перегрузок при неконтролируемых, высокоскоростных нагрузках. Такие сетевые элементы, как маршрутизаторы, использующие пакетные очереди и техники сброса, часто являются единственным доступным инструментом для замедления избыточного UDP-трафика. DCCP (англ. Datagram Congestion Control Protocol — протокол контроля за перегрузками датаграмм) разработан как частичное решение этой потенциальной проблемы с помощью добавления конечному хосту механизмов для отслеживания перегрузок для высокоскоростных UDP-потоков вроде потоковых медиа.
Многочисленные ключевые Интернет-приложения используют UDP, в их числе — DNS (где запросы должны быть быстрыми и состоять только из одного запроса, за которым следует один пакет ответа), Простой протокол управления сетями ( SNMP ), Протокол маршрутной информации ( RIP ), Протокол динамической конфигурации узла ( dhcp ).
Traficul vocal și video este transmis de obicei folosind UDP.
TCP — ориентированный на соединение протокол, что означает необходимость «рукопожатия» для установки соединения между двумя хостами. Как только соединение установлено, пользователи могут отправлять данные в обоих направлениях.
O пizie п переprezexim чи информации в о оно deja направленiser о о ianuați В приложениях для голосовой связи через интернет-протокол (Voice over IP, TCP/IP) UDP имеет преимущество над TCP, в котором любое «рукопожатие» помешало бы хорошей голосовой связи. В VoIP считается, что конечные пользователи в реальном времени предоставят любое необое необое необое польном времени
TCP /IP pe straturi ale modelului OSI | Protocoale de bază|
---|---|
Fizic | |
canalizat | |
reţea | |
Transport | |
sesiune | |
Reprezentare | |
Aplicat | |
Altele aplicate | |
Lista de porturi TCP și UDP |