Der er to typer IP-trafik (Internet Protocol). De er TCP eller Protokol til transmissionskontrol og UDP eller Bruger Datagram-protokol. TCP er forbindelsesorienteret - når en forbindelse er etableret, kan data sendes tovejs. UDP er en enklere, forbindelsesløs internetprotokol. Flere meddelelser sendes som pakker i bunker ved hjælp af UDP.
TCP | UDP | |
---|---|---|
Forkortelse for | Protokol til transmissionskontrol | Bruger Datagram-protokol eller Universal Datagram-protokol |
Forbindelse | Transmission Control Protocol er en forbindelsesorienteret protokol. | User Datagram Protocol er en forbindelsesløs protokol. |
Fungere | Som en meddelelse gør sin vej over internettet fra en computer til en anden. Dette er forbindelsesbaseret. | UDP er også en protokol, der bruges til beskedtransport eller -overførsel. Dette er ikke forbindelsesbaseret, hvilket betyder, at et program kan sende en mængde pakker til et andet, og det ville være slutningen på forholdet. |
Anvendelse | TCP er velegnet til applikationer, der kræver stor pålidelighed, og transmissionstiden er relativt mindre kritisk. | UDP er velegnet til applikationer, der har brug for hurtig og effektiv transmission, såsom spil. UDPs statsløse karakter er også nyttig for servere, der besvarer små forespørgsler fra et stort antal klienter. |
Brug ved andre protokoller | HTTP, HTTP'er, FTP, SMTP, Telnet | DNS, DHCP, TFTP, SNMP, RIP, VOIP. |
Bestilling af datapakker | TCP omorganiserer datapakker i den angivne rækkefølge. | UDP har ingen iboende rækkefølge, da alle pakker er uafhængige af hinanden. Hvis bestilling er påkrævet, skal den styres af applikationslaget. |
Overførselshastighed | Hastigheden for TCP er langsommere end UDP. | UDP er hurtigere, fordi fejlgendannelse ikke forsøges. Det er en "bedste indsats" -protokol. |
Pålidelighed | Der er absolut garanti for, at de overførte data forbliver intakte og ankommer i den samme rækkefølge, som de blev sendt. | Der er ingen garanti for, at de meddelelser eller pakker, der sendes, overhovedet ville nå ud. |
Header Størrelse | TCP-headerstørrelse er 20 byte | UDP Header-størrelse er 8 byte. |
Almindelige Header Felter | Kildeport, destinationsport, check sum | Kildeport, destinationsport, check sum |
Streaming af data | Data læses som en byte-strøm, ingen markante indikationer overføres til signalmeddelelsesgrænser (segment). | Pakker sendes individuelt og kontrolleres kun for integritet, hvis de ankommer. Pakker har afgrænsede grænser, der hædres ved modtagelse, hvilket betyder, at en læsehandling ved modtagerens stik skal give en hel meddelelse, som den oprindeligt blev sendt. |
Vægt | TCP er tung. TCP kræver tre pakker for at oprette en socketforbindelse, før brugerdata kan sendes. TCP håndterer pålidelighed og overbelastningskontrol. | UDP er let. Der er ingen bestilling af meddelelser, ingen sporingsforbindelser osv. Det er et lille transportlag designet oven på IP. |
Dataflowkontrol | TCP udfører Flow Control. TCP kræver tre pakker for at oprette en socketforbindelse, før brugerdata kan sendes. TCP håndterer pålidelighed og overbelastningskontrol. | UDP har ikke en mulighed for flowkontrol |
Fejl ved kontrol | TCP udfører fejlkontrol og gendannelse af fejl. Forkerte pakker videresendes fra kilden til destinationen. | UDP foretager fejlkontrol, men kasserer simpelthen forkerte pakker. Fejlgendannelse forsøges ikke. |
Felter | 1. Sekvensnummer, 2. AcK-nummer, 3. Dataforskyvning, 4. Reserveret, 5. Kontrolbit, 6. Vindue, 7. presserende pointer 8. Valgmuligheder, 9. polstring, 10. Kontroller sum, 11. kildeport, 12. Destinationshavn | 1. Længde, 2. Kildeport, 3. Destinationsport, 4. Kontroller sum |
Anerkendelse | Anerkendelsessegmenter | Ingen anerkendelse |
Håndtryk | SYN, SYN-ACK, ACK | Intet håndtryk (tilslutningsfri protokol) |
TCP sikrer en pålidelig og ordnet levering af en strøm af bytes fra bruger til server eller omvendt. UDP er ikke dedikeret til forbindelser fra ende til ende, og kommunikation kontrollerer ikke modtagerens beredskab.
TCP er mere pålidelig, da det styrer meddelelsesbekræftelse og videresendelse i tilfælde af mistede dele. Der mangler således absolut ingen data. UDP sikrer ikke, at kommunikationen har nået modtageren, da begreber om anerkendelse, time-out og videresendelse ikke er til stede.
TCP transmissioner sendes i en rækkefølge, og de modtages i samme sekvens. I tilfælde af datasegmenter, der ankommer i forkert rækkefølge, ombestiller TCP og leverer applikationen. I tilfælde af UDP, den sendte beskedsekvens opretholdes muligvis ikke, når den når den modtagende applikation. Der er absolut ingen måde at forudsige i hvilken rækkefølge meddelelsen modtages.
TCP er en tung vægtforbindelse, der kræver tre pakker til en stikketilslutning og håndterer overbelastningskontrol og pålidelighed. UDP er et let transportlag designet på toppen af en IP. Der er ingen sporingsforbindelser eller bestilling af meddelelser.
TCP læser data som en byte-strøm, og meddelelsen overføres til segmentgrænser. UDP beskeder er pakker, der sendes individuelt og ved ankomsten kontrolleres for deres integritet. Pakker har definerede grænser, mens datastrøm ikke har nogen.
UDP arbejder på en "bedste indsats" -basis. Protokollen understøtter fejldetektering via kontrolsum, men når der opdages en fejl, kasseres pakken. Genoverførsel af pakken til gendannelse fra denne fejl forsøges ikke. Dette skyldes, at UDP normalt er til tidsfølsomme applikationer som spil eller stemmetransmission. Gendannelse fra fejlen ville være meningsløs, fordi det, når den videresendte pakke modtages, ikke vil være til nogen nytte.
TCP bruger både fejldetektion og fejlgendannelse. Fejl opdages via kontrolsum, og hvis en pakke er forkert, anerkendes den ikke af modtageren, hvilket udløser en genoverførsel af afsenderen. Denne driftsmekanisme kaldes Positive Acknowledgment with Retransmission (PAR).
En TCP-forbindelse oprettes via et trevejshåndtryk, som er en proces med at starte og anerkende en forbindelse. Når forbindelsen er etableret, kan dataoverførsel begynde. Efter transmission afsluttes forbindelsen ved lukning af alle etablerede virtuelle kredsløb.
UDP bruger en simpel transmissionsmodel uden implicit hånd-ryste dialoger til at garantere pålidelighed, bestilling eller dataintegritet. UDP leverer således en upålidelig service, og datagrammer kan komme i orden, synes duplikerede eller forsvinde uden varsel. UDP antager, at fejlkontrol og korrektion enten ikke er nødvendig eller udføres i applikationen, idet man undgår overhead af sådan behandling på netværksgrænsefladeniveau. I modsætning til TCP er UDP kompatibel med pakkeudsendelser (sender til alle på lokalt netværk) og multicasting (send til alle abonnenter).
Web browsing, e-mail og filoverførsel er almindelige applikationer, der bruger TCP. TCP bruges til at kontrollere segmentstørrelse, hastighed for dataudveksling, flowkontrol og netværkstopning. TCP foretrækkes, hvor fejlkorrektionsfaciliteter er påkrævet på netværksgrænsefladeniveau. UDP bruges stort set af tidsfølsomme applikationer såvel som servere, der besvarer små forespørgsler fra et stort antal klienter. UDP er kompatibel med pakkeudsendelse - sender til alle på et netværk og multicasting - sender til alle abonnenter. UDP bruges ofte i Domain Name System, Voice over IP, Trivial File Transfer Protocol og online spil.
Ved massivt multiplayer-online (MMO) -spil er udviklere ofte nødt til at tage et arkitektonisk valg mellem at bruge UDP eller TCP vedvarende forbindelser. Fordelene ved TCP er vedvarende forbindelser, pålidelighed og at kunne bruge pakker af vilkårlige størrelser. Det største problem med TCP i dette scenarie er dens overbelastningskontrolalgoritme, der behandler pakketab som et tegn på båndbreddebegrænsninger og automatisk bremser afsendelsen af pakker. På 3G- eller Wi-Fi-netværk kan dette medføre en betydelig forsinkelse.
Den erfarne udvikler Christoffer Lernö vejer fordele og ulemper og anbefaler følgende kriterier for at vælge, om TCP eller UDP skal bruges til dit spil: