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.

  • ๐Ÿ“จ Ken de vier soorten berichten: SYN initieert, ACK bevestigt, SYN-ACK combineert beide en FIN beรซindigt een TCP-verbinding.
  • ๐Ÿ” Volg de drie stappen: Client SYN โ†’ server SYN-ACK โ†’ client ACK; de sessie wordt pas tot stand gebracht nadat het derde pakket is aangekomen.
  • ๐Ÿ”ข Volgnummers zijn belangrijk: Elke partij kiest een initieel volgnummer; de andere partij bevestigt dit door er รฉรฉn bij op te tellen, waardoor de bytestroom geordend blijft.
  • ๐Ÿšช Plan voor demontage: Na de gegevensoverdracht sluit TCP de verbinding met FIN/ACK-paren om de socket aan beide kanten vrij te geven.
  • ๐Ÿค– Gebruik AI voor pakketanalyse: AI-assistenten leggen uit Wireshark legt ontbrekende ACK's vast, markeert deze en wijst op SYN-floods of halfopen verbindingen.

TCP 3-weg handshake

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.

TCP 3-Way Handshake Diagram

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

Een praktijkvoorbeeld van een TCP-drieweghandshake

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.

Veelgestelde vragen

Twee berichten bewijzen niet dat beide partijen het eens zijn over de initiรซle volgnummers en klaar zijn om te verzenden. De derde ACK bevestigt dat de SYN-ACK van de server is aangekomen, waardoor beide eindpunten de ESTABLISHED-status bereiken voordat de gegevens worden verzonden.

SYN is een enkele vlag die het gesprek opent en een initieel volgnummer voorstelt. SYN-ACK combineert een SYN met een bevestiging van de eerdere SYN van de tegenpartij, waardoor de synchronisatie in รฉรฉn pakket wordt voltooid.

Een SYN-flood overbelast een server door een groot aantal SYN-pakketten te verzenden zonder de handshake te voltooien. Halfopen verbindingen vullen de wachtrij en blokkeren legitieme gebruikers. SYN-cookies zijn de standaardoplossing hiervoor.

TCP sluit een verbinding af met een vierweg-handshake van FIN- en ACK-uitwisselingen. Elke richting wordt onafhankelijk afgesloten, waardoor de ene kant de gegevensoverdracht kan voltooien, zelfs nadat de andere kant zijn deel heeft afgesloten.

Het initiรซle volgnummer is een willekeurig gekozen 32-bits waarde die elk eindpunt selecteert voor zijn eigen bytestroom. Deze waarde dient als initialisatie voor de teller die wordt gebruikt om ontbrekende of dubbele segmenten te detecteren en om te beschermen tegen vervalste pakketten.

Nee. UDP is verbindingsloos en verzendt datagrammen zonder handshake. Daardoor is het sneller en lichter dan TCP, maar applicaties moeten zelf zorgen voor betrouwbaarheid, volgorde en congestiebeheer.

AI-assistenten annoteren pakketcaptures en classificeren ze opnieuw.transmits en RST's, en detecteren SYN-overstromingen. Ze vertalen Wireshark De filters worden in begrijpelijke taal vertaald en de volgende diagnostische stap voor verbindingsproblemen wordt aanbevolen.

Ja. AI-codeerassistenten zetten een verzoek in gewoon Engels om in een Python Scapy Of een netcat-script dat de drieweg-handshake activeert en inspecteert, en leg vervolgens elke regel uit zodat engineers deze kunnen controleren voordat ze het script uitvoeren.

Vat dit bericht samen met: