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.
TCP | UDP | |
---|---|---|
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) |
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.
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.
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.
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.
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.
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.
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).
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.
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: