TCP 3-vägs handskakning (SYN, SYN-ACK, ACK)

⚡ Smart sammanfattning

TCP 3-Way Handshake är den anslutningsupprättningsritual som varje TCP-session börjar med. En klient och server utbyter SYN-, SYN-ACK- och ACK-paket för att synkronisera sekvensnummer och bekräfta att båda sidor är redo innan en enda byte av applikationsdata skickas.

  • 📨 Känn till de fyra meddelandetyperna: SYN initierar, ACK bekräftar, SYN-ACK kombinerar båda och FIN avslutar en TCP-anslutning.
  • 🔁 Följ de tre stegen: klient SYN → server SYN-ACK → klient ACK; sessionen upprättas först efter att det tredje paketet anländer.
  • 🔢 Sekvensnummer spelar roll: Varje sida väljer ett initialt sekvensnummer; den andra sidan bekräftar det genom att lägga till ett, vilket håller byteströmmen ordnad.
  • 🚪 Plan för rivning: Efter dataöverföringen stänger TCP anslutningen med FIN/ACK-par för att frigöra socketen i båda ändar.
  • 🤖 Använd AI för paketanalys: AI-assistenter förklarar Wireshark fångar, flaggar saknade ACK:er och markerar SYN-översvämningar eller halvöppna anslutningar.

TCP 3-vägs handslag

Vad är TCP trevägshandskakning?

Ocuco-landskapet TCP trevägshandslag är den procedur som en klient och en server använder på en TCP/IP-nätverk att upprätta en tillförlitlig anslutning innan någon applikationsdata utbyts. Som namnet antyder består det av tre steg där båda sidor utbyter synkroniserings- (SYN) och bekräftelse- (ACK) paket och kommer överens om de initiala sekvensnumren de ska använda.

Handskakningen är utformad så att båda slutpunkterna kan initiera, förhandla och riva ner TCP-sockets symmetriskt. När handskakningen är klar är anslutningen fullduplex – båda sidor kan skicka och ta emot parallellt tills endera av dem utfärdar en FIN för att avsluta sessionen.

TCP-meddelandetyper

Fyra kontrollflaggor visas upprepade gånger under handskakningen och nedmonteringen.

Meddelande BESKRIVNING
SYN Initierar en anslutning och synkroniserar sekvensnummer mellan enheter.
ACK Bekräftar för den andra sidan att föregående segment mottogs.
SYN-ACK Ett kombinerat meddelande — en SYN från den lokala enheten plus en ACK för motpartens tidigare SYN.
FIN Används för att avsluta en anslutning på ett smidigt sätt.

TCP trevägs handskakningsprocess

TCP-trafik börjar alltid med en trevägs handskakning. Klienten initierar konversationen genom att begära en session med servern.

TCP 3-vägs handskakningsdiagram

3-vägs handskakningsdiagram.

  • Steg 1 — SYN: Klienten skickar ett segment med SYN-flaggan satt. Det talar om för servern "Jag vill börja kommunicera" och föreslår ett initialt sekvensnummer.
  • Steg 2 — SYN-ACK: Servern svarar med ett segment där både SYN- och ACK-flaggor är inställda. ACK:n bekräftar klientens SYN, och SYN föreslår serverns eget initiala sekvensnummer.
  • Steg 3 — Kvitto: Klienten bekräftar serverns SYN-ACK med en sista ACK. Anslutningen är nu upprättad och båda sidor kan börja transmitapplikationsdata.

Exempel från verkliga världen

TCP 3-vägs handskakning - exempel från verkligheten

Här är ett fungerande exempel med konkreta sekvensnummer.

  • Värd X startar anslutningen genom att skicka ett TCP SYN-paket till servern. Paketet har ett slumpmässigt initialt sekvensnummer — till exempel, 4321 — det markerar början på byteströmmen som värd X skickar.
  • Servern tar emot SYN och svarar med ett SYN-ACK. ACK-numret är värd X:s sekvensnummer ökat med 1 (4322), och SYN föreslår serverns eget initiala sekvensnummer.
  • Värd X svarar med en slutlig ACK vars bekräftelsenummer är serverns sekvensnummer ökat med 1.

När datautbytet är klart, avbryter TCP anslutningen med en fyrvägs FIN/ACK-sekvens så att båda slutpunkterna kan frigöra socketen utan problem.

Varför TCP behöver en trevägshandskakning

Handskakningen är inte bara en formalitet – den löser tre konkreta problem som följer med pålitlig byteströmstransport:

  • Sekvensnummersynkronisering: båda peer-partnerna lär sig det ursprungliga sekvensnumret för den andra sidan, vilket är vad TCP använder för att upptäcka förlorade eller felaktiga segment.
  • Avtal om anslutningsstatus: Den tredje ACK:n bekräftar att serverns SYN-ACK har kommit fram, så ingen av sidorna börjar skicka data förrän båda är i ETABLERADE tillstånd.
  • Skydd mot duplicerade paket: slumpmässiga initiala sekvensnummer och tidsinställda handskakningstillstånd förhindrar att inaktuella segment från en tidigare session accepteras av misstag.

Vanliga problem med TCP-handskakningen

Handskakningen är robust men den bryts ner på identifierbara sätt. Nätverksingenjörer ser vanligtvis något av följande:

  • SYN-översvämningsattacker: En skadlig klient skickar tusentals SYN-meddelanden utan att svara på SYN-ACK-meddelanden, vilket uttömmer serverns anslutningstabell. SYN-cookies är standardförsvaret.
  • Halvöppna anslutningar: När den tredje ACK:en bryts kvarstår anslutningen halvöppen och rensas så småningom upp av en timeout.
  • Brandvägg eller NAT-nedsläpp mitt i flygningen: Tillståndskänsliga mellanboxar som förlorar tillstånd kan tappa SYN-ACK-paket och få klienten att försöka igen.
  • RST-återställningar: Om servern inte lyssnar på den begärda porten besvarar den ett SYN med en RST, vilket avslutar försöket omedelbart.

Vanliga frågor

Två meddelanden kan inte bevisa att båda sidor kom överens om initiala sekvensnummer och är redo att skickas. Den tredje ACK:n bekräftar att serverns SYN-ACK har kommit fram, vilket säkerställer att båda slutpunkterna når tillståndet ESTABLISHED innan data flödar.

SYN är en enda flagga som öppnar konversationen och föreslår ett initialt sekvensnummer. SYN-ACK kombinerar en SYN med en bekräftelse av motpartens tidigare SYN, vilket slutför synkroniseringen i ett paket.

En SYN-översvämning överbelastar en server genom att skicka många SYN-paket utan att slutföra handskakningen. Halvöppna anslutningar fyller backlog-kön och blockerar legitima användare. SYN-cookies är standardåtgärden.

TCP stänger en anslutning med en fyrvägshandskakning av FIN- och ACK-utbyten. Varje riktning stängs oberoende, vilket gör att en sida kan slutföra sändningen av data även efter att den andra sidan har stängt sin halva.

Det initiala sekvensnumret är ett slumpmässigt valt 32-bitarsvärde som varje slutpunkt väljer för sin egen byteström. Det initierar räknaren som används för att upptäcka saknade eller duplicerade segment och för att försvara sig mot förfalskade paket.

Nej. UDP är anslutningslöst och skickar datagram utan handskakning. Det gör det snabbare och lättare än TCP, men applikationer måste själva hantera tillförlitlighet, ordning och kontroll av överbelastning.

AI-assistenter kommenterar paketinsamlingar, klassificerar återtransmits och RST:er, och detekterar SYN-flöden. De översätter Wireshark filtrerar till enkel engelska och rekommenderar nästa diagnostiska steg vid anslutningsproblem.

Ja. AI-kodningsassistenter förvandlar en förfrågan på vanlig engelska till en Python Scapy eller netcat-skript som utlöser och inspekterar trevägshandskakningen, och sedan förklarar varje rad så att ingenjörerna kan granska den innan de kör den.

Sammanfatta detta inlägg med: