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):
- De client stuurt een segment met de vlag SYN en een initiële sequentie.
- 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.
- 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
};