TCP 3-weg handshake (SYN, SYN-ACK,ACK)
โก Slimme samenvatting
De TCP 3-Way Handshake is het ritueel waarmee elke TCP-sessie begint en een verbinding tot stand brengt. Een client en server wisselen SYN-, SYN-ACK- en ACK-pakketten uit om de volgnummers te synchroniseren en te bevestigen dat beide partijen gereed zijn voordat er ook maar รฉรฉn byte aan applicatiegegevens wordt verzonden.

Wat is de TCP Three-Way Handshake?
De TCP-handshake in drie richtingen is de procedure die een client en een server gebruiken op een TCP/IP-netwerk Om een โโbetrouwbare verbinding tot stand te brengen voordat er applicatiegegevens worden uitgewisseld. Zoals de naam al aangeeft, bestaat het uit drie stappen waarbij beide partijen synchronisatiepakketten (SYN) en bevestigingspakketten (ACK) uitwisselen en de initiรซle volgnummers afspreken die ze zullen gebruiken.
De handshake is zo ontworpen dat beide eindpunten symmetrisch TCP-sockets kunnen initiรซren, onderhandelen en verbreken. Zodra de handshake is voltooid, is de verbinding full-duplex: beide zijden kunnen parallel verzenden en ontvangen totdat een van beide een FIN-bericht verstuurt om de sessie te sluiten.
TCP-berichttypen
Tijdens de handdruk en het afbreken van de verbinding verschijnen herhaaldelijk vier controlevlaggen.
| Typ hier uw vraag of bericht | Beschrijving |
|---|---|
| SYN | Legt een verbinding tot stand en synchroniseert volgnummers tussen apparaten. |
| ACK | Bevestigt aan de andere partij dat het vorige segment is ontvangen. |
| SYN-ACK | Een gecombineerd bericht: een SYN van het lokale apparaat plus een ACK van de eerdere SYN van de tegenpartij. |
| END | Wordt gebruikt om een โโverbinding op een gecontroleerde manier te beรซindigen. |
TCP-handshakeproces in drie richtingen
TCP-verkeer begint altijd met een drieweg-handshake. De client initieert de communicatie door een sessie met de server aan te vragen.
Diagram van een drieweg-handdruk.
- Stap 1 โ SYN: De client verzendt een segment met de SYN-vlag ingesteld. Hiermee geeft de client de server het signaal "Ik wil beginnen met communiceren" en stelt een initieel volgnummer voor.
- Stap 2 โ SYN-ACK: De server reageert met een segment waarin zowel de SYN- als de ACK-vlag zijn ingesteld. De ACK bevestigt de SYN van de client, en de SYN stelt het eigen initiรซle volgnummer van de server voor.
- Stap 3 โ ACK: De client bevestigt de SYN-ACK van de server met een laatste ACK. De verbinding is nu tot stand gebracht en beide partijen kunnen beginnen. transmitting applicatiegegevens.
Voorbeeld uit de echte wereld
Hier volgt een uitgewerkt voorbeeld met concrete volgnummers.
- Host X start de verbinding door een TCP SYN-pakket naar de server te sturen. Het pakket bevat een willekeurig beginnummer โ bijvoorbeeld,
4321โ dat markeert het begin van de bytestroom die Host X zal verzenden. - De server ontvangt de SYN en antwoordt met een SYN-ACK. Het ACK-nummer is het volgnummer van host X verhoogd met 1.
4322), en de SYN stelt het eigen initiรซle volgnummer van de server voor. - Host X antwoordt met een laatste ACK waarvan het bevestigingsnummer gelijk is aan het volgnummer van de server, verhoogd met 1.
Zodra de gegevensuitwisseling is voltooid, verbreekt TCP de verbinding met een vierweg FIN/ACK-sequentie, zodat beide eindpunten de socket netjes kunnen vrijgeven.
Waarom TCP een drieweg-handshake nodig heeft
De handdruk is niet zomaar een formaliteit; hij lost drie concrete problemen op die zich voordoen bij betrouwbaar transport van bytestromen:
- Synchronisatie van volgnummers: Beide partijen leren het initiรซle volgnummer van de andere kant kennen, wat TCP gebruikt om verloren of niet-in-de-volgorde zijnde segmenten te detecteren.
- Verbindingsstatusovereenkomst: De derde ACK bevestigt dat de SYN-ACK van de server is aangekomen, dus geen van beide partijen begint met het verzenden van gegevens totdat beide partijen in de ACK-status zijn. GEVESTIGD staat.
- Bescherming tegen dubbele pakketten: Willekeurige beginsequentienummers en getimede handshake-statussen voorkomen dat verouderde segmenten van een vorige sessie per ongeluk worden geaccepteerd.
Veelvoorkomende problemen met de TCP-handshake
De handshake is robuust, maar kan op herkenbare manieren mislukken. Netwerkengineers zien doorgaans een van de volgende problemen:
- SYN-overstromingsaanvallen: Een kwaadwillende client verstuurt duizenden SYN-verzoeken zonder te reageren op SYN-ACK-berichten, waardoor de verbindingstabel van de server overbelast raakt. SYN-cookies vormen de standaardverdediging.
- Halfopen verbindingen: Als de derde ACK verloren gaat, blijft de verbinding halfopen en wordt deze uiteindelijk verbroken door een time-out.
- Firewall- of NAT-problemen tijdens de vlucht: Stateful middleboxen die hun status verliezen, kunnen SYN-ACK-pakketten laten vallen, waardoor de client het opnieuw moet proberen.
- RST-resetten: Als de server niet luistert op de gevraagde poort, beantwoordt hij een SYN-verzoek met een RST-verzoek, waardoor de poging onmiddellijk wordt beรซindigd.


