Sobes.tech
Middle

Vertel me over de transportlaag (transport layer) van het TCP/IP-model.

sobes.tech AI

Antwoord van AI

Het TCP/IP-transportslaagniveau zorgt voor communicatie tussen processen die op verschillende hosts worden uitgevoerd. Belangrijkste taken:

  • Identificatie van applicaties/processen op de host (via poorten).
  • Het bieden van dataleveringsdiensten:
    • Betrouwbare, geordende levering (TCP).
    • Onbetrouwbare, niet-garandeerde levering (UDP).

Twee hoofdprotocollen:

  • Transmission Control Protocol (TCP):
    • Verbindinggeoriënteerd.
    • Garandeert de levering van pakketten, behoudt de volgorde, controleert de stroom en beheert congestie.
    • Gebruikt voor applicaties die betrouwbare overdracht vereisen (HTTP, FTP, SMTP).
  • User Datagram Protocol (UDP):
    • Zonder verbinding.
    • Garandeert niet de levering, volgorde of stroomcontrole.
    • Lage latentie, geschikt voor tijdgevoelige applicaties waar kleine gegevensverlies acceptabel is (DNS, VoIP, streaming video).

TCP-segmenten bevatten velden voor: bron-/bestemmingpoorten, sequentienummers, bevestigingsnummers, vlaggen (SYN, ACK, FIN), checksum.

UDP-datagrammen bevatten velden voor: bron-/bestemmingpoorten, lengte en checksum.

Poorten (ports): 16-bits nummers die worden gebruikt voor multiplexing/demultiplexing van gegevens tussen processen.

  • Well-known ports (0-1023): Gereserveerd voor standaarddiensten (80 voor HTTP, 443 voor HTTPS, 22 voor SSH).
  • Registered ports (1024-49151): Gebruikt voor privéapplicaties die bij IANA zijn geregistreerd.
  • Dynamic/Private ports (49152-65535): Gebruikt door clients voor uitgaande verbindingen.

Voorbeeld van het opzetten van een TCP-verbinding (Three-way Handshake):

  1. De client stuurt een segment met de vlag SYN en een initiële sequentie.
  2. De server ontvangt SYN, reageert met een segment met vlaggen SYN en ACK, zijn initiële sequentie en een bevestigingsnummer gelijk aan client_seq + 1.
  3. De client ontvangt SYN+ACK, reageert met een segment met vlag ACK en een bevestigingsnummer gelijk aan server_seq + 1. De verbinding is tot stand gebracht.
// Voorbeeld van een TCP-headerstructuur (vereenvoudigd)
struct tcp_header {
    unsigned short src_port;       // Bronpoort
    unsigned short dest_port;      // Doelpoort
    unsigned int   seq_num;        // Sequentienummer
    unsigned int   ack_num;        // Bevestigingsnummer
    unsigned short flags;          // Vlaggen (SYN, ACK, FIN, etc.)
    // andere velden...
};
// Voorbeeld van een UDP-headerstructuur (vereenvoudigd)
struct udp_header {
    unsigned short src_port;       // Bronpoort
    unsigned short dest_port;      // Doelpoort
    unsigned short length;         // Lengte van het UDP-datagram
    unsigned short checksum;       // Checksum
};