TCP 3-Way Handshake (SYN, SYN-ACK, ACK)
Mikä on TCP Three-Way Handshake?
Kolmisuuntainen kädenpuristus tai TCP 3-way handshake on prosessi, jota käytetään TCP/IP-verkossa yhteyden muodostamiseen palvelimen ja asiakkaan välille. Se on kolmivaiheinen prosessi, joka edellyttää sekä asiakkaan että palvelimen vaihtavan synkronointi- ja kuittauspaketteja ennen kuin todellinen tietoliikenneprosessi alkaa.
Kolmisuuntainen kättelyprosessi on suunniteltu siten, että molemmat päät auttavat sinua aloittamaan, neuvottelemaan ja erottamaan TCP-socket-yhteydet samanaikaisesti. Sen avulla voit siirtää useita TCP-socket-yhteyksiä molempiin suuntiin samanaikaisesti.
TCP-viestityypit
Viesti | Tuotetiedot |
---|---|
syn | Käytetään yhteyden aloittamiseen ja muodostamiseen. Se auttaa myös synkronoimaan järjestysnumeroita laitteiden välillä. |
ACK | Auttaa vahvistamaan toiselle puolelle, että se on vastaanottanut SYN:n. |
SYN-ACK | SYN-sanoma paikalliselta laitteelta ja aiemman paketin ACK. |
FIN | Käytetään yhteyden katkaisemiseen. |
TCP:n kolmisuuntainen kättelyprosessi
TCP-liikenne alkaa kolmisuuntaisella kättelyllä. Tässä TCP-kättelyprosessissa asiakkaan on aloitettava keskustelu pyytämällä viestintäistunto palvelimen kanssa:
- Vaihe 1: Ensimmäisessä vaiheessa asiakas muodostaa yhteyden palvelimeen. Se lähettää segmentin SYN:llä ja ilmoittaa palvelimelle, että asiakkaan tulee aloittaa kommunikointi ja millä sen järjestysnumerolla pitäisi olla.
- Vaihe 2: Tässä vaiheessa server vastaa asiakkaan pyyntöön SYN-ACK-signaalilla. ACK auttaa sinua ilmaisemaan vastaanotetun segmentin vastauksen ja SYN ilmaisee, minkä järjestysnumeron sen pitäisi pystyä aloittamaan segmenteillä.
- Vaihe 3: Tässä viimeisessä vaiheessa asiakas kuittaa palvelimen vastauksen ja molemmat luovat vakaan yhteyden ja aloittavat varsinaisen tiedonsiirtoprosessin.
Esimerkki tosielämästä
Tässä on yksinkertainen esimerkki kolmisuuntaisesta kättelyprosessista, joka koostuu kolmesta vaiheesta:
- Isäntä X aloittaa yhteyden lähettämällä TCP SYN -paketin isäntäkohteeseensa. Paketit sisältävät satunnaisen järjestysnumeron (esimerkiksi 4321), joka osoittaa järjestysnumeroiden alun datalle, joka isäntä X:n tulee lähettää.
- Tämän jälkeen palvelin vastaanottaa paketin ja se vastaa järjestysnumerollaan. Sen vastaus sisältää myös kuittausnumeron, eli isäntä X:n järjestysnumeron lisättynä 1:llä (tässä se on 4322).
- Isäntä X vastaa palvelimelle lähettämällä kuittausnumeron, joka on enimmäkseen palvelimen järjestysnumero, jota kasvatetaan yhdellä.
Kun tiedonsiirtoprosessi on ohi, TCP katkaisee automaattisesti yhteyden kahden erillisen päätepisteen välillä.
Yhteenveto
- TCP 3-way handshake tai kolmisuuntainen kättely tai TCP 3-way handshake on prosessi, jota käytetään TCP/IP-verkko muodostaaksesi yhteyden palvelimen ja asiakkaan välille.
- Syn käyttää yhteyden aloittamiseen ja muodostamiseen
- ACK auttaa vahvistamaan toiselle puolelle, että se on vastaanottanut SYN:n.
- SYN-ACK on SYN-sanoma paikalliselta laitteelta ja aiemman paketin ACK.
- FIN:ää käytetään yhteyden katkaisemiseen.
- TCP-kättelyprosessissa asiakkaan on aloitettava keskustelu pyytämällä viestintäistuntoa palvelimen kanssa
- Ensimmäisessä vaiheessa asiakas muodostaa yhteyden palvelimeen
- Tässä toisessa vaiheessa palvelin vastaa asiakkaan pyyntöön SYN-ACK-signaalilla
- Tässä viimeisessä vaiheessa asiakas kuittaa palvelimen vastauksen
- TCP katkaisee automaattisesti yhteyden kahden erillisen päätepisteen välillä.