TCP versus UDP

Er zijn twee soorten verkeer via internetprotocol (IP). Zij zijn TCP of Transmission Control Protocol en UDP of User Datagram Protocol. TCP is verbindingsgeoriënteerd - zodra een verbinding tot stand is gebracht, kunnen gegevens bidirectioneel worden verzonden. UDP is een eenvoudiger, verbindingloos internetprotocol. Meerdere berichten worden als pakketten verzonden in chunks met behulp van UDP.

Vergelijkingstabel

TCP versus UDP-vergelijkingstabel
TCPUDP
Afkorting voor Transmission Control Protocol User Datagram Protocol of Universal Datagram Protocol
Verbinding TCP is een verbindingsgericht protocol. UDP is een verbindingsloos protocol.
Functie Naarmate een bericht zijn weg vindt over het internet van de ene computer naar de andere. Dit is gebaseerd op verbindingen. UDP is ook een protocol dat wordt gebruikt in berichtentransport of -overdracht. Dit is geen connection-based, wat betekent dat het ene programma een lading pakketten naar het andere kan sturen en dat dit het einde van de relatie zou zijn.
Gebruik TCP is geschikt voor toepassingen die een hoge betrouwbaarheid vereisen en de verzendtijd is relatief minder kritisch. UDP is geschikt voor toepassingen die een snelle en efficiënte overdracht vereisen, zoals games. Het stateloze karakter van UDP is ook handig voor servers die kleine zoekopdrachten van enorme aantallen clients beantwoorden.
Gebruik door andere protocollen HTTP, HTTPs, FTP, SMTP, Telnet DNS, DHCP, TFTP, SNMP, RIP, VOIP.
Bestellen van datapakketten TCP herschikt gegevenspakketten in de aangegeven volgorde. UDP heeft geen inherente volgorde omdat alle pakketten onafhankelijk van elkaar zijn. Als bestellen vereist is, moet deze worden beheerd door de applicatielaag.
Snelheid van overdracht De snelheid voor TCP is langzamer dan UDP. UDP is sneller omdat foutherstel niet is geprobeerd. Het is een "best effort" -protocol.
Betrouwbaarheid Er is absolute garantie dat de overgedragen gegevens intact blijven en in dezelfde volgorde aankomen als waarin ze werden verzonden. Er is geen garantie dat de verzonden berichten of pakketten helemaal zullen bereiken.
Header grootte TCP-koptekstgrootte is 20 bytes UDP-koptekstgrootte is 8 bytes.
Common Header Fields Bronpoort, Bestemmingspoort, Controleer som Bronpoort, Bestemmingspoort, Controleer som
Streaming van gegevens Gegevens worden gelezen als een bytestream, er worden geen onderscheidende indicaties naar signaalboodschaps (segment) grenzen verzonden. Pakketten worden afzonderlijk verzonden en worden alleen op integriteit gecontroleerd als ze aankomen. Pakketten hebben duidelijke grenzen die bij ontvangst worden gehonoreerd, wat betekent dat een leesbewerking bij de ontvangeraansluiting een volledig bericht oplevert zoals het oorspronkelijk werd verzonden.
Gewicht TCP is zwaar. TCP vereist drie pakketten om een ​​socketverbinding in te stellen, voordat er gebruikersgegevens kunnen worden verzonden. TCP zorgt voor betrouwbaarheid en congestiebeheersing. UDP is licht van gewicht. Het is niet nodig om berichten te ordenen, geen tracking-verbindingen, etc. Het is een kleine transportlaag die op IP wordt ontworpen.
Gegevensstroombeheer TCP doet Flow Control. TCP vereist drie pakketten om een ​​socketverbinding in te stellen, voordat er gebruikersgegevens kunnen worden verzonden. TCP zorgt voor betrouwbaarheid en congestiebeheersing. UDP heeft geen optie voor stroomregeling
Foutcontrole TCP voert foutcontroles en foutherstel uit. Foutieve pakketten worden opnieuw verzonden van de bron naar de bestemming. UDP voert foutcontrole uit, maar negeert foutieve pakketten. Foutherstel is niet geprobeerd.
Fields 1. Volgnummer, 2. AcK-nummer, 3. Gegevensverschuiving, 4. Gereserveerd, 5. Besturingsbit, 6. Venster, 7. Dringende aanwijzer 8. Opties, 9. Opvulling, 10. Totaalbedrag, 11. Bronpoort, 12. Bestemmingspoort 1. Lengte, 2. Bronpoort, 3. Bestemmingspoort, 4. Controleer som
Erkenning Erkenningssegmenten Geen bevestiging
Handdruk SYN, SYN-ACK, ACK Geen handdruk (verbindingsloos protocol)

Inhoud: TCP vs UDP

  • 1 Verschillen in functies voor gegevensoverdracht
    • 1.1 Betrouwbaarheid
    • 1.2 Bestellen
    • 1.3 Verbinding
    • 1.4 Wijze van overdracht
    • 1.5 Foutdetectie
  • 2 Hoe TCP en UDP werken
  • 3 verschillende toepassingen van TCP en UDP
    • 3.1 TCP vs. UDP voor spelservers
  • 4 Referenties

Verschillen in functies voor gegevensoverdracht

TCP zorgt voor een betrouwbare en geordende levering van een stroom van bytes van gebruiker naar server of omgekeerd. UDP is niet bedoeld voor end-to-end-verbindingen en de communicatie controleert de gereedheid van de ontvanger niet.

Betrouwbaarheid

TCP is betrouwbaarder omdat het berichtbevestiging en hertransmissies beheert in geval van verloren onderdelen. Er zijn dus absoluut geen ontbrekende gegevens. UDP garandeert niet dat de communicatie de ontvanger heeft bereikt, aangezien concepten van bevestiging, time-out en hertransmissie niet aanwezig zijn.

Bestellen

TCP verzendingen worden in een reeks verzonden en worden in dezelfde volgorde ontvangen. In het geval dat datasegmenten in de verkeerde volgorde aankomen, herordent TCP en levert de applicatie. In het geval van UDP, verzonden berichtvolgorde kan mogelijk niet worden gehandhaafd wanneer het de ontvangstapplicatie bereikt. Er is absoluut geen manier om de volgorde te voorspellen waarin het bericht zal worden ontvangen.

Verbinding

TCP is een zwaargewicht verbinding die drie pakketten vereist voor een socket-aansluiting en zorgt voor congestiebesturing en betrouwbaarheid. UDP is een lichtgewicht transportlaag die is ontworpen bovenop een IP. Er zijn geen tracking-verbindingen of het bestellen van berichten.

Wijze van overdracht

TCP leest gegevens als een bytestream en het bericht wordt verzonden naar segmentgrenzen. UDP berichten zijn pakketten die individueel worden verzonden en bij aankomst worden gecontroleerd op hun integriteit. Pakketten hebben gedefinieerde grenzen terwijl datastromen geen grenzen hebben.

Fout detectie

UDP werkt op een "best-effort" -basis. Het protocol ondersteunt foutdetectie via controlesom, maar wanneer een fout wordt gedetecteerd, wordt het pakket genegeerd. Het opnieuw verzenden van het pakket voor herstel van die fout wordt niet geprobeerd. Dit komt omdat UDP meestal voor tijdgevoelige toepassingen is, zoals gaming of spraakoverdracht. Herstel van de fout zou zinloos zijn, want tegen de tijd dat het opnieuw verzonden pakket wordt ontvangen, zal het geen enkel nut hebben.

TCP gebruikt zowel foutdetectie als foutherstel. Fouten worden gedetecteerd via controlesom en als een pakket onjuist is, wordt het niet bevestigd door de ontvanger, wat een hertransmissie door de zender veroorzaakt. Dit bedieningsmechanisme wordt Positive Acknowledgement with Retransmission (PAR) genoemd.

Hoe TCP en UDP werken

Een TCP-verbinding wordt tot stand gebracht via een drieweg-handshake, wat een proces is van het initiëren en bevestigen van een verbinding. Zodra de verbinding tot stand is gebracht, kan de gegevensoverdracht beginnen. Na verzending wordt de verbinding beëindigd door alle bestaande virtuele circuits te sluiten.

UDP gebruikt een eenvoudig transmissiemodel zonder impliciete handshake-dialogen voor het garanderen van betrouwbaarheid, ordening of gegevensintegriteit. UDP biedt dus een onbetrouwbare service en datagrammen kunnen buiten gebruik geraken, dubbel worden weergegeven of zonder kennisgeving worden gemist. UDP gaat ervan uit dat foutcontrole en -correctie niet noodzakelijk is of wordt uitgevoerd in de toepassing, waardoor de overhead van dergelijke verwerking op het niveau van de netwerkinterface wordt vermeden. In tegenstelling tot TCP is UDP compatibel met pakketuitzendingen (verzenden naar iedereen op lokaal netwerk) en multicasting (verzenden naar alle abonnees).

Verschillende toepassingen van TCP en UDP

Surfen op het web, e-mail en bestandsoverdracht zijn veelvoorkomende toepassingen die gebruik maken van TCP. TCP wordt gebruikt om de segmentgrootte, snelheid van gegevensuitwisseling, stroomregeling en netwerkcongestie te regelen. TCP heeft de voorkeur waar foutcorrectiefaciliteiten op netwerkinterfaceniveau vereist zijn. UDP wordt grotendeels gebruikt door tijdgevoelige applicaties en door servers die kleine zoekopdrachten van een groot aantal clients beantwoorden. UDP is compatibel met pakketuitzending - verzenden naar iedereen op een netwerk en multicasting - verzenden naar alle abonnees. UDP wordt veel gebruikt in Domain Name System, Voice over IP, Trivial File Transfer Protocol en online games.

TCP versus UDP voor spelservers

Voor massieve multiplayer online (MMO) games moeten ontwikkelaars vaak een architecturale keuze maken tussen het gebruik van UDP- of TCP-permanente verbindingen. De voordelen van TCP zijn permanente verbindingen, betrouwbaarheid en het kunnen gebruiken van pakketten van willekeurige grootten. Het grootste probleem met TCP in dit scenario is het congestiebesturingsalgoritme, dat pakketverlies behandelt als een teken van bandbreedtebeperkingen en automatisch het verzenden van pakketten vertraagt. Op 3G- of Wi-Fi-netwerken kan dit een aanzienlijke latentie veroorzaken.

Ervaren ontwikkelaar Christoffer Lernö woog de voor- en nadelen en beveelt de volgende criteria aan om te kiezen of u TCP of UDP voor uw spel wilt gebruiken:

  • Gebruik HTTP over TCP voor het maken van af en toe door de client geïnitieerde stateloze zoekopdrachten wanneer het OK is om af en toe een vertraging te hebben.
  • Gebruik persistente gewone TCP-sockets als zowel de client als de server onafhankelijk pakketten verzenden, maar een enkele vertraging is OK (bijvoorbeeld Online Poker, veel MMO's).
  • Gebruik UDP als zowel de client als de server onafhankelijk pakketten verzenden en af ​​en toe vertraging niet OK is (bijvoorbeeld de meeste multiplayer-actiegames, sommige MMO's).

Referenties

  • Wikipedia: Transmission Control Protocol
  • Wikipedia: User Datagram Protocol
  • UDP vs TCP voor gameservers
  • Het Transmission Control Protocol