TCP kolmesuunaline käepigistus (SYN, SYN-ACK, ACK)
⚡ Nutikas kokkuvõte
TCP 3-suunaline käepigistus on ühenduse loomise rituaal, millega iga TCP seanss algab. Klient ja server vahetavad SYN-, SYN-ACK- ja ACK-pakette, et sünkroniseerida järjekorranumbreid ja kinnitada mõlema poole valmisolekut enne ühegi rakendusandmete baidi saatmist.

Mis on TCP kolmepoolne käepigistus?
. TCP kolmesuunaline käepigistus on protseduur, mida klient ja server kasutavad TCP/IP võrk usaldusväärse ühenduse loomiseks enne mis tahes rakendusandmete vahetamist. Nagu nimigi ütleb, koosneb see kolmest etapist, mille käigus mõlemad pooled vahetavad sünkroniseerimis- (SYN) ja kinnitus- (ACK) pakette ning lepivad kokku esialgsed järjekorranumbrid, mida nad kasutavad.
Käepigistus on loodud nii, et mõlemad lõpp-punktid saavad TCP-socketeid sümmeetriliselt algatada, läbi rääkida ja lahti harutada. Kui käepigistus on lõppenud, on ühendus täisdupleks – mõlemad pooled saavad paralleelselt saata ja vastu võtta, kuni kumbki väljastab seansi sulgemiseks FIN-käsu.
TCP sõnumitüübid
Käepigistuse ja mahavõtmise ajal ilmub korduvalt neli kontrolllippu.
| Jäta sõnum | Kirjeldus |
|---|---|
| SYN | Algatab ühenduse ja sünkroniseerib seadmete vahel järjekorranumbreid. |
| ACK | Kinnitab teisele poolele eelmise segmendi vastuvõtmist. |
| SYN-ACK | Kombineeritud teade – kohaliku seadme SYN ja partneri varasema SYN-i ACK. |
| FIN | Kasutatakse ühenduse korrektseks lõpetamiseks. |
TCP kolmesuunaline käepigistuse protsess
TCP liiklus algab alati kolmepoolse käepigistusega. Klient alustab vestlust, taotledes serveriga seanssi.
3-suunalise käepigistuse diagramm.
- 1. samm – SYN: Klient saadab segmendi, millel on SYN-lipp. See ütleb serverile: "Soovin alustada suhtlemist" ja pakub välja esialgse järjekorranumbri.
- 2. samm – SYN-ACK: Server vastab segmendiga, milles on seatud nii SYN- kui ka ACK-lipud. ACK kinnitab kliendi SYN-i ja SYN pakub välja serveri enda esialgse järjekorranumbri.
- 3. samm – ACK: Klient kinnitab serveri SYN-ACK-i viimase ACK-iga. Ühendus on nüüd loodud ja mõlemad pooled saavad alustada. transmitrakenduse andmete haldamine.
Näide tegelikust maailmast
Siin on toimiv näide konkreetsete järjekorranumbritega.
- Host X alustab ühendust, saates serverile TCP SYN-paketi. Paketil on juhuslik esialgne järjekorranumber – näiteks
4321— mis tähistab baitvoo algust, mille host X saadab. - Server võtab vastu SYN-i ja vastab SYN-ACK-iga. ACK-number on hosti X järjekorranumber, mida suurendatakse ühe võrra (
4322) ja SYN pakub välja serveri enda esialgse järjekorranumbri. - Host X vastab lõpliku ACK-iga, mille kinnitusnumber on serveri järjekorranumber, mida suurendatakse ühe võrra.
Kui andmevahetus on lõppenud, katkestab TCP ühenduse neljapoolse FIN/ACK-jadaga, et mõlemad lõpp-punktid saaksid sokli puhtalt vabastada.
Miks TCP vajab kolmepoolset käepigistust?
Käepigistus pole pelgalt formaalsus – see lahendab kolm konkreetset probleemi, mis kaasnevad usaldusväärse baidivoo transpordiga:
- Järjekorranumbri sünkroniseerimine: mõlemad pooled õpivad teise poole esialgse järjekorranumbri, mida TCP kasutab kadunud või vales järjekorras segmentide tuvastamiseks.
- Ühenduse ja oleku leping: kolmas ACK kinnitab serveri SYN-ACK saabumist, seega kumbki pool ei hakka andmeid saatma enne, kui mõlemad on ühenduspunktis. LOODUD riik.
- Duplikaatpakettide kaitse: Juhuslikud esialgsed järjekorranumbrid ja ajastatud käepigistuse olekud takistavad eelmisest seansist pärit aegunud segmentide ekslikku aktsepteerimist.
TCP käepigistusega seotud levinud probleemid
Käepigistus on küll tugev, aga sellel on mitmeid äratuntavaid häireid. Võrguinsenerid näevad tavaliselt ühte järgmistest:
- SYN-i üleujutusrünnakud: Pahatahtlik klient saadab tuhandeid SYN-e ilma SYN-ACK-idele vastamata, ammendades serveri ühenduste tabeli. SYN-küpsised on standardne kaitse.
- Poolavatud ühendused: Kui kolmas ACK kaob, jääb ühendus pooleldi avatuks ja lõpuks puhastatakse see ajalõpu tõttu.
- Tulemüüri või NAT-i keset lendu esinevad tõrked: Oleku kaotavad keskkastid võivad kaotada SYN-ACK pakette ja panna kliendi uuesti proovima.
- RST lähtestused: Kui server ei kuula taotletud porti, vastab see SYN-ile RST-ga, mis lõpetab katse kohe.


