TCP mot UDP

Det finns två typer av IP-trafik (Internet Protocol). Det är TCP eller Transmission Control Protocol och UDP eller User Datagram Protocol . TCP är anslutningsorienterad - när en anslutning har upprättats kan data skickas i två riktningar. UDP är ett enklare, anslutningsfritt internetprotokoll. Flera meddelanden skickas som paket i bitar med UDP.

Jämförelsediagram

TCP jämfört med UDP-jämförelsediagram
TCP UDP
Förkortning förProtokoll för överföringskontrollUser Datagram Protocol eller Universal Datagram Protocol
FörbindelseTransmission Control Protocol är ett anslutningsorienterat protokoll.User Datagram Protocol är ett anslutningsfritt protokoll.
FungeraEftersom ett meddelande tar sig över internet från en dator till en annan. Detta är anslutningsbaserat.UDP är också ett protokoll som används vid meddelandetransport eller överföring. Detta är inte anslutningsbaserat vilket innebär att ett program kan skicka en massa paket till ett annat och det skulle vara slutet på relationen.
AnvändandeTCP är lämplig för applikationer som kräver hög tillförlitlighet och överföringstiden är relativt mindre kritisk.UDP är lämplig för applikationer som behöver snabb och effektiv överföring, till exempel spel. UDP: s statslösa karaktär är också användbar för servrar som svarar på små frågor från ett stort antal klienter.
Använd med andra protokollHTTP, HTTP, FTP, SMTP, TelnetDNS, DHCP, TFTP, SNMP, RIP, VOIP.
Beställning av datapaketTCP ordnar om datapaket i den angivna ordningen.UDP har ingen inneboende ordning eftersom alla paket är oberoende av varandra. Om beställning krävs måste den hanteras av applikationsskiktet.
ÖverföringshastighetHastigheten för TCP är långsammare än UDP.UDP är snabbare eftersom felåterställning inte försöks. Det är ett "bästa försök" -protokoll.
PålitlighetDet finns absolut garanti för att de överförda uppgifterna förblir intakta och anländer i samma ordning som de skickades.Det finns ingen garanti för att meddelanden eller paketen som skickas skulle nå alls.
RubrikstorlekTCP-huvudstorlek är 20 byteUDP Header-storlek är 8 byte.
Vanliga rubrikfältKälla port, Destination port, Check SumKälla port, Destination port, Check Sum
Strömning av dataData läses som en byte-ström, inga distinkta indikationer överförs till signalmeddelandets (segment) gränser.Paket skickas individuellt och kontrolleras endast för integritet om de anländer. Paket har definitiva gränser som respekteras vid mottagandet, vilket innebär att en läsoperation i mottagaruttaget ger ett helt meddelande när det ursprungligen skickades.
ViktTCP är tung. TCP kräver tre paket för att ställa in en socketanslutning innan användarinformation kan skickas. TCP hanterar tillförlitlighet och trängselkontroll.UDP är lätt. Det finns ingen beställning av meddelanden, inga spårningsanslutningar etc. Det är ett litet transportlager designat ovanpå IP.
DataflödeskontrollTCP gör Flow Control. TCP kräver tre paket för att ställa in en socketanslutning innan användarinformation kan skickas. TCP hanterar tillförlitlighet och trängselkontroll.UDP har inget alternativ för flödeskontroll
Fel vid kontrollTCP gör felkontroll och felåterställning. Felaktiga paket överförs från källan till destinationen.UDP gör felkontroll men kastar helt enkelt felaktiga paket. Felåterställning försöks inte.
Fields1. Sekvensnummer, 2. AcK-nummer, 3. Data-offset, 4. Reserverat, 5. Kontrollbit, 6. Fönster, 7. Urgent Pointer 8. Alternativ, 9. Polstring, 10. Kontrollera summan, 11. Källport, 12. Destinationshamn1. Längd, 2. Källport, 3. Destinationsport, 4. Kontrollera summan
BekräftelseBekräftelsessegmentIngen bekräftelse
HandslagSYN, SYN-ACK, ACKIngen handskakning (anslutningsfritt protokoll)

Skillnader i dataöverföringsfunktioner

TCP garanterar 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 tillägnad slutanslutningar och kommunikation kontrollerar inte mottagarens beredskap.

Pålitlighet

TCP är mer tillförlitligt eftersom det hanterar meddelanden kvittering och vidarebefordran om förlorade delar. Därför finns det absolut inga saknade data. UDP garanterar inte att kommunikationen har nått mottagaren eftersom begrepp om kvittens, time-out och vidarebefordran inte finns.

Beställning

TCP- sändningar skickas i en sekvens och de tas emot i samma sekvens. Om datasegment anländer i fel ordning, omordnar TCP och levererar applikationen. När det gäller UDP kanske inte den skickade meddelandesekvensen bibehålls när den når mottagande ansökan. Det finns absolut inget sätt att förutsäga i vilken ordning meddelandet kommer att tas emot.

Förbindelse

TCP är en tung viktanslutning som kräver tre paket för en socketanslutning och hanterar trängselkontroll och tillförlitlighet. UDP är ett lätt transportlager designat ovanpå en IP. Det finns inga spårningsanslutningar eller beställning av meddelanden.

Metod för överföring

TCP läser data som en byte-ström och meddelanden överförs till segmentgränser. UDP- meddelanden är paket som skickas individuellt och vid ankomst kontrolleras deras integritet. Paket har definierade gränser medan dataströmmen inte har någon.

Felupptäckt

UDP arbetar på "bästa ansträngning" -basis. Protokollet stöder feldetektering via kontrollsumma men när ett fel upptäcks kastas paketet. Återförsändning av paketet för återställning från det felet försöker inte. Detta beror på att UDP vanligtvis är för tidskänsliga applikationer som spel eller röstöverföring. Återställning av felet skulle vara meningslöst eftersom det när det överförda paketet tas emot kommer det inte att vara till någon nytta.

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 sändning av avsändaren. Denna driftsmekanism kallas Positiv erkännande med retransmission (PAR).

Hur TCP och UDP fungerar

En TCP-anslutning upprättas via en trevägs handskakning, som är en process för att initiera och bekräfta en anslutning. När anslutningen har upprättats kan dataöverföring börja. Efter överföringen avslutas anslutningen genom stängning av alla etablerade virtuella kretsar.

UDP använder en enkel överföringsmodell utan implicit handskakningsdialoger för att garantera tillförlitlighet, beställning eller dataintegritet. Således tillhandahåller UDP en opålitlig tjänst och datagram kan komma ur funktion, verka duplicerade eller försvinna utan föregående meddelande. UDP antar att felkontroll och korrigering antingen inte är nödvändigt eller utförs i applikationen, vilket undviker omkostnaderna för sådan behandling på nätverksgränssnittsnivå. Till skillnad från TCP är UDP kompatibel med paketutsändningar (skickar till alla i lokalt nätverk) och multicasting (skickas till alla abonnenter).

Olika tillämpningar av TCP och UDP

Webbläsning, e-post och filöverföring är vanliga applikationer som använder TCP. TCP används för att kontrollera segmentstorlek, hastighet för datautbyte, flödeskontroll och nätstockning. TCP är att föredra när felkorrigeringsfunktioner krävs på nätverksgränssnittsnivå. UDP används till stor del av tidskänsliga applikationer såväl som av servrar som svarar på små frågor från ett stort antal klienter. UDP är kompatibel med paketutsändning - skickar till alla i ett nätverk och multicasting - skickar till alla prenumeranter. UDP används ofta i Domain Name System, Voice over IP, Trivial File Transfer Protocol och onlinespel.

TCP vs. UDP för spelservrar

För massivt multiplayer-onlinespel (MMO) måste utvecklare ofta göra ett arkitektoniskt val mellan att använda UDP- eller TCP-persistenta anslutningar. Fördelarna med TCP är ihållande anslutningar, tillförlitlighet och att kunna använda paket av godtyckliga storlekar. Det största problemet med TCP i detta scenario är dess trängselkontrollalgoritm, som behandlar paketförlust som ett tecken på bandbreddbegränsningar och automatiskt stegrar sändningen av paket. På 3G- eller Wi-Fi-nätverk kan detta orsaka en betydande latens.

Den erfarna utvecklaren Christoffer Lernö vägde för- och nackdelarna och rekommenderar följande kriterier för att välja om du vill använda TCP eller UDP för ditt spel:

  • Använd HTTP över TCP för att göra enstaka, klientinitierade statslösa frågor när det är OK att ha en tillfällig försening.
  • Använd ihållande vanliga TCP-uttag om både klient och server oberoende skickar paket men en tillfällig fördröjning är OK (t.ex. Online Poker, många MMO).
  • Använd UDP om både klient och server självständigt kan skicka paket och enstaka fördröjning inte är OK (t.ex. De flesta spel med flera spelare, vissa MMO).

Relaterade Artiklar