Sobes.tech
Junior

Hoe werkt het TCP-protocol?

sobes.tech AI

Antwoord van AI

TCP (Transmission Control Protocol) — dit is een transportlaagprotocol dat betrouwbare, verbinding-georiënteerde gegevenslevering biedt.

Belangrijke aspecten van werking:

  1. Driedubbele handshake (Three-way Handshake):

    • De client stuurt een SYN (Synchronize) pakket met een initiële sequentienummer (ISN).
    • De server ontvangt de SYN, stuurt een SYN-ACK (Synchronize-Acknowledge) met zijn eigen ISN en een bevestiging (ACK) van de ISN van de client (acknowledgement number = client ISN + 1).
    • De client ontvangt de SYN-ACK, stuurt een ACK ter bevestiging van de ISN van de server (acknowledgement number = server ISN + 1).
    • Verbinding is tot stand gebracht, gegevens kunnen worden verzonden.
  2. Stroomgeoriënteerde gegevensoverdracht: Gegevens worden als een continue stroom bytes verzonden, niet als aparte pakketten. TCP segmenteert de gegevensstroom in segmenten voor verzending.

  3. Sequentienummering (Sequence Numbers): Elke byte in de gegevensstroom heeft een uniek nummer. Segmenten bevatten het nummer van de eerste byte die erin zit (sequence number) en het bevestigingsnummer (acknowledgement number), dat wijst naar de volgende byte die de verzender verwacht te ontvangen.

  4. Bevestigingen (Acknowledgements - ACK): Ontvanger stuurt een ACK om de verzender te informeren welke gegevens succesvol zijn ontvangen. Als de verzender geen ACK ontvangt binnen een bepaalde tijd (timeout), verzendt hij het segment opnieuw.

  5. Foutcontrole (Error Control): Controlechecksums worden gebruikt om de integriteit van de gegevens te controleren. Als een segment beschadigd is, wordt het verworpen en wacht de verzender op een timeout of een dubbele ACK voor herverzending.

  6. Stroomregeling (Flow Control): Een mechanisme om bufferoverloop bij de ontvanger te voorkomen. De ontvanger informeert de verzender over de grootte van zijn ontvangvenster in ACK-pakketten. De verzender mag slechts zoveel gegevens verzenden als in het venster staat.

  7. Congestiebeheersing (Congestion Control): Een mechanisme om de beschikbare netwerkcapaciteit te bepalen en de snelheid van gegevensoverdracht dynamisch aan te passen om netwerkcongestie te voorkomen. Bevat algoritmen zoals slow start, congestion avoidance, fast retransmit en fast recovery.

  8. Verbinding afsluiten: Meestal via een vierweg-handshake:

    • Eén zijde stuurt een FIN (Finish) pakket.
    • De andere zijde stuurt een ACK voor de FIN.
    • De andere zijde stuurt zijn eigen FIN (na het voltooien van de overdracht van resterende gegevens).
    • De eerste zijde stuurt een ACK voor deze FIN.
    • Verbinding is gesloten.

Structuur van een TCP-segment:

Veld Grootte (bytes) Beschrijving
Source Port 2 Poort van de afzender
Destination Port 2 Poort van de ontvanger
Sequence Number 4 Nummer van de eerste byte in het segment
Acknowledgement Number 4 Nummer van de volgende verwachte byte
Data Offset/Header Length 4 bits Lengte van de TCP-header
Reserved 6 bits Gereserveerd
Flags (Control Bits) 6 bits URG, ACK, PSH, RST, SYN, FIN
Window Size 2 Ontvangvenster grootte
Checksum 2 Controlegetal van header en gegevens
Urgent Pointer 2 Geeft urgente gegevens aan (indien URG is ingesteld)
Options Variabel Extra opties
Padding Variabel Voor uitlijning van de header
Data Variabel Overgedragen gegevens
// Flags (Control Bits):
// URG: Urgent Pointer field significant
// ACK: Acknowledgement field significant
// PSH: Push functie
// RST: Reset de verbinding
// SYN: Synchroniseer sequentienummers
// FIN: Geen verdere gegevens van de zender