Wat zijn TCP en UDP? Een Eenvoudige Uitleg

Het internet is afhankelijk van twee protocollen voor de uitwisseling van informatie tussen computers. Deze communicatieprotocollen definiëren de regels die bepalen hoe gegevensoverdracht plaatsvindt tussen twee betrokken entiteiten, of het nu één-op-één of één-op-veel is. Transmission Control Protocol (TCP) en User Datagram Protocol (UDP) zijn twee protocollen die je kunt gebruiken om gegevens over netwerken te verplaatsen. Ze werken beide op de transportlaag van het OSI-model. 

Vergelijkbaar maar toch verschillend, voeren deze twee protocollen hun taken efficiënt uit. Terwijl de ene verbindingsgeoriënteerd is en het vereist dat er een verbinding wordt opgezet voordat de gegevensoverdracht kan beginnen, is de andere verbindingsloos en stuurt gegevens zonder eerst het bestemmingsapparaat te informeren. Er is meer over wat deze protocollen doen, zoals je hieronder zult ontdekken. Dit artikel richt zich op TCP en UDP — hoe ze werken, hun voordelen, nadelen, en verschillen. 

Wat is TCP?

Transmission Control Protocol is een communicatieprotocol dat voornamelijk gaat over de overdracht van datapakketten op het internet. Het werkt op de transportlaag (laag 4) van het Open Systems Interconnection (OSI) model. Dit protocol helpt bij het overdragen van datapakketten tussen een clientapparaat/-applicatie en een server (samen met UDP). 

TCP is verbindingsgeoriënteerd, wat betekent dat de client en server een verbinding moeten opzetten voordat er gegevens in enige richting worden verzonden. Daarnaast is het een betrouwbaar protocol omdat het controleert op fouten en ervoor zorgt dat datapakketten aankomen op hun bestemming in de volgorde die het verzendende apparaat of applicatie bedoeld heeft. 

Hoe Werkt TCP?

Wanneer TCP wordt gebruikt, leggen een client en een server een verbinding vast met wat bekend staat als de drie-weg-handdruk voordat de bidirectionele overdracht van datapakketten begint. Voordat de drie-weg-handdruk begint, moet de server luisteren op een poort om de verbinding te accepteren. De handdruk begint met de uitwisseling van drie berichten (of vlaggen) bekend als SYN, SYN/ACK en ACK tussen de client en de server.

Laten we hieronder kijken naar een stap-voor-stap proces van de uitwisseling.

1. De client stuurt een SYN-datapakket naar de server. Het SYN-pakket bevat een willekeurig volgnummer (X) dat door de client wordt toegewezen. Het doel van dit pakket is om te zien of de server beschikbaar is voor een nieuwe verbinding. 

2. De server ontvangt het SYN-pakket en bevestigt dit door een SYN/ACK-pakket te versturen. De server stelt het bevestigingsnummer in op één plus het volgnummer (1+X) dat de client heeft toegewezen aan het initiële SYN-pakket en stelt een ander willekeurig volgnummer (Y) in. Dus de server stuurt twee volgnummers samen met zijn SYN/ACK-pakket naar de client.

3. De client ontvangt het SYN/ACK-pakket van de server en erkent dit door een ACK-pakket te versturen. De client stelt het bevestigingsnummer in op één plus het sequentienummer (1+Y) dat het van de server heeft ontvangen. 

Zodra het drieweg-handshakeproces is voltooid, kunnen de client en de server gegevens naar elkaar verzenden en ontvangen.

Voordelen en Nadelen van TCP

Net als de meeste protocollen is TCP niet foutloos; het heeft zijn voor- en nadelen. Laten we hieronder de voor- en nadelen van het gebruik van TCP bekijken. 

Voordelen

1. Betrouwbaar

TCP is betrouwbaar omdat het ervoor zorgt dat datapakketten in de juiste volgorde op hun bestemming aankomen. Wanneer TCP een datasegment verzendt, start het een timer en wacht op een bevestiging van de bestemming. Het zal het segment opnieuw verzenden als het geen bevestiging ontvangt. Daarnaast gebruikt het sequentiëring om te weten wanneer datapakketten niet in de juiste volgorde aankomen.

2. Foutdetectie en Herstel

TCP gebruikt een end-to-end checksum om te controleren op wijzigingen in de pakketten wanneer deze op hun bestemming aankomen. Het verwijdert pakketten met fouten en wacht tot de verzender ze opnieuw verzendt. Daarnaast verwijdert het ook duplicaten van gegevens. 

3. Congestiebeheersing

TCP gebruikt buffering en windowing om congestie te beheren. Congestie kan optreden wanneer het ontvangende einde van de TCP-verbinding meer datapakketten ontvangt dan het tegelijkertijd aankan. TCP gebruikt buffers om congestie te beheren, maar wanneer buffers vol raken, gebruikt het windowing om de hoeveelheid gegevens die de zender tegelijkertijd kan versturen te verminderen. 

Nadelen

1. Lage Snelheid

Vergeleken met UDP is TCP traag. Ten eerste kost de noodzakelijke drie-weg-handdruk tijd. Vervolgens is er de snelheidsvermindering die stroomcontrole, congestiecontrole en foutcontrole veroorzaken tijdens de gegevensoverdracht. In dergelijke gevallen offert TCP snelheid op voor betrouwbaarheid. 

2. Kwetsbaar voor DoS-aanvallen

TCP’s three-way handshake maakt het kwetsbaar voor DoS of DDoS-aanvallen. Een SYN-flood is zo’n aanval waarbij een kwaadwillende entiteit een server onbereikbaar maakt door deze te overstromen met SYN-pakketten. Het doel van deze aanval is om de server overbelast te maken, waardoor deze niet meer kan reageren op legitieme verzoeken.

Wat is UDP?

User Datagram Protocol (UDP) is een communicatieprotocol zoals TCP dat functioneert op de transportlaag van het OSI-model. In tegenstelling tot TCP is het een verbindingsloos protocol, wat betekent dat een client geen verbinding hoeft te maken met de server voordat het datapakketten verzendt. Als gevolg hiervan is er geen drieweg-handdruk, stroombeheersing en sequentiebepaling.

UDP maakt het niet uit of de verzonden datagrammen hun bestemming bereiken of dat ze aankomen in de volgorde waarin de client ze heeft verzonden. Dit maakt het minder betrouwbaar dan TCP, maar sneller aangezien het niet hoeft te wachten op bevestigingen of het opnieuw verzenden van gegevens. Echter, UDP geeft wel om gegevensintegriteit en gebruikt een checksum om te bevestigen dat een derde partij niet met de datagrammen heeft geknoeid. 

Hoe Werkt UDP?

Met UDP is de verplaatsing van datagrammen van hun oorsprong naar bestemming een eenvoudig proces. Nadat het zijn header heeft toegevoegd aan de IP-pakketten die het ontvangt van de netwerklaag, stuurt het datagrammen rechtstreeks naar de bestemmingsserver zonder eerst een verbinding te hoeven opzetten. Het is de eenvoudige aard van dit proces dat UDP een verbindingsloos protocol maakt. 

Daarnaast is UDP ideaal voor tijdgevoelige communicatie waarbij het verlies van gegevens tijdens het transport acceptabel is. Bijvoorbeeld, spraak- en videocommunicatie gebruiken UDP.

Voordelen en Nadelen van UDP

Het ontbreken van flow control en datahertransmissie bij UDP is zowel een voordeel als een nadeel. Hieronder bekijken we de voor- en nadelen van het gebruik van UDP.

Voordelen

1. Snelle Gegevensoverdracht

Aangezien UDP geen bevestiging van datagrammen nodig heeft voordat de bestemmingscomputer meer kan ontvangen en geen gegevens opnieuw verzendt, is het sneller dan TCP. Bovendien resulteert de afwezigheid van een drieweg-handdruk in minder overhead en snellere gegevensoverdrachten. 

2. Foutdetectie

Net als TCP gebruikt UDP een end-to-end checksum om te detecteren of datagrammen fouten bevatten. Door dit te doen, behoudt het de integriteit van de gegevens en verwijdert het datagrammen met fouten. Aangezien er geen mechanisme voor hertransmissie is, herstelt of verzendt UDP geen datagrammen die het verwijdert. 

Nadelen

1. Onbetrouwbaar

Functies die een verbinding betrouwbaar maken, ontbreken bij UDP-verbindingen. In tegenstelling tot TCP, garandeert UDP niet dat verzonden datagrammen hun bestemming zullen bereiken. Als gevolg hiervan hebben datagrammen geen timer nodig en hoeven ze niet te worden bevestigd door het ontvangende apparaat. Bovendien is er geen garantie dat datagrammen in de juiste volgorde op hun bestemming zullen aankomen. 

2. Geen Congestiebeheersing

UDP heeft geen mechanisme om congestie te beheersen. Omdat het geen datagrammen erkent of windowing gebruikt om de gegevensoverdracht te beheersen, is er geen manier om congestie te voorkomen. Als gevolg hiervan kunnen grote uitbarstingen van gegevens leiden tot congesties. 

Verschillen Tussen TCP en UDP

Hieronder zullen we kijken naar de verschillen tussen verbindingsgeoriënteerd TCP en verbindingsloos UDP.

1. Betrouwbaarheid

TCP is een betrouwbaarder protocol vergeleken met UDP. TCP zal bevestigen dat een datasegment zijn bestemming bereikt voordat het een ander verstuurt. Bovendien zorgt het ervoor dat segmenten in dezelfde volgorde aankomen als waarin ze zijn verzonden en zal het gegevens die niet op de bestemming aankomen opnieuw verzenden. Daarnaast gebruikt TCP flow control om te zorgen dat de client geen pakketten sneller verstuurt dan de server kan verwerken. In tegenstelling tot UDP doet het geen van bovenstaande en geeft het meer om gegevens zo snel mogelijk over te dragen.  

2. Snelheid

De functies van TCP die het betrouwbaar maken, maken het trager dan TCP. De drieweg-handdruk, flow control, congestiebeheersing en het hertransmissiemechanisme maken geen deel uit van UDP. Als gevolg hiervan is UDP met minder overhead sneller dan TCP.

3. Gebruik

TCP’s op verbindingen gebaseerde gegevensoverdracht maakt het geschikt voor toepassingen die betrouwbaarheid vereisen en geen dataverlies kunnen accepteren. Bijvoorbeeld, het ondersteunt protocollen zoals HTTP, SSH, FTP, SMTP en IMAP. Aan de andere kant maakt de snelheid van UDP het geschikt voor tijdgevoelige toepassingen of protocollen die dataverlies kunnen accepteren, zoals live video- of audiogesprekken, Voice over IP, DNS-verzoeken en online gaming.

Conclusie

TCP en UDP vormen de basis van communicatie op het internet. Zonder deze twee protocollen zou het lastig zijn voor apparaten die met het internet verbonden zijn om met elkaar te communiceren. TCP is het protocol bij uitstek als je betrouwbaarheid en nauwkeurigheid nodig hebt. Aan de andere kant is UDP het protocol dat je nodig hebt als je minder bezorgd bent over het verliezen van datapakketten en meer bezorgd bent over het snel bereiken van hun bestemming.