Wat is TCP en hoe werkt dit protocol?

Auteur: Gepubliceerd

Kort samengevat: TCP is een transportprotocol: een verzameling regels voor gegevensoverdracht tussen applicaties in een netwerk. Het zorgt ervoor dat gegevens in de juiste volgorde worden afgeleverd, detecteert ontbrekende gegevens en verstuurt verloren delen opnieuw. Het garandeert echter niet dat elke verbinding succesvol verloopt en versleutelt de verzonden informatie niet zelf.

Welke rol speelt TCP op internet?

TCP, voluit Transmission Control Protocol, werkt tussen applicaties en de laag die pakketten door het netwerk verstuurt. Het wordt onder meer gebruikt voor e-mail, inloggen op afstand via SSH en veel verbindingen met websites. Dankzij TCP hoeft een applicatie niet zelf de volgorde van gegevens bij te houden of verloren delen opnieuw te versturen.

TCP wordt vaak samen met de afkorting IP genoemd, maar deze protocollen hebben verschillende taken. IP zorgt voor de adressering en het versturen van pakketten tussen apparaten; het garandeert niet dat ze aankomen of in de juiste volgorde worden afgeleverd. TCP voegt de mechanismen toe die nodig zijn om een geordende bytestroom betrouwbaar over te dragen: een reeks gegevens die de applicatie uitleest.

Je kunt dit vergelijken met het versturen van genummerde delen van een document. IP helpt de zendingen naar de ontvanger te sturen, terwijl TCP de nummering, ontvangstbevestigingen en het opnieuw versturen van ontbrekende delen verzorgt. Dit is een vereenvoudiging: in werkelijkheid nummert TCP bytes, geen documentpagina’s.

Hoe maakt TCP verbinding en verstuurt het gegevens?

Voordat de normale gegevensuitwisseling begint, brengt TCP een verbinding tot stand. De basisprocedure bestaat uit drie stappen en heet de three-way handshake:

  1. De client verstuurt een SYN-bericht met het voorstel om een verbinding te starten.
  2. De server antwoordt met SYN-ACK, waarmee hij het voorstel bevestigt en zijn eigen beginparameters doorgeeft.
  3. De client verstuurt ACK als bevestiging van het antwoord van de server.

Tijdens deze afstemming bepalen beide partijen onder meer hun eerste volgnummers. Daarmee kunnen ze de positie van gegevens in de stroom bijhouden. Het tot stand brengen van de verbinding betekent op zichzelf nog niet dat de gebruiker is ingelogd of dat de identiteit van de server is gecontroleerd.

Vervolgens worden de gegevens verstuurd in segmenten: porties met een deel van de gegevens en besturingsinformatie voor TCP. De ontvanger bevestigt de ontvangen gegevens. Aan de hand van die bevestigingen of het verstrijken van de tijd stelt de verzender vast dat er waarschijnlijk gegevens verloren zijn gegaan. Ontbrekende gegevens worden opnieuw verstuurd; dit heet retransmissie.

Als segmenten in een andere volgorde aankomen, zet TCP ze in de juiste volgorde voordat de applicatie ze krijgt. Ook voorkomt het dat de applicatie dezelfde bytes twee keer uitleest wanneer gegevens dubbel aankomen. Als een storing te lang duurt, kan de verbinding worden verbroken zonder dat alle gegevens zijn afgeleverd.

Wat biedt TCP en wat doet het niet?

Naast het bewaken van de volgorde regelt TCP het tempo van de gegevensoverdracht. Flowcontrol voorkomt dat de ontvanger meer gegevens krijgt dan hij op dat moment kan verwerken. Congestiecontrole past het versturen aan de netwerkomstandigheden aan en vermindert zo de belasting van overbelaste verbindingen.

TCP bevat ook een controlesom die helpt om onbedoelde beschadigingen van segmenten te detecteren. Dit is echter geen cryptografische bescherming tegen opzettelijke wijzigingen. Versleuteling en authenticatie worden door andere mechanismen verzorgd, zoals TLS, dat wordt gebruikt in HTTPS.

Er zijn nog twee belangrijke beperkingen:

Als de verbinding bijvoorbeeld tijdens het plaatsen van een bestelling wordt verbroken, kun je uit de TCP-fout alleen niet afleiden of de bestelling is aangemaakt. Controleer de status ervan in de webwinkel voordat je de handeling herhaalt, in plaats van aan te nemen dat de gegevens niet zijn aangekomen.

Waarin verschilt TCP van UDP?

UDP is een ander transportprotocol. Het verstuurt afzonderlijke berichten, datagrammen genoemd, zonder ingebouwde ontvangstbevestiging, retransmissie of ordening. Een applicatie kan zulke mechanismen toevoegen, maar UDP biedt ze niet zelf.

KenmerkTCPUDP
Manier van versturenGeordende bytestroomAfzonderlijke datagrammen
Opnieuw versturen van verloren gegevensIngebouwdAfhankelijk van de applicatie
Verbinding tot stand brengenVereistUDP kent deze procedure niet
Gebruikelijke prioriteit bij toepassingVolledigheid en volgorde van gegevensControle door de applicatie over vertraging en verlies

Bij het downloaden van een bestand moet een ontbrekend deel worden aangevuld. De mechanismen van TCP komen dan goed van pas. Tijdens een spraakgesprek kan een te laat aangekomen stukje geluid minder nuttig zijn dan een korte onderbreking voor lief nemen. Daarom gebruiken realtimeoplossingen vaak UDP.

Dat betekent niet dat UDP altijd sneller is of dat elke website TCP gebruikt. HTTP/1.1 en HTTP/2 werken doorgaans via TCP, terwijl HTTP/3 QUIC gebruikt, dat op UDP is gebaseerd. QUIC biedt zelf onder meer betrouwbare overdracht van gegevensstromen en versleuteling.

Wat betekent een TCP-poort in de netwerkinstellingen?

Een poort is een nummer waarmee het systeem verkeer naar de juiste dienst kan sturen. Een IP-adres verwijst naar een punt in het netwerk; de poort maakt het mogelijk om de diensten op dat adres van elkaar te onderscheiden. Een veelvoorkomend voorbeeld is TCP-poort 443, die wordt gebruikt voor HTTPS via TCP.

TCP en UDP hebben afzonderlijke poortbereiken. Een firewallregel die TCP 443 toestaat, staat niet automatisch UDP 443 toe, dat vaak wordt gebruikt door HTTP/3. Een open poort bewijst op zichzelf ook niet dat een applicatie correct of veilig werkt.

Als je een firewall configureert, controleer dan in de documentatie van de betreffende dienst welk protocol, welk poortnummer en welke verkeersrichting nodig zijn. Zo kun je een gerichte regel instellen in plaats van onnodig al het TCP- en UDP-verkeer toe te laten.

Zie ook: Wat betekent www?

Lees ook

Lees hoe PHP-FPM PHP-verzoeken verwerkt, verschilt van een webserver en hoe je processen afstemt op verkeer en hostingcapaciteit.
Ontdek hoe BIND als open DNS-serversoftware domeinen beheert, welke rollen het vervult en wanneer zelf beheren zinvol is.
Lees wat het Poolse REGON-register en -nummer betekenen, hoe ze verschillen van NIP en KRS en hoe je bedrijfsgegevens controleert.