Protocolul cu Datagrama Utilizator este ca „Urâtul Rătit” al lui Hans Christian Andersen. După ce zeci de ani au fost trecute cu vederea și ridiculizate, acest protocol simplu i-a atras brusc pe admiratori ca fiind protocolul de transport pentru noile aplicații multimedia pline de farmec, care au fost făcute posibile prin viteze de bandă largă. Astăzi, orice aplicație care trebuie să furnizeze date alege rapid UDP peste TCP-ul dominant (Transmission Control Protocol).
Istoric UDP
UDP există aproape atât timp cât internetul. Internetul a luat ființă în mai 1974, când Institutul de Ingineri Electronici și Electronici a publicat „Un program pentru interconectarea rețelelor de pachete” de Vint Cerf și Bob Khan. Conceptul trebuia dezvoltat și Khan și Cerf au continuat să-și perfecționeze ideile în timp ce lucrau pentru guvernul american Agenția de proiecte avansate pentru apărare, care este cunoscut și sub numele de DARPA. Ioan Postel m-am implicat și mi-a sugerat împărțirea structurii unice propuse în ideea originală a lui Cerf și Khan. Aceasta a creat un concept stratificat. Programul inițial de control al transmisiei conținut în conturul din 1974 a fost împărțit în Protocolul de control al transmisiei la un nivel superior și Protocolul Internet la un nivel inferior (deci TCP / IP).
Abordarea modulară a Postel a avut sens atunci când echipa a început să se gândească la implementarea teoriei. A existat o diviziune clară a muncii între ceea ce a devenit cunoscut sub numele de Strat de transport, care este locația protocolului de control al transmisiei și Internet Layer, unde se află Protocolul Internet. Cu toate acestea, Cerf și Khan au avut în vedere necesitatea unei opțiuni rapide. Ei au întocmit o diagramă a modului în care datele ar fi pregătite pentru transmitere fiind transmise de la un strat la altul. Sarcinile de procesare au fost reprezentate ca o linie verticală dreaptă, descendent prin noua lor diagramă de stivă, arătând progresia de la aplicație la TCP și pe IP.
Când a fost vorba de desenarea pe traseul rapid, ei nu voiau să trebuiască să deseneze o linie de ocol curbă care să evite trecerea prin TCP. În schimb, au desenat o formă alungită care a reprezentat Internet Layer un pic mai larg decât blocul care reprezenta Layer Transport. Cu această ajustare vizuală, atât traseul regulat, cât și traseul rapid, pot coborî prin stivă ca linii paralele. Cu toate acestea, acest truc a lăsat un gol pe care Postel a considerat că trebuie să fie completat. Acesta este motivul pentru care a fost inventat Protocolul Datagrama utilizatorului. A fost doar acolo pentru a face diagrama de stivă a protocolului să pară echilibrată.
Beneficiile TCP
Protocolul de control al transmisiei oferă servicii esențiale pentru datele aflate în tranzit. Se asigură că toate pachetele dintr-un flux ajung în realitate și verifică dacă sosesc în ordine. Aceste proceduri de control care asigură un transfer ordonat nu sunt posibile fără o măsură de coordonare între cele două părți. Deci, TCP stabilește mai întâi un acord între cele două dispozitive care intenționează să facă schimb de date. Acest acord se numește o sesiune. De asemenea, este chiar definiția unui „conexiune.„UDP nu are proceduri de înființare a sesiunilor și de aceea este denumit„conexiune.“
Sesiunea oferă ambelor părți ale conexiunii un număr de referință pe care îl pot eticheta în schimburile lor administrative. Ședința permite, de asemenea, introducerea conceptului de porturi. ID-ul sesiunii este de fapt o combinație de identificatori conținuți în antetul TCP. Cu acest ID, proiectanții procedurilor TCP au putut veni cu ideea de „priză.”Numerele de port sunt de asemenea alocate UDP, totuși, acel protocol poate utiliza doar IP-ul de destinație și numerele de port ca un identificator unic. Un identificator derivat din această combinație ar bloca toate celelalte procese care încearcă să acceseze același port, chiar dacă acestea rulau pe computere diferite, deci UDP a fost creat un sistem exclusiv pentru livrare, fără nicio procedură pentru a activa un dialog cu două sensuri.
Conceptele de conexiune TCP s-au dezvoltat într-o metodă universală foarte sofisticată pentru a se asigura că datele care trec între computere nu se amestecă și nu se amestecă. Priza a permis deschiderea simultană a mai multor conexiuni între aceleași două computere. Această idee a creat posibilitatea ca mai multe canale să funcționeze pentru a transmite date. Aceasta este o procedură frecvent utilizată de care au profitat multe aplicații de rețea timpurii. Protocol de transfer de fișiere, de exemplu, folosește două canale: unul pentru a transmite datele și un canal separat pentru comunicații administrative. Numerele de porturi diferite pentru canalele de date și de control creează două prize diferite.
ID-ul unic pentru fiecare sesiune a însemnat că valoarea adăugată TCP la comunicarea dintre două computere. La sfârșitul anilor ’70 și începutul anilor ’80, doar organizațiile mari și instituțiile academice aveau computere și rețele. Așadar, a fost foarte probabil ca două organizații să aibă nevoie de marile lor scheme principale pentru a se conecta între ele simultan în scopuri diferite. În timp ce un profesor trimitea un fișier unui coleg de la o altă universitate, un cercetător ar putea dori să deschidă și o sesiune Telnet la computer la aceeași universitate de la distanță. Datorită TCP, două computere ar putea menține mai multe conexiuni simultan și fiecare dintre aceste sesiuni ar putea opera mai multe canale în același timp. Aceste conexiuni concomitente nu ar fi posibile dacă comunicațiile ar fi fost guvernate numai de Protocolul Internet cu alocarea unei adrese IP pe computer. UDP, fără niciun mecanism de sesiune, a fost incapabil să administreze aplicațiile care necesitau un computer contactat să trimită un răspuns.
Securitatea datelor
Construcțiile strălucitoare ale TCP au făcut posibile conexiunile între rețele și internetul a început să se extindă dincolo de Academia, în lumea afacerilor. Crearea World Wide Web, care a devenit public în 1991 a fost posibil doar datorită ușurinței cu care pagina web care poartă Hypertext Transfer Protocol (HTTP) putea să se așeze în topul TCP.
Au fost profesioniștii și tehnicienii care au pus internetul laolaltă și apoi au dezvoltat World Wide Web accesibil publicului gânditori de cer albastru. Au fost încântați de tehnologie și de posibilitățile sale de a accelera cercetarea și de a îmbunătăți interacțiunea dintre oamenii din întreaga lume. Nu au reușit să dea seama de faptul că invenția lor minunată a fost un cadou pentru hoți, con artiști și teroriști urbani. Nici internetul și nici World Wide Web nu au avut deloc securitate.
A fost condus de consumator Netscape Corporation pentru a detecta această problemă. Netscape a produs principalul browser web din lume și a oferit-o gratuit pentru a încuraja accesul internetului în rândul publicului larg. Planul a funcționat și s-au răspândit schimburi de informații și canale de contact, încurajând mai mulți membri ai publicului să se înscrie la serviciile de internet. Însă lipsa de securitate a reprezentat un obstacol în calea comercializării Web-ului. Fără posibilitatea de a atrage oamenii să plătească pentru serviciile online, nu a existat un stimulent pentru întreprinderi să investească în dezvoltarea de noi aplicații, site-uri web sau servicii online.
Bariera principală în colectarea plăților pe Web a fost lipsa sa de securitate. Câteva titluri despre furtul de date pe transmisiile de internet au închis posibilitatea de a face viabilă internetul comercial. in orice caz, Netscape a venit cu HTTPS – o versiune sigură a HTTP care protejează transmisia. Locația ideală în stiva TCP / IP pentru aceste proceduri de securitate a fost în timpul proceselor de stabilire a sesiunii TCP. Asa de, TCP a devenit și mai esențial pentru operațiunile internetului și părea și mai probabil că UDP nu va fi folosit niciodată.
UDP decolează
În ciuda existenței din 1980, UDP a fost complet trecut cu vederea până când serviciile de internet în bandă largă au devenit disponibile la începutul acestui secol. Protocolul Datagrama utilizatorului a fost ignorat în mare măsură în timp ce aplicațiile web și alte aplicații internet s-au extins pe funcționalitatea TCP.
in orice caz, capacitatea de a avea conversații vocale și conferințe video pe internet a apelat întotdeauna la companii. Aceste aplicații existau înainte de bandă largă, dar numai pentru utilizarea în rețele private mai rapide. Cu tehnologia de transmitere a sunetului și a video prin rețele create, viteza mai mare de bandă largă a adus posibilitatea punerii la dispoziția publicului larg a acestor aplicații a devenit o idee fezabilă. Cu toate acestea, viteza disponibilă pe internet nu a fost destul de bună.
Soluția imediată la stoarcerea suficientă viteză suplimentară de pe internet a fost abandonarea tuturor procedurilor administrative ale TCP și apelează la UDP aproape uitat.
Problemele cu TCP
Aplicațiile interactive ar prefera mai degrabă să rezolve unele dintre problemele întâmpinate în timpul transmiterii. Una dintre principalele caracteristici ale TCP pe care aceste aplicații nu le doresc este este tamponare.
TCP se asigură că pachetele sosesc în ordine. Dacă un pachet lipsește din flux, implementarea TCP primitoare va trimite o solicitare programului TCP care trimite pentru a retrimite acel pachet specific. Între timp, acel pachet ar putea ajunge târziu. TCP folosește un sistem de cadre glisante pentru a prelucra pachetele care sosesc și dacă un segment întârzie sau se pierde, diapozitivul este blocat. Stocarea temporară a unui număr de cadre în memorie este ceea ce este cunoscut sub numele de buffering. TCP așteaptă până când poate umple slotul gol cu pachetul care poartă numărul secvenței care lipsește. În cazul telefoniei pe internet, o astfel de acțiune ar determina linia să tacă. În streamingul video, așteptarea unui pachet lipsă ar face înghețarea playerului video.
Aplicațiile interactive nu au proceduri care să funcționeze în buffering TCP. Principalul din spatele straturilor de stivă este faptul că straturile superioare solicită un serviciu și lăsați-l în stratul inferior pentru a-l furniza. Nu există niciun semnal de „pornire cu el” pe care o aplicație îl poate trimite către Layer Transport.
În cazul în care un pachet se pierde într-o conversație telefonică digitală, apelanții vor experimenta o scurtă tăcere, dar aplicația de pe ambele părți va continua să continue și să trimită și să primească următoarele pachete. Până la recuperarea unui pachet lipsă, conversația interactivă ar fi continuat, astfel încât nu are rost să încercați să o injectați în flux; este mai bine să scrieți pierderea și să continuați. În mod similar, un pachet pierdut ar însemna doar o scurtă depășire într-un flux video live, iar spectatorii ar fi mai degrabă că videoclipul continuă să avanseze decât să țină complotul pentru o milisecundă de cadre.
Ați văzut probabil un player video întrerupt și suprapus mesajul „tamponare”Peste imagine. De asemenea, există un contor care arată procentul de tamponare finalizat. Această tamponare are loc dacă viteza de transfer a conexiunii este mai mică decât rata de cadru a redării video. Punctul crucial al mesajului este, însă, că arată că bufferul este gestionat de jucător și nu de protocolul de transport..
Protocoale de parteneriat
Deși aplicația interactivă nu a dorit întârzierile cauzate de TCP, au dorit o parte din funcționalitatea acelui protocol. Ei doreau mai mult decât ar putea oferi UDP. Deci, au fost inventate alte protocoale pentru a completa anumite părți ale funcțiilor TCP.
Protocolul de inițiere a sesiunii
Session Initiation Protocol (SIP) a fost inventat pentru aplicațiile Voice over IP (VoIP). Telefonia pe Internet nu dorea buffering-ul TCP, dar trebuiau să imite procedurile tradiționale de stabilire a apelurilor pentru telefoane – formează, sună, ocupat, ridică și încheie apelul. Cu toate acestea, SIP nu gestionează întreaga sesiune, ci se ocupă doar de crearea conexiunii și funcțiile de eliminare a TCP. Fiecare apel care trece pe internet folosește SIP. Atât de mult încât „SIP” a devenit aproape un termen interschimbabil cu „VoIP.“
Rularea traficului vocal prin conexiuni digitale de mare viteză în vrac este cunoscută ca „SIP trunking.”Comutarea unui apel de la internet la un telefon fix fix se numește„Încetarea SIP.„Industria telefoniei digitale folosește SIP pentru a-și identifica tehnologia, dar chiar baza tuturor activităților lor este UDP.
Protocolul de transport în timp real
În ciuda deciziei conform căreia TCP a fost prea mare din cauza traficului interactiv și ar trebui să fie abandonat, inginerii de comunicare au revenit la facilitățile furnizate de TCP și și-au dorit să le poată avea cu UDP. Protocolul de transport în timp real (RTP) compensează o mulțime de deficiențe de funcționalitate experimentate atunci când utilizați UDP.
O caracteristică cheie a acestor protocoale de completare care fac ca UDP să fie relevant pentru streamingul media este faptul că permit ca unele dintre procesele gestionate în mod tradițional de TCP să fie transmise către aplicație. RTP gestionează unele dintre funcțiile de gestionare a traficului TCP, dar nu toate.
RTP este capabil să reordoneze pachetele de secvență și să noteze pachetele pierdute. Cu toate acestea, funcția de secvențare nu este necesară pentru a fi pusă în aplicare și este imposibil de implementat fără tamponarea la nivelul stratului de transport.
Protocolul de control RTP
RTP este întotdeauna partener cu RTCP, care este Protocolul de control RTP. RTPC emulează unele dintre funcțiile de gestionare a sesiunii TCP, cu excepția principiului de ghidare a protocolului este de a nu intra în flux și de a încetini transmisia media; deci activitățile sale sunt rare. Protocolul va aduna date de performanță, inclusiv pierderea de pachete, și informații despre rata de transfer. Jucătorul receptor poate utiliza aceste informații pentru a decide dacă treceți la o rezoluție mai mică de videoclip sau la un standard de codificare video diferit.
Dacă utilizați o aplicație video și audio, este aproape sigur că atât RTP cât și RTCP sunt implicate. Este un “intercalareaOpțiune ”în definiția RTSP (vezi mai jos) care ar muta transmisiile RTP pe TCP. Cu toate acestea, aceasta este o propunere neobișnuită care nu a fost niciodată pusă în aplicare în afara laboratorului. Fără această specificație, toate activitățile RTP și RTCP sunt realizate de UDP.
Protocolul de transmisie în timp real
Protocolul de transmisie în timp real (RTSP) este aproape întotdeauna implicat în aplicații de redare sau înregistrare video și audio. Acest protocol oferă butoane de control pe playerul și înregistratorul. Acestea sunt pauză, înregistrare / redare, înaintare rapidă și rambursare. În mod curios, deși RTSP poate rula peste UDP, este de obicei transportat prin TCP, chiar dacă este parteneriat cu un flux video sau audio acceptat de UDP.
Aplicații doar UDP
O serie de aplicații ușoare care acceptă rețeaua utilizează UDP fără alte protocoale care alcătuiesc o simulare a funcțiilor TCP. Aceste funcții sunt destinate aproape exclusiv numai utilizării în rețele private deoarece acestea nu includ nicio procedură de autentificare sau criptare de transmisie.
Dacă gestionați o rețea, vă veți familiariza cu Protocolul timpului de rețea (NTP), Sistem de nume de domeniu (DNS), Protocolul de configurare dinamic al gazdei (DHCP), si Protocolul de transfer de fișiere triviale (TFTP). Toate aceste servicii de administrare sunt peste UDP. Dincolo de aceste aplicații de rețea privată, este foarte dificil să găsești orice aplicație care rulează numai peste UDP.
UDP vs TCP
O comparație a structurii antetului UDP și a structurii antetului TCP vă arată limitările UDP.
Antetul UDP are doar patru câmpuri. Dintre cei patru, Sursa Port câmpul este opțional și poate fi lăsat necompletat. În IPv4, checksum câmpul este de asemenea opțional, deși este obligatoriu pentru implementările IPv6. Aceasta înseamnă că, în cazul transmisiilor IPv4, antetul UDP are nevoie doar de două informații în el.
Antetul TCP este capabil să ofere mai multe informații.
După cum puteți vedea din ilustrație, antetul pachetului TCP are o serie de nouă stegulețe care adaptează sensul antetului. Evenimentul are un câmp „urgent”. Acest lucru oferă sistemului TCP mult mai multă flexibilitate decât UDP și arată că a fost investit mult mai mult timp în procedurile pentru TCP și structura antetului său de pachete decât s-a cheltuit pentru dezvoltarea UDP.
Faptul că antetul TCP trebuie să includă portul sursă face posibilă crearea unui socket mai unic, creând un ID de sesiune din adresele IP sursă și destinație și numerele portului sursă și destinație. Cu UDP, deoarece nu are proceduri pentru a crea o sesiune, fiecare mesaj este tratat ca o sarcină finalizată, iar protocolul nu încearcă să strângă pachetele împreună. Prin urmare, aplicațiile care utilizează USP trebuie să gestioneze singură această continuitate.
Securitate pentru UDP
Metodele TCP orientate spre conexiune facilitează implementarea securității în protocolul UDP. Cu toate acestea, există standarde de criptare disponibile pentru UDP. Principala opțiune care vizează în mod direct securitatea UDP este protocolul de securitate sau DTLS Datagram Transport Layer.
din fericire, DTLS este disponibil într-o serie de biblioteci open source gratuite, deci nu trebuie să vă confruntați cu definiția protocolului și să scrieți programul deschis pentru a-l implementa. OpenSSL, care este o bibliotecă cu cod open source, este cea mai comună sursă pentru o implementare a Transport Layer Security, care este cel mai larg implementat sistem de securitate pentru TCP. De asemenea, această bibliotecă include o implementare DTLS, deci ar trebui să poți întâlni opțiuni UDP sigure în aceleași aplicații care oferă conexiuni TCP sigure.
O altă opțiune pentru utilizatorii UDP este să se bazeze pe un sistem de securitate care a fost proiectat pentru a funcționa la Internet Layer. Aceasta este IPSec, sau Securitate protocol Internet. Deoarece IPSec funcționează sub stratul de transport, acesta nu este capabil să funcționeze cu porturile, astfel încât faptul că UDP nu este capabil să susțină o sesiune nu contează atunci când IPSec este angajat – Protocoalele IP Layer nici nu pot crea sesiuni. Ca sistem cu strat inferior, IPSec este capabil să suporte orice protocol de nivel de transport, inclusiv UDP.
IPSec include metode de autentificare și, de asemenea, criptează pachetele pentru a le proteja împotriva furtunilor de sârmă. IT oferă la fel de multă securitate ca TLS-ul popular, dar este implementat mai puțin pe scară largă. IPSec utilizează sistemul Internet Key Exchange (IKEv2) pentru a configura autentificarea, atât de des, IPSec este facturat ca IKEv2. Metodologia IKEv2 folosește Diffie-Hellman proceduri de schimb cheie, care este exact același sistem pe care îl folosește TLS pentru metodologia de sesiune a paginilor web securizate HTTPS.
Kerberos și Kerberized Internet Negociation of Keys (KINK) sunt două elemente ale unui sistem de securitate care se numește de obicei Kerberos. Procedurile de stabilire a sesiunii Kerberos folosesc un sistem de „bilete” care este similar cu metoda TLS de a utiliza „certificate”. În partea de jos a stivei, Kerberos este susținut de IPSec. Stratul eponim Kerberos se află deasupra UDP și folosește prize UDP pentru a facilita comunicarea. Așadar, acesta este un sistem de securitate compatibil cu UDP. O facilitate interesantă a Kerberos este că vă permite opțiunea de a utiliza criptarea AES pentru a vă proteja transferurile UDP. AES este probabil cea mai sigură cifră în utilizarea comună astăzi și este metoda de securitate recomandată pentru cele mai bune sisteme de protecție a confidențialității VPN din lume..
În ciuda aparentelor dificultăți de negociere a cheilor de criptare într-un mediu care nu oferă nicio gestionare a conexiunilor, UDP oferă opțiuni de securitate. Deci, atunci când implementați o aplicație bazată pe UDP, nu abandonați sarcina de a vă asigura transmisiile.
Viitorul UDP
Aplicațiile pure bazate pe UDP, care nu implică protocoale laterale pentru a imita TCP, sunt rare și este probabil să devină și mai rare. Utilitățile ușoare ale rețelei care folosesc UDP prosperă pe rețele locale sigure. Cu toate acestea, întrucât amenințările de securitate provocate de noile atacuri de zi zero se montează în fiecare săptămână, conceptul de a avea protocoale nesigure care să gestioneze serviciile cruciale de gestionare a configurațiilor și de abordare par a fi neplăcut plângător.
Pe măsură ce rețelele își mută serviciul în cloud, serviciile TFTP și DHCP bazate pe UDP vor începe să fie înlocuite cu alternative mai sigure. Soluția ușoară a aplicațiilor de navigare prin HTTPS pentru a le oferi securitate fără eforturi de programare suplimentare, înclină viitorul către TCP, care transportă HTTPS și face șanse de distanță de lista de competențe UDP..
Nișa UDP de susținere a transmisiilor media este probabil să dureze. Au existat deja multe sisteme de transport rivale propuse pentru sprijinul aplicațiilor interactive, dar niciuna dintre ele nu a eliminat UDP din poziția sa ca fiind prima alegere pentru VoIP și streaming video. Această listă de rivali include:
Protocolul Datagram al utilizatorului de încredere (RUDP), care are implementări Cisco și Microsoft.
Protocolul de transmisie a controlului fluxului (SCTP), care a fost propus fără succes ca înlocuitor pentru combo-ul UDP / RTP / RTCP, dar niciodată nu a ieșit deloc la pământ.
Această rață urâtă numită UDP a fost descoperită a fi o lebădă, datorită puterilor transformatoare magice ale aplicației în bandă largă și a aplicațiilor interactive. Această stea revitalizată va continua să alunece fără efort peste apele internetului.
Ce metode de transmisie utilizați? Vedeți ursitoarea urâtă a UDP ca o lebădă? Scrieți despre experiențele dvs. în secțiunea Comentarii de mai jos.
Legate de:
Ghid final de TCP / IP
Ce este TCPdump?
Evaluarea serverului TFTP SolarWinds
Revizuirea serverului TFTPD32 TFTP
Imagini:
Antetul UDP de Devarshi la Wikibooks în limba engleză Licențiat în conformitate cu CC BY-SA 2.5
Aspect pachet TCP cu scară de biți de Quliyevferman prin Wikimedia Commons. Licențiat în baza CC BY-SA 4.0
UDP decolează
Protocolul cu Datagrama Utilizator (UDP) a fost mult timp ignorat și ridiculizat, dar astăzi este ales rapid de orice aplicație care trebuie să furnizeze date. Acest lucru se datorează faptului că UDP este un protocol simplu și rapid, care este ideal pentru noile aplicații multimedia pline de farmec, care au fost făcute posibile prin viteze de bandă largă. În plus, UDP nu are proceduri de înființare a sesiunilor, ceea ce îl face mai rapid decât TCP-ul dominant (Transmission Control Protocol). Cu toate acestea, trebuie să fim conștienți de faptul că UDP nu oferă aceeași securitate ca TCP și poate fi vulnerabil la atacuri cibernetice. În general, UDP este o alegere excelentă pentru aplicațiile care necesită viteze de transfer ridicate și nu necesită o securitate ridicată a datelor.