TCP 3-Way Handshake (SYN, SYN-ACK, ACK)
⚡ Älykäs yhteenveto
TCP:n 3-suuntainen kättely on yhteydenmuodostusrituaali, jolla jokainen TCP-istunto alkaa. Asiakas ja palvelin vaihtavat SYN-, SYN-ACK- ja ACK-paketteja synkronoidakseen järjestysnumerot ja varmistaakseen, että molemmat osapuolet ovat valmiita ennen kuin yhtäkään sovellusdatan tavua lähetetään.
Mikä on TCP:n kolmisuuntainen kättely?
TCP kolmisuuntainen kättely on menettelytapa, jota asiakas ja palvelin käyttävät TCP/IP-verkko luotettavan yhteyden muodostamiseksi ennen sovellustietojen vaihtoa. Kuten nimestä voi päätellä, se koostuu kolmesta vaiheesta, joissa molemmat osapuolet vaihtavat synkronointi- (SYN) ja kuittaus- (ACK) paketteja ja sopivat käyttämistään alkuperäisistä järjestysnumeroista.
Kättely on suunniteltu siten, että molemmat päätepisteet voivat aloittaa, neuvotella ja purkaa TCP-socketteja symmetrisesti. Kun kättely on valmis, yhteys on kaksisuuntainen – molemmat osapuolet voivat lähettää ja vastaanottaa rinnakkain, kunnes jompikumpi antaa FIN-komennon istunnon sulkemiseksi.
TCP-viestityypit
Neljä kontrollilippua ilmestyy toistuvasti kättelyn ja purun aikana.
| Viesti | Tuotetiedot |
|---|---|
| SYN | Aloittaa yhteyden ja synkronoi laitteiden välisen järjestysnumeron. |
| ACK | Vahvistaa toiselle osapuolelle, että edellinen segmentti vastaanotettiin. |
| SYN-ACK | Yhdistetty viesti — paikallisen laitteen SYN-viesti ja vertaislaitteen aiemman SYN-viestin ACK. |
| FIN | Käytetään yhteyden katkaisemiseen sujuvasti. |
TCP:n kolmisuuntainen kättelyprosessi
TCP-liikenne alkaa aina kolmen osapuolen kättelyllä. Asiakas aloittaa keskustelun pyytämällä istuntoa palvelimen kanssa.
Kolmisuuntainen kättelykaavio.
- Vaihe 1 — SYN: Asiakas lähettää segmentin, jossa on SYN-lippu asetettu. Se kertoo palvelimelle "Haluan aloittaa kommunikoinnin" ja ehdottaa aluksi järjestysnumeroa.
- Vaihe 2 — SYN-ACK: Palvelin vastaa segmentillä, jossa sekä SYN- että ACK-liput on asetettu. ACK kuittaa asiakkaan SYN-liput ja SYN ehdottaa palvelimen omaa alkuperäistä järjestysnumeroa.
- Vaihe 3 – ACK: Asiakas kuittaa palvelimen SYN-ACK-kuittauksen lopullisella ACK-kuittauksella. Yhteys on nyt muodostettu ja molemmat osapuolet voivat aloittaa. transmitsovellustietojen käsittely.
Esimerkki tosielämästä
Tässä on toimiva esimerkki konkreettisilla järjestysnumeroilla.
- Palvelin X aloittaa yhteyden lähettämällä TCP SYN -paketin palvelimelle. Paketissa on satunnainen alkujärjestysnumero, esimerkiksi
4321— joka merkitsee isäntäkoneen X lähettämän tavuvirran alkua. - Palvelin vastaanottaa SYN-kuittauksen ja vastaa SYN-ACK:lla. ACK-numero on isäntäkoneen X järjestysnumero kasvatettuna yhdellä (
4322), ja SYN ehdottaa palvelimen omaa alkuperäistä järjestysnumeroa. - Isäntä X vastaa lopullisella ACK:lla, jonka kuittausnumero on palvelimen järjestysnumero korotettuna yhdellä.
Kun tiedonvaihto on valmis, TCP katkaisee yhteyden nelisuuntaisella FIN/ACK-sekvenssillä, jotta molemmat päätepisteet voivat vapauttaa soketin puhtaasti.
Miksi TCP tarvitsee kolmiosaisen kättelyn
Kättely ei ole pelkkä muodollisuus – se ratkaisee kolme konkreettista ongelmaa, jotka liittyvät luotettavaan tavuvirran siirtoon:
- Sarjanumeroiden synkronointi: Molemmat vertaiskäyttäjät oppivat toisen osapuolen alkuperäisen järjestysnumeron, jota TCP käyttää kadonneiden tai väärässä järjestyksessä olevien segmenttien havaitsemiseen.
- Yhteystilasopimus: Kolmas ACK vahvistaa palvelimen SYN-ACK:n saapuneen, joten kumpikaan osapuoli ei aloita datan lähettämistä ennen kuin molemmat ovat perillä. PERUSTI valtio.
- Kaksoiskappalepakettien suojaus: Satunnaiset alkujärjestysnumerot ja ajastetut kättelytilat estävät edellisen istunnon vanhentuneiden segmenttien vahingossa tapahtuvan hyväksymisen.
Yleisiä ongelmia TCP-kättelyn kanssa
Kättely on vankka, mutta siinä on tunnistettavia häiriöitä. Verkkoinsinöörit havaitsevat yleensä jonkin seuraavista:
- SYN-tulvahyökkäykset: Haitallinen asiakas lähettää tuhansia SYN-viestejä vastaamatta SYN-ACK-viesteihin, mikä kuluttaa palvelimen yhteystaulukon loppuun. SYN-evästeet ovat vakiopuolustus.
- Puoliavoimet yhteydet: Kun kolmas ACK menetetään, yhteys jää puoliavoimeksi ja lopulta aikakatkaisu puhdistuu.
- Palomuurin tai NAT:n toimintahäiriöt kesken toimintakerran: Tilalliset keskilaatikot, jotka menettävät tilan, voivat pudottaa SYN-ACK-paketteja ja jättää asiakkaan yrittämään uudelleen.
- RST-nollaukset: Jos palvelin ei kuuntele pyydettyä porttia, se vastaa SYN-komennolle RST-komennolla, joka sulkee yrityksen välittömästi.



