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.


