TCP (1) INLEIDING
- TCP staat voor Transmission Control Protocol
- TCP zit in de transportlaag (4de laag) van het praktijkmodel
- een TCP-pakket wordt een segment genoemd
- TCP zit naast UDP in de vierde laag; UDP is ook een transport protocol
- TCP is connection oriented -> houdt rekening met feedback a.d.h.v. Session Management en ACKnowledgements
- UDP is connectionless:
- UDP houdt zelf geen rekening met de volgorde van de pakketten
- UDP heeft geen mechanisme om verloren pakketten opnieuw te versturen
TCP-header
ref.: https://networklessons.com/cisco/ccie-routing-switching-written/tcp-header
verklaring van de verschillende velden
ref.: https://www.ibm.com/docs/en/aix/7.2?topic=protocols-tcp-header-field-definitions
Source Port het TCP-poortnummer van de verzender
Destination Port het TCP-poortnummer van de ontvanger
Sequence Number het VOLGnummer van de eerste byte van de data in dit pakket
Acknowledgment Number het volgnummer van de tot nu laatst ontvangen byte in dit pakket
Data Offset offset verwijst naar het referentiepunt waar de data van dit pakket naartoe moet
Reserved gereserveerd voor future use.
TCP flags gebruikte controlebits in dit pakket
CWR - Congestion Window Reduced (zie later)
ECE - ECN echo (zie later)
URG - Urgent pointer field is valid.
ACK - Acknowledgement field is valid.
PSH - Segment requests a PUSH.
RST - Resets the connection.
SYN - Synchronizes the sequence numbers.
FIN - Sender has reached the end of its byte stream.
Window specifieert de hoeveelheid data die de bestemming kan aanvaarden
Checksum verifieert de integriteit van header en data.
Urgent Pointer Deze pointer specifieert de eindpositie van de urgent data
Options (zie later)
-- End of Option List
-- No Operation
-- Maximum Segment Size
funkties
- session management (three way handshake)
- session setup
- session tear down
- keep alive frames
- multiplexing a.d.h.v. portnumbers
- client ephemeral port
- server well known port -- https://nl.wikipedia.org/wiki/TCP-_en_UDP-poorten
- full duplex
- flow control (sliding window mechanism)
- segmenting (message segmenteren tot stukken die in de Data-Link-Laag passen)
- sequencing (segments get a number)
- acknowledgements (zie TCP flags)
- next sequence number other side
- error correction (if no ACK after 5 seconds -> resend of entire transmission window)
- error detection (a.d.h.v. checksum)
flags
ref.: (https://www.geeksforgeeks.org/tcp-flags/)
Synchronization (SYN) – wordt gebruikt in de allereerste stap van de bij het opbouwen van een verbindings. werkt volgens het 3-way-handshake proces tussen de twee hosts.
Bij het eerste pakket van zowel de afzender als de ontvanger moet deze vlag aan staan (bit op 1). Een begin-sequence-number wordt hierbij ingesteld.
Acknowledgement (ACK) – wordt gebruikt om pakketten te bevestigen die met succes door de host aand de andere kant zijn ontvangen.
Finish (FIN) – dient om aan te geven dat de verbinding mag verbroken worden, gezien de verzender geen data meer te verzenden heeft. Dit is normaal het laatste pakket van een verzender. De verbinding wordt van de andere kant ook afgebroken met een andere (FIN)
Reset (RST) – De host die de RESET flag doorstuurt, wil de verbinding verbreken omdat er zware netwerkfouten gebeurd zijn met de TCP verbinding.
Urgent (URG) – wordt gebruikt om aan te geven dat de gegevens in het pakket prioriteit moeten krijgen en dringend(er) door de ontvanger moeten worden afgehandeld. Deze vlag wordt gebruikt in combinatie met het veld Urgent Pointer om de locatie van de urgente gegevens in het pakket te identificeren.
Push (PSH) – wordt gebruikt om onmiddellijke levering van gegevens aan de ontvangende host te verzoeken, zonder te wachten tot aanvullende gegevens aan de kant van de afzender zijn gebufferd. Deze vlag wordt vaak gebruikt in toepassingen zoals realtime audio- of videostreaming.
Congestion Window Reduced (CWR) (1 bit): De vlag Congestion Window Reduced (CWR) wordt ingesteld door de verzendende host om aan te geven dat deze een TCP-segment heeft ontvangen met de ECE-vlag ingesteld en heeft gereageerd in het congestiecontrolemechanisme.
ECN-Echo (ECE) (1 bit): ECN-Echo heeft een dubbele rol, afhankelijk van de waarde van de SYN-vlag. Dit geeft het volgende aan:
Als de SYN-vlag is ingesteld, is de TCP-peer geschikt voor ECN.
Als de SYN-vlag niet is ingesteld, is tijdens normale transmissie een pakket ontvangen met de Congestion Experienced-vlag ingesteld in de IP-header. Dit dient als indicatie voor netwerkobstructie (of dreigende congestie) naar de TCP-afzender.
aansluitend LAB: http://netwerk800.be/basis/labs/tcp-en-http