Det finns två typer av Internet Protocol (IP) trafik. Dom är TCP eller Sändningskontrollprotokoll och UDP eller användardatagram protokoll. TCP är anslutningsorienterad - när en anslutning är etablerad kan data skickas tvåvägs. UDP är ett enklare, anslutningsfritt Internetprotokoll. Flera meddelanden skickas som paket i bitar med UDP.
TCP | UDP | |
---|---|---|
Akronym för | Sändningskontrollprotokoll | User Datagram Protocol eller Universal Datagram Protocol |
Förbindelse | TCP är ett anslutningsorienterat protokoll. | UDP är ett anslutningsfritt protokoll. |
Fungera | Som ett meddelande går sin väg över internet från en dator till en annan. Det här är anslutningsbaserat. | UDP är också ett protokoll som används vid meddelandeöverföring eller överföring. Det här är inte anslutningsbaserat vilket innebär att ett program kan skicka en paketpaket till en annan och det skulle vara slutet på relationen. |
Användande | TCP är lämpad för applikationer som kräver hög tillförlitlighet, och överföringstiden är relativt mindre kritisk. | UDP passar för applikationer som kräver snabb och effektiv överföring, till exempel spel. UDP: s statslösa natur är också användbar för servrar som svarar på små frågor från ett stort antal kunder. |
Används av andra protokoll | HTTP, HTTP, FTP, SMTP, Telnet | DNS, DHCP, TFTP, SNMP, RIP, VOIP. |
Beställning av datapaket | TCP omarrangerar datapaket i den angivna ordern. | UDP har ingen inneboende ordning eftersom alla paket är oberoende av varandra. Om beställning krävs måste den hanteras av applikationslagret. |
Hastighet för överföring | Hastigheten för TCP är långsammare än UDP. | UDP är snabbare eftersom felåterställning inte försökas. Det är ett "bästa försök" protokoll. |
Pålitlighet | Det finns absolut garanti för att den överförda data förblir intakt och kommer i samma ordning som den skickades i. | Det finns ingen garanti för att meddelanden eller paket som skickas skulle nå. |
Header Size | TCP-huvudstorleken är 20 byte | UDP Header-storlek är 8 byte. |
Vanliga rubrikfält | Källport, Destination port, Check Sum | Källport, Destination port, Check Sum |
Streaming av data | Data läses som en byte-ström, inga signifikanta indikationer överförs till signalmeddelanden (segment) gränser. | Paket skickas individuellt och kontrolleras endast för integritet om de anländer. Paket har bestämda gränser som är hedrade vid mottagandet, vilket innebär att en läsning vid mottagarens uttag ger ett helt meddelande som det ursprungligen skickades. |
Vikt | TCP är tungviktigt. TCP kräver tre paket för att ställa in en anslutning, innan någon användardata kan skickas. TCP hanterar tillförlitlighet och överbelastningskontroll. | UDP är lätt. Det finns ingen beställning av meddelanden, inga spårningsanslutningar etc. Det är ett litet transportlager som är konstruerat ovanpå IP. |
Dataflödesreglering | TCP gör Flow Control. TCP kräver tre paket för att ställa in en anslutning, innan någon användardata kan skickas. TCP hanterar tillförlitlighet och överbelastningskontroll. | UDP har inget alternativ för flödesstyrning |
Felkontroll | TCP gör felkontroll och felåterställning. Felaktiga paket skickas om från källan till destinationen. | UDP gör felkontroll men helt enkelt förkastar felaktiga paket. Felåterställning försökas inte. |
Fields | 1. Sequence Number, 2. AcK nummer, 3. Data offset, 4. Reserverat, 5. Kontrollbit, 6. Fönster, 7. Urgent Pointer 8. Alternativ, 9. Padding, 10. Check Sum, 11. Source port, 12. Destinationshamn | 1. Längd, 2. Källa port, 3. Destination port, 4. Check Sum |
Bekräftelse | Bekräftelsegrenar | Ingen bekräftelse |
Handslag | SYN, SYN-ACK, ACK | Inget handslag (anslutningsfritt protokoll) |
TCP säkerställer en pålitlig och beställd leverans av en ström av byte från användare till server eller vice versa. UDP är inte dedikerad till slut-till-slut-anslutningar och kommunikation kontrollerar inte mottagarens beredskap.
TCP är mer tillförlitlig eftersom det hanterar meddelandebekräftelse och återutsändningar vid förlorade delar. Således finns det absolut ingen saknade data. UDP säkerställer inte att kommunikation har nått mottagaren eftersom koncept för bekräftelse, timeout och retransmission inte är närvarande.
TCP sändningar skickas i en sekvens och de mottages i samma sekvens. I händelse av datasegment som anländer i fel ordning, återställer TCP och levererar applikation. I fallet med UDP, skickad meddelandesekvens kan inte bibehållas när den når mottagande ansökan. Det finns absolut inget sätt att förutsäga den ordning i vilket meddelandet kommer att tas emot.
TCP är en tung viktförbindelse som kräver tre paket för en uttag och hanterar överbelastningskontroll och tillförlitlighet. UDP är ett lättviktigt transportskikt utformat ovanpå en IP. Det finns inga spårningsanslutningar eller beställning av meddelanden.
TCP läser data som en byte-ström och meddelandet överförs till segmentgränser. UDP Meddelanden är paket som skickas individuellt och vid ankomsten kontrolleras för deras integritet. Paket har definierade gränser medan dataströmmen har ingen.
UDP arbetar på bästa möjliga sätt. Protokollet stöder feldetektering via kontrollsumman men när ett fel upptäcks kasseras paketet. Återförsändelse av paketet för återställning från detta fel försökas inte. Detta beror på att UDP är vanligtvis för tidskänsliga applikationer som spel- eller röstöverföring. Återhämtning från felet skulle vara meningslöst, eftersom det vid den tidpunkt då det retransmitterade paketet mottas kommer det inte att användas.
TCP använder både feldetektering och felåterställning. Fel upptäcks via kontrollsumma och om ett paket är felaktigt bekräftas det inte av mottagaren, vilket utlöser en återförsändelse av avsändaren. Denna operativmekanism kallas Positiv Bekräftelse med Retransmission (PAR).
En TCP-anslutning upprättas via ett trevägs handslag, vilket är en process för att initiera och bekräfta en anslutning. När anslutningen är etablerad kan dataöverföring börja. Efter överföring avslutas anslutningen genom stängning av alla etablerade virtuella kretsar.
UDP använder en enkel överföringsmodell utan implicita handskakningsdialoger för att garantera pålitlighet, ordering eller dataintegritet. Således tillhandahåller UDP en opålitlig tjänst och datagram kan komma i ordning, visas duplicerad eller gå saknas utan föregående meddelande. UDP förutsätter att felkontroll och -korrigering antingen inte är nödvändig eller utförs i applikationen, vilket undviker överlagring av sådan behandling på nätverksgränssnittsnivå. Till skillnad från TCP är UDP kompatibel med paketutsändningar (skicka till allt på lokalt nätverk) och multicasting (skicka till alla abonnenter).
Webbläsning, e-post och filöverföring är vanliga applikationer som använder TCP. TCP används för att styra segmentstorlek, frekvens av datautbyte, flödesstyrning och nätverksbelastning. TCP föredras där felkorrigeringsanläggningar krävs på nätverksgränssnittsnivå. UDP används i stor utsträckning av tidskänsliga applikationer såväl som av servrar som svarar på små frågor från ett stort antal kunder. UDP är kompatibel med paketutsändning - skickar till alla på ett nätverk och multicasting - skickas till alla abonnenter. UDP används vanligtvis i Domain Name System, Voice over IP, Trivial File Transfer Protocol och onlinespel.
För massivt multiplayer online-spel (MMO) måste utvecklare ofta göra ett arkitektoniskt val mellan att använda UDP eller TCP-persistenta anslutningar. Fördelarna med TCP är uthålliga anslutningar, tillförlitlighet och att kunna använda paket med godtyckliga storlekar. Det största problemet med TCP i detta scenario är dess överbelastningsstyrningsalgoritm, som behandlar paketförlust som ett tecken på bandbreddsbegränsningar och automatiskt stryker sändningen av paket. På 3G eller Wi-Fi-nätverk kan detta leda till en väsentlig latens.
Erfaren utvecklare Christoffer Lernö vägrade för och nackdelar och rekommenderar följande kriterier för att välja om du ska använda TCP eller UDP för ditt spel: