TCP 3-vejs håndtryk (SYN, SYN-ACK, ACK)

⚡ Smart opsummering

TCP 3-Way Handshake er det forbindelsesopsætningsritual, som enhver TCP-session starter med. En klient og server udveksler SYN-, SYN-ACK- og ACK-pakker for at synkronisere sekvensnumre og bekræfte, at begge sider er klar, før en eneste byte applikationsdata sendes.

  • 📨 Kend de fire beskedtyper: SYN initierer, ACK bekræfter, SYN-ACK kombinerer begge, og FIN afslutter en TCP-forbindelse.
  • 🔁 Følg de tre trin: klient SYN → server SYN-ACK → klient ACK; sessionen etableres først efter den tredje pakke ankommer.
  • 🔢 Sekvennumre har betydning: Hver side vælger et initialt sekvensnummer; den anden side kvitterer det ved at tilføje et, hvilket holder bytestrømmen ordnet.
  • 🚪 Plan for nedrivning: Efter dataoverførsel lukker TCP forbindelsen med FIN/ACK-par for at frigive socket'en i begge ender.
  • 🤖 Brug AI til pakkeanalyse: AI-assistenter forklarer Wireshark optager, markerer manglende ACK'er og fremhæver SYN-oversvømmelser eller halvåbne forbindelser.

TCP 3-vejs håndtryk

Hvad er TCP trevejs-handshake?

TCP tre-vejs håndtryk er den procedure, som en klient og en server bruger på en TCP/IP netværk at oprette en pålidelig forbindelse, før der udveksles applikationsdata. Som navnet antyder, består det af tre trin, hvor begge sider udveksler synkroniserings- (SYN) og bekræftelses- (ACK) pakker og aftaler de indledende sekvensnumre, de vil bruge.

Handshaket er designet således, at begge endpoints kan initiere, forhandle og nedbryde TCP-sockets symmetrisk. Når handshaket er fuldført, er forbindelsen fuld-duplex – begge sider kan sende og modtage parallelt, indtil en af ​​dem udsteder en FIN for at lukke sessionen.

TCP-meddelelsestyper

Fire kontrolflag vises gentagne gange under handshake og teardown.

Besked Beskrivelse
SYN Initierer en forbindelse og synkroniserer sekvensnumre mellem enheder.
ACK Bekræfter over for den anden side, at det forrige segment blev modtaget.
SYN-ACK En kombineret besked — en SYN fra den lokale enhed plus en ACK for peer-ens tidligere SYN.
FIN Bruges til at afslutte en forbindelse elegant.

TCP tre-vejs håndtryk proces

TCP-trafik starter altid med et trevejs-handshake. Klienten starter samtalen ved at anmode om en session med serveren.

TCP 3-vejs handshake-diagram

3-vejs håndtryksdiagram.

  • Trin 1 — SYN: Klienten sender et segment med SYN-flaget sat. Det fortæller serveren "Jeg vil gerne begynde at kommunikere" og foreslår et indledende sekvensnummer.
  • Trin 2 — SYN-ACK: Serveren svarer med et segment, hvor både SYN- og ACK-flag er angivet. ACK'en bekræfter klientens SYN, og SYN foreslår serverens eget indledende sekvensnummer.
  • Trin 3 — BEKRÆFTELSE: Klienten bekræfter serverens SYN-ACK med en endelig ACK. Forbindelsen er nu etableret, og begge sider kan starte transmitapplikationsdata.

Eksempel fra den virkelige verden

Eksempel på TCP 3-vejs håndtryk fra den virkelige verden

Her er et udtænkt eksempel med konkrete sekvensnumre.

  • Vært X starter forbindelsen ved at sende en TCP SYN-pakke til serveren. Pakken bærer et tilfældigt initialt sekvensnummer — for eksempel, 4321 — det markerer begyndelsen på den bytestrøm, som vært X vil sende.
  • Serveren modtager SYN og svarer med en SYN-ACK. ACK-nummeret er Host X's sekvensnummer øget med 1 (4322), og SYN foreslår serverens eget initiale sekvensnummer.
  • Vært X svarer med en endelig ACK, hvis bekræftelsesnummer er serverens sekvensnummer forøget med 1.

Når dataudvekslingen er færdig, nedbryder TCP forbindelsen med en firevejs FIN/ACK-sekvens, så begge slutpunkter kan frigive socket'en uden problemer.

Hvorfor TCP har brug for et trevejshåndtryk

Håndtrykket er ikke bare en formalitet – det løser tre konkrete problemer, der følger med pålidelig byte-stream-transport:

  • Synkronisering af sekvensnumre: Begge peers lærer det indledende sekvensnummer på den anden side, hvilket er det, TCP bruger til at detektere mistede eller forkerte segmenter.
  • Aftale om forbindelsestilstand: Den tredje ACK bekræfter, at serverens SYN-ACK er ankommet, så ingen af ​​siderne begynder at sende data, før begge er i NEDSAT tilstand.
  • Beskyttelse mod duplikater: Tilfældige indledende sekvensnumre og tidsbestemte handshake-tilstande forhindrer, at forældede segmenter fra en tidligere session accepteres ved en fejltagelse.

Almindelige problemer med TCP-handshake

Håndtrykket er robust, men det kan opdeles på identificerbare måder. Netværksingeniører ser normalt et af følgende:

  • SYN-oversvømmelsesangreb: En ondsindet klient sender tusindvis af SYN'er uden at svare på SYN-ACK'er, hvilket udtømmer serverens forbindelsestabel. SYN-cookies er standardforsvaret.
  • Halvåbne forbindelser: Når den tredje ACK går tabt, forbliver forbindelsen halvåben og bliver til sidst ryddet op af en timeout.
  • Firewall- eller NAT-nedbrud midt i flyvningen: Stateful middleboxes, der mister tilstand, kan tabe SYN-ACK-pakker og lade klienten forsøge igen.
  • RST nulstiller: Hvis serveren ikke lytter på den anmodede port, besvarer den en SYN med en RST, som lukker forsøget med det samme.

Ofte Stillede Spørgsmål

To beskeder kan ikke bevise, at begge sider var enige om de indledende sekvensnumre og er klar til at sende. Den tredje ACK bekræfter, at serverens SYN-ACK er ankommet, hvilket sikrer, at begge slutpunkter når tilstanden ETABLERET, før data flyder.

SYN er et enkelt flag, der åbner samtalen og foreslår et indledende sekvensnummer. SYN-ACK kombinerer en SYN med en bekræftelse af peerens tidligere SYN og fuldfører synkroniseringen i én pakke.

En SYN-oversvømmelse overbelaster en server ved at sende mange SYN-pakker uden at fuldføre handshake-processen. Halvåbne forbindelser fylder backlog-køen og blokerer legitime brugere. SYN-cookies er standardafhjælpningen.

TCP lukker en forbindelse med et firevejs-handshake af FIN- og ACK-udvekslinger. Hver retning lukkes uafhængigt, hvilket gør det muligt for den ene side at afslutte dataafsendelsen, selv efter at den anden side har lukket sin halvdel.

Det indledende sekvensnummer er en tilfældigt valgt 32-bit værdi, som hvert endpoint vælger til sin egen bytestrøm. Det danner grundlag for den tæller, der bruges til at detektere manglende eller duplikerede segmenter og til at forsvare sig mod forfalskede pakker.

Nej. UDP er forbindelsesløs og sender datagrammer uden handshake. Det gør det hurtigere og lettere end TCP, men applikationer skal selv håndtere pålidelighed, rækkefølge og kontrol af overbelastning.

AI-assistenter annoterer pakkeoptagelser, klassificerer dem igentransmits og RST'er, og detekterer SYN-oversvømmelser. De oversætter Wireshark filtrere til almindeligt engelsk og anbefale det næste diagnostiske trin ved forbindelsesproblemer.

Ja. AI-kodningsassistenter forvandler en anmodning på almindeligt engelsk til en Python Scapy eller et netcat-script, der udløser og inspicerer trevejs-handshake'et, og derefter forklarer hver linje, så ingeniører kan gennemgå det, før de kører det.

Opsummer dette indlæg med: