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.

  • 📨 Tunne neljä viestityyppiä: SYN aloittaa, ACK vahvistaa, SYN-ACK yhdistää molemmat ja FIN lopettaa TCP-yhteyden.
  • 🔁 Noudata kolmea vaihetta: asiakas SYN → palvelin SYN-ACK → asiakas ACK; istunto muodostetaan vasta kolmannen paketin saapumisen jälkeen.
  • 🔢 Järjestysnumeroilla on merkitystä: kumpikin puoli valitsee aluksi järjestysnumeron; toinen puoli kuittaa sen lisäämällä sellaisen, mikä pitää tavuvirran järjestyksessä.
  • 🚪 Purkusuunnitelma: Tiedonsiirron jälkeen TCP sulkee yhteyden FIN/ACK-pareilla vapauttaakseen soketin molemmista päistä.
  • 🤖 Käytä tekoälyä pakettien analysointiin: Tekoälyavustajat selittävät Wireshark kaappaa, merkitsee puuttuvat ACK:t ja korostaa SYN-tulvat tai puoliavoimet yhteydet.

TCP 3-Way Handshake

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.

TCP:n 3-suuntaisen kättelyn kaavio

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ä

TCP:n kolmisuuntainen kättely – reaalimaailman esimerkki

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.

UKK

Kaksi viestiä ei voi todistaa, että molemmat osapuolet sopivat alkuperäisistä järjestysnumeroista ja ovat valmiita lähettämään. Kolmas ACK vahvistaa palvelimen SYN-ACK:n saapuneen varmistaen, että molemmat päätepisteet saavuttavat ESTABLISHED-tilan ennen datavirran alkamista.

SYN on yksittäinen lippu, joka avaa keskustelun ja ehdottaa ensimmäistä järjestysnumeroa. SYN-ACK yhdistää SYN-viestin vertaiskoneen aiemman SYN-viestin kuittaukseen, jolloin synkronointi suoritetaan yhdessä paketissa.

SYN-tulva ylikuormittaa palvelimen lähettämällä useita SYN-paketteja kättelyä suorittamatta loppuun. Puoliavoimet yhteydet täyttävät ruuhkajonon ja estävät lailliset käyttäjät. SYN-evästeet ovat vakiokeino tulvan lieventämiseen.

TCP sulkee yhteyden neliosaisella FIN- ja ACK-kättelyllä. Kumpikin suunta suljetaan erikseen, jolloin toinen osapuoli voi lopettaa datan lähettämisen, vaikka toinen osapuoli olisi sulkenut oman osuutensa.

Alkuperäinen järjestysnumero on satunnaisesti valittu 32-bittinen arvo, jonka jokainen päätepiste valitsee omalle tavuvirralleen. Se syöttää laskurin, jota käytetään puuttuvien tai kaksoiskappaleiden havaitsemiseen ja väärennettyjen pakettien torjuntaan.

Ei. UDP on yhteydetön ja lähettää datagrammeja ilman kättelyä. Tämä tekee siitä nopeamman ja kevyemmän kuin TCP, mutta sovellusten on itse hoidettava luotettavuus, järjestys ja ruuhkan hallinta.

Tekoälyavustajat kommentoivat pakettien sieppauksia, luokittelevat uudelleentransmits ja RST:t, ja havaitsevat SYN-tulvia. Ne kääntävät Wireshark suodattuu selkokielelle ja suosittelee seuraavaa diagnostiikkavaihetta yhteysongelmien varalta.

Kyllä. Tekoälykoodausavustajat muuttavat selkokielisen pyynnön Python Scapy tai netcat-skripti, joka laukaisee ja tarkastaa kolmiosaisen kättelyn, ja selitä sitten jokainen rivi, jotta insinöörit voivat tarkistaa sen ennen sen suorittamista.

Tiivistä tämä viesti seuraavasti: