TCP 3-veis håndtrykk (SYN, SYN-ACK, ACK)
⚡ Smart oppsummering
TCP 3-Way Handshake er ritualet for oppsett av forbindelse som hver TCP-økt starter med. En klient og server utveksler SYN-, SYN-ACK- og ACK-pakker for å synkronisere sekvensnumre og bekrefte at begge sider er klare før en eneste byte med applikasjonsdata sendes.

Hva er TCP treveis håndtrykk?
Ocuco TCP treveis håndtrykk er prosedyren en klient og en server bruker på en TCP/IP-nettverk å sette opp en pålitelig forbindelse før applikasjonsdata utveksles. Som navnet tilsier, består det av tre trinn der begge sider utveksler synkroniserings- (SYN) og bekreftelses- (ACK) pakker og blir enige om de første sekvensnumrene de skal bruke.
Håndtrykket er utformet slik at begge endepunktene kan starte, forhandle og rive ned TCP-sockets symmetrisk. Når håndtrykket er fullført, er forbindelsen fulldupleks – begge sider kan sende og motta parallelt inntil en av dem utsteder en FIN for å lukke økten.
TCP-meldingstyper
Fire kontrollflagg vises gjentatte ganger under håndtrykk og nedbrytning.
| Melding | Tekniske beskrivelser |
|---|---|
| SYN | Initierer en tilkobling og synkroniserer sekvensnumre mellom enheter. |
| ACK | Bekrefter til den andre siden at forrige segment ble mottatt. |
| SYN-ACK | En kombinert melding – en SYN fra den lokale enheten pluss en ACK for motpartens tidligere SYN. |
| END | Brukes til å avslutte en forbindelse på en elegant måte. |
TCP treveis håndtrykkprosess
TCP-trafikk starter alltid med et treveis håndtrykk. Klienten starter samtalen ved å be om en økt med serveren.
3-veis håndtrykksdiagram.
- Trinn 1 — SYN: Klienten sender et segment med SYN-flagget satt. Det forteller serveren «Jeg vil begynne å kommunisere» og foreslår et innledende sekvensnummer.
- Trinn 2 — SYN-ACK: Serveren svarer med et segment der både SYN- og ACK-flagg er satt. ACK-en bekrefter klientens SYN, og SYN-en foreslår serverens eget innledende sekvensnummer.
- Trinn 3 — KVITTERING: Klienten bekrefter serverens SYN-ACK med en siste ACK. Forbindelsen er nå opprettet, og begge sider kan starte transmitapplikasjonsdata.
Eksempler fra den virkelige verden
Her er et utarbeidet eksempel med konkrete sekvensnumre.
- Vert X starter forbindelsen ved å sende en TCP SYN-pakke til serveren. Pakken har et tilfeldig initialt sekvensnummer – for eksempel,
4321— som markerer starten på bytestrømmen som vert X vil sende. - Serveren mottar SYN-en og svarer med en SYN-ACK. ACK-nummeret er sekvensnummeret til vert X økt med 1 (
4322), og SYN foreslår serverens eget innledende sekvensnummer. - Vert X svarer med en siste ACK hvis bekreftelsesnummer er serverens sekvensnummer økt med 1.
Når datautvekslingen er fullført, river TCP ned forbindelsen med en fireveis FIN/ACK-sekvens, slik at begge endepunktene kan frigjøre sokkelen uten problemer.
Hvorfor TCP trenger et treveis håndtrykk
Håndtrykket er ikke bare en formalitet – det løser tre konkrete problemer som følger med pålitelig bytestrømtransport:
- Sekvensnummersynkronisering: begge jevnaldrende lærer det første sekvensnummeret til den andre siden, som er det TCP bruker for å oppdage tapte eller ute av rekkefølge.
- Avtale om tilkoblingsstatus: Den tredje ACK-en bekrefter at serverens SYN-ACK har ankommet, så ingen av sidene begynner å sende data før begge er i OPPRETTET tilstand.
- Beskyttelse mot duplikatpakker: Tilfeldige innledende sekvensnumre og tidsbestemte håndtrykkstilstander hindrer at foreldede segmenter fra en tidligere økt blir akseptert ved en feiltakelse.
Vanlige problemer med TCP-håndtrykk
Håndtrykket er robust, men det brytes ned på identifiserbare måter. Nettverksingeniører ser vanligvis ett av følgende:
- SYN-flomangrep: En ondsinnet klient sender tusenvis av SYN-er uten å svare på SYN-ACK-er, noe som uttømmer serverens tilkoblingstabell. SYN-informasjonskapsler er standardforsvaret.
- Halvåpne forbindelser: Når den tredje ACK-en går tapt, forblir forbindelsen halvveis åpen og blir til slutt ryddet opp av en timeout.
- Brannmur- eller NAT-nedbrytninger midt i prosessen: Tilstandsrike mellombokser som mister tilstand kan miste SYN-ACK-pakker og la klienten prøve på nytt.
- RST-tilbakestillinger: Hvis serveren ikke lytter på den forespurte porten, svarer den på en SYN med en RST, som avslutter forsøket umiddelbart.


