Skip to content

TCP versus UDP

5 de augustus de 2021
tcp header 56a1adc85f9b58b7d0c1a24f

Transmission Control Protocol en User Datagram Protocol zijn twee transportlaagprotocollen die veel worden gebruikt met Internet Protocol. Een protocol is een reeks procedures en regels die twee computers volgen om elkaar te begrijpen en gegevens uit te wisselen. Hoewel TCP het meest gebruikte protocol van de twee is, is UDP in sommige situaties nuttiger.

Algemene bevindingen

TCP

  • Garandeert dat gegevens aankomen zoals verzonden.
  • Foutcontroles van gegevensstromen.
  • Een header van 20 bytes maakt een optionele functiegegevens van 40 bytes mogelijk.
  • Langzamer dan UDP.
  • Het beste voor apps die betrouwbaarheid vereisen.

UDP

  • Geen garantie dat gegevens aankomen.
  • Geen foutcontrole voorzien.
  • Een header van 8 bytes laat alleen verplichte functiegegevens toe.
  • Sneller dan TCP.
  • Het beste voor apps die snelheid vereisen.

Beide protocollen verzenden gegevens in pakketjes over het internet. Van de twee is TCP verbindingsgericht. Nadat een verbinding tot stand is gebracht, reizen de gegevens in twee richtingen. UDP is een eenvoudiger protocol dat geen verbinding heeft. TCP is robuuster dan UDP. Het biedt foutcorrectiefuncties en een hoge betrouwbaarheid. UDP is sneller dan TCP, voornamelijk omdat het geen foutcorrectie biedt. Bovendien zorgt TCP voor flow control, terwijl UDP geen optie heeft voor flow control.

Beste voor betrouwbaarheid: TCP

TCP

  • Gegarandeerde levering van gegevens.
  • Volgt datapakketten.
  • Controleert pakketten op fouten.
  • Stroomregeling.
  • Headers van 20 bytes met een optie voor meer.

UDP

  • Geen leveringsgarantie.
  • Pakketten kunnen verloren gaan.
  • Geen stroomregeling.
  • Headers zijn beperkt tot 8 bytes.

TCP garandeert de levering van gegevens aan de ontvanger. Als er gegevens verloren gaan, onderneemt TCP stappen om de verloren gegevens te herstellen en verzendt deze opnieuw. Om dit te doen, volgt TCP datapakketten en controleert het de pakketten op fouten. UDP garandeert de levering van gegevens niet. Bovendien kunnen UDP-pakketten tijdens het transport verloren gaan of beschadigd raken. Zowel TCP als UDP gebruiken headers als onderdeel van het verpakken van de berichtgegevens voor overdracht via netwerkverbindingen. Omdat TCP de meest robuuste van de twee protocollen is, is de header groter met 20 bytes met een optie voor extra gegevens, terwijl UDP-headers beperkt zijn tot 8 bytes.

Beste voor snelheid: UDP

TCP

  • Traag omdat het veel functies vervult.

UDP

  • Snel omdat het beperkte functies biedt.

Hoewel TCP betrouwbaar is, is het langzamer dan UDP, vooral omdat het meer functies vervult. Eindgebruikers die de hoogst mogelijke snelheid nodig hebben, zoals gamers en mensen die met video werken, profiteren van UDP.

Beste voor gebruik: hangt af van het gebruik

TCP

  • Het beste voor web, bestandsoverdracht, e-mail en beveiligde shell.

UDP

  • Het beste voor VPN’s, streaming video, VoIP, live-uitzendingen en online gaming.

Omdat TCP betrouwbaar is, is het het beste in situaties die een hoge betrouwbaarheid vereisen maar geen snelheid vereisen, zoals het web, e-mail en FTP. De snelheid van UDP maakt het het meest geschikt voor online gaming, live-uitzendingen, VPN-tunneling en het streamen van video’s.

TCP-koptekstindeling

Elke TCP-header heeft 10 verplichte velden van in totaal 20 bytes (160 bits) groot. Het kan optioneel een extra gegevensveld bevatten tot een grootte van 40 bytes.

8 bits zijn gelijk aan 1 byte. TCP-headers verschijnen in de volgende volgorde, te beginnen met de bron- en bestemmingscommunicatie-eindpunten:

  • Bron TCP-poortnummer (2 bytes of 16 bits): het bron-TCP-poortnummer vertegenwoordigt het verzendende apparaat.
  • Bestemming TCP-poortnummer (2 bytes of 16 bits): Het bestemmings-TCP-poortnummer is het communicatie-eindpunt voor het ontvangende apparaat.
  • Volgnummer (4 bytes of 32 bits): afzenders van berichten gebruiken volgnummers om de volgorde van een groep berichten te markeren.
  • Bevestigingsnummer (4 bytes of 32 bits): zowel afzenders als ontvangers gebruiken de bevestiging nummers veld om de volgnummers te communiceren van berichten die recentelijk zijn ontvangen of naar verwachting zullen worden verzonden.
  • TCP-gegevensoffset (4 bits): Het data-offset-veld slaat de totale grootte van een TCP-header op in veelvouden van vier bytes. Een header die het optionele TCP-veld niet gebruikt, heeft een data-offset van 5 (wat staat voor 20 bytes), terwijl een header die het optionele veld van maximale grootte gebruikt een data-offset heeft van 15 (wat staat voor 60 bytes).
  • Gereserveerde gegevens (3 bits): Gereserveerde gegevens in TCP-headers hebben altijd de waarde nul. Dit veld lijnt de totale kopgrootte uit als een veelvoud van vier bytes, wat belangrijk is voor de efficiëntie van computergegevensverwerking.
  • Controle vlaggen (tot 9 bits): TCP gebruikt een set van zes standaard en drie uitgebreide controlevlaggen – elk een individuele bit die Aan of Uit vertegenwoordigt – om de gegevensstroom in specifieke situaties te beheren.
  • Venstergrootte (2 bytes of 16 bits): TCP-zenders gebruiken een getal, de zogenaamde venstergrootte, om te regelen hoeveel gegevens ze naar een ontvanger sturen voordat ze een ontvangstbevestiging vragen. Als het venster te klein is, is de overdracht van netwerkgegevens onnodig traag. Als het venster te groot is, kan de netwerkverbinding verzadigd raken of kan de ontvanger de inkomende gegevens niet snel genoeg verwerken, wat resulteert in trage prestaties. Windowing-algoritmen die in het protocol zijn ingebouwd, berekenen dynamisch de groottewaarden en gebruiken dit veld met TCP-headers om wijzigingen tussen afzenders en ontvangers te coördineren.
  • TCP-controlesom (2 bytes of 16 bits): De checksum-waarde in een TCP-header wordt gegenereerd door de afzender van het protocol als een wiskundige techniek om de ontvanger te helpen bij het detecteren van berichten die beschadigd zijn of waarmee is geknoeid.
  • Dringende aanwijzer (2 bytes of 16 bits): Het urgente aanwijzerveld wordt vaak op nul gezet en genegeerd, maar in combinatie met een van de controlevlaggen kan het worden gebruikt als een gegevensoffset om een ​​subset van een bericht te markeren als prioriteitsverwerking.
  • TCP optionele gegevens (0 tot 40 bytes): Gebruik van optionele TCP-gegevens omvat ondersteuning voor speciale bevestiging en algoritmen voor vensterschaling.

UDP-koptekstindeling

Omdat UDP een beperkte capaciteit heeft in vergelijking met TCP, zijn de headers kleiner. Een UDP-header bevat 8 bytes, verdeeld in de volgende vier verplichte velden:

  • Bron UDP-poortnummer (2 bytes): Het bron-UDP-poortnummer vertegenwoordigt het verzendende apparaat.
  • Bestemming UDP-poortnummer (2 bytes): Het bestemmings-UDP-poortnummer is het communicatie-eindpunt voor het ontvangende apparaat.
  • Lengte van gegevens (2 bytes): Het lengteveld in UDP vertegenwoordigt de totale grootte van elk datagram, inclusief koptekst en gegevens. Dit veld varieert in waarde van minimaal 8 bytes (de vereiste headergrootte) tot groottes boven 65.000 bytes.
  • UDP-controlesom (2 bytes): Net als bij TCP, stelt een UDP-controlesom ontvangers in staat om binnenkomende gegevens te controleren op beschadigde bits van het bericht.

Eindoordeel

Er is een reden waarom TCP het meest gebruikte protocol is. Het is robuust en betrouwbaar en garandeert dat gegevens precies worden ontvangen zoals ze zijn verzonden. De op fouten gecontroleerde stroom van informatie kan het iets vertragen, maar in de meeste gevallen is de vertraging geen dealbreaker. De tijd dat UDP helderder schijnt dan TCP, is wanneer snelheid van cruciaal belang is, zoals bij het streamen van video’s, VPN’s of online gamen.