Ankstesniais interneto metais interneto protokolas (IP) buvo vienintelis protokolas, kurį žmonės naudojo prisijungdami prie interneto. IP problema buvo ta, kad galite išsiųsti pranešimą ir būti tikri, ar gavėjas jį gaus, ar ne. Dėl šios priežasties buvo nustatytas TCP/IP.

TCP/IP užtikrina, kad visi jūsų siunčiami duomenys pasiektų gavėją. Tai daroma suteikdama klientui ir serveriui saugų ryšį prieš siunčiant duomenis. Šis saugus ryšys užmezgamas per procesą, žinomą kaip trijų krypčių rankos paspaudimas, taip pat žinomas kaip TCP/IP rankos paspaudimas.

Kas yra trijų krypčių rankos paspaudimas?

Vaizdo kreditas: Fleshgrinder/Wikimedia

Trijų krypčių rankos paspaudimas (TCP/IP handshake) yra pirmosios trys kliento ir serverio sąveikos, bandančios užmegzti TCP ryšį. Šios pradinės sąveikos yra būtinos norint užmegzti saugų ryšį. Šiame etape klientas ir serveris susitars dėl parametrų, kuriuos naudos tikrindami ir tikrindami gaunamus ir išsiunčiamus duomenų paketus. Šie parametrai bus TCP segmentų pavidalu.

instagram viewer

Kas yra TCP segmentas?

TCP/IP ryšyje visi siunčiami duomenys turi būti iškirpti ir struktūrizuoti pagal vadinamuosius TCP segmentus. Šiuose segmentuose yra tokia informacija kaip IP adresai, prievadai, vėliavėlės bitai, eilės numeriai, patvirtinimo numeriai ir pasirenkami duomenys arba naudingoji apkrova.

Pirmosiose trijose sąveikose (trijų krypčių rankos paspaudimas) bus tik TCP segmento antraštės be naudingos apkrovos ar pridėtų duomenų. Čia yra TCP segmento pavyzdys

Vaizdo kreditas: Ere/Wikimedia

Atminkite, kad aukščiau pateikta iliustracija skirta tik TCP. Visam TCP/IP segmentui reikia abiejų IP adresai iš siuntėjo ir gavėjo aukščiau esančio TCP segmento viršuje.

Kiekvieną kartą, kai siunčiate paketą asmeniui, pristatymo tarnyba privalo užpildyti informacinę formą ir pridėti ją prie siuntinio prieš išsiunčiant. Panašiai TCP reikalauja, kad siuntėjas prie duomenų (paketo) pridėtų segmento galvutę (informacijos formą), prieš pradėdamas siųsti segmentą (siuntinį) gavėjui.

Kai klientas susisiekia su serveriu, abi šalys turės suformatuoti savo sąveiką TCP segmento forma. TCP segmentą sudaro TCP segmento galvutė, pritvirtinta prie duomenų, kuriuos bandote siųsti. Siuntėjas turės užpildyti informaciją, kurios reikalauja segmento vadovas.

Norėdami atlikti trijų krypčių rankos paspaudimą, siuntėjas turės užpildyti šiuos duomenis:

  • Šaltinio prievadas: Nurodo siuntėjo prievadą
  • Kelionės tikslo uostas: Nurodo imtuvo prievadą
  • Eilės numeris: Nurodo segmentų seką
  • Patvirtinimo numeris: Reiškia, kad segmentas buvo patvirtintas, pridedant vieną prie nurodyto eilės numerio

Be segmento galvutės laukų užpildymo, siuntėjas taip pat turi pasirinkti vėliavėlės bitą. Iš viso yra šeši vėliavėlės bitai, bet trijų krypčių rankos paspaudimui jums reikės tik šių dviejų:

  1. SYN: Suteikia eilės numerį. Šis eilės numeris bus naudojamas skaičiuojant visų gaunamų segmentų seką likusiai sąveikos daliai.
  2. ACK: Nurodo, kad SYN numerio gavėjas priima prisijungimo užklausą, pridėdamas vieną (1) prie nurodyto SYN numerio.

Dabar, kai žinote, kas yra TCP segmentas, pažiūrėkime, kaip jis naudojamas trijų krypčių rankos paspaudime.

Kaip veikia trijų krypčių rankos paspaudimas

Trijų krypčių rankos paspaudimas nustatomas, kai klientas ir priegloba keičiasi informacija ir patvirtina vienas kito eilės numerius. Kaip rodo pavadinimas, trijų krypčių rankos paspaudimas atliekamas trimis veiksmais.

Pirma, klientas siunčia gryną SYN segmentą, nurodydamas, kad jis nori ryšio. Antra, serveris atsako SYN-ACK segmentu, o tai reiškia, kad jis patvirtino užklausą ir siunčia savo SYN numerį, kad klientas patvirtintų. Trečia, klientas serveriui siunčia ACK segmentą, kad praneštų, kad serverio SYN numeris buvo patvirtintas ir bus naudojamas tolesniam prisijungimui.

Trijų krypčių rankos paspaudimas atrodys maždaug taip:

Turto kreditas: Fleshgrinder/Wikimedia

Išskaidykime jį ir pažiūrėkime į segmentus, kad žinotumėte, kas tiksliai nutinka, kai klientas ir serveris keičiasi ir patvirtina eilės numerius.

1 veiksmas: klientas siunčia SYN segmentą

Turto kreditas: Fleshgrinder/Wikimedia

Klientas siunčia užklausos ryšį siųsdamas SYN segmentą į serverį. Klientas naudoja kliento IP adresą, kad surastų serverį ir išsiųstų TCP segmentą.

Norėdami sumažinti segmento sudėtingumą, nekreipkime dėmesio į keletą segmentų laukų ir susitelkime į būtiniausius trijų krypčių rankos paspaudimo ryšiui reikalingus dalykus. Tai apima šaltinio prievadą, paskirties prievadą, eilės numerį, patvirtinimo numerį ir naudojamo vėliavėlės bito tipą.

Be to, SYN / užklausos segmentas turėtų atrodyti taip:

Rašytojo sukurtas vaizdas 

Kliento prievadas yra atsitiktinis skaičius nuo 49152 iki 65536. Šis prievadų diapazonas yra sutartas diapazonas, kurį viešieji įrenginiai gali dinamiškai naudoti prisijungdami prie interneto. Prievadų diapazonas nuo 1024 iki 49151 yra privatus. Jas turės užregistruoti subjektas, kad galėtų naudoti nurodyto diapazono prievadą. Prievadų numeriai, mažesni nei 1024, yra prievadai, rezervuoti įvairioms funkcijoms ir interneto protokolams, pvz., FTP (20 prievadas), SMTP (25 prievadas), DNS (53 prievadas) ir HTTP (80 prievadas).

Realiame gyvenime eilės numeris yra atsitiktinis skaičius. Pavyzdžiui, naudojome 0000000000, kad būtų lengviau įsivaizduoti.

Vykdydami veiksmus atkreipkite dėmesį į eilės numerį. Šiuo metu tai yra 000000000. Šiuo metu nėra patvirtinimo numerio, nes nėra ką pripažinti.

2 veiksmas: serveris atsako su SYN-ACK segmentu

Turto kreditas: Fleshgrinder/Wikimedia

Kai serveris gaus SYN segmentą, jis atsakys išsiųsdamas ACK segmentą su patvirtinimo numeriu. Patvirtinimo numeris bus kliento eilės numeris ir vienas (1).

Rašytojo sukurtas vaizdas

Pažiūrėkite į šaltinio prievadą. Tai rodo, kad segmentas yra iš 20 prievado, o tai rodo, kad jis atėjo iš serverio kaip atsakas.

Dabar pažiūrėkite į patvirtinimo numerį. Tai 0000000001, tai yra kliento eilės numeris (0000000000) ir vienas (1). Taip sekamas segmentas. Tarkime, klientas gavo ACK segmento atsakymą, kurio patvirtinimo numeris yra 0000000002. Tai parodytų klientui, kad trūko segmento 0000000001 ir klientas turės palaukti, kol jis atvyks. kad neprarastumėte paketų.

Kaip matote, suaktyvinami du vėliavėlės bitai – SYN ir ACK.

Be kliento eilės numerio patvirtinimo, serveris taip pat atsiųs savo eilės numerį, kad klientas patvirtintų serverio eilės numerį ir vieną (1). Mūsų pavyzdyje mes naudojome 1111111111 kaip serverio eilės numerį. Vėlgi, realiame pasaulyje šis skaičius yra atsitiktinis.

Atminkite, kad kliento ir serverio eilės numeriai neturi sutapti. Tol, kol abi šalys pripažins viena kitos unikalų eilės numerį, ryšys bus patikimas.

3 veiksmas: klientas atsako su ACK segmentu

Turto kreditas: Fleshgrinder/Wikimedia

Galiausiai klientas patvirtina serverio eilės numerį.

Rašytojo sukurtas vaizdas

Paskutinis segmentas yra kliento ACK segmentas.

Kaip galite, klientas patvirtins serverio eilės numerį atsakydamas serverio eilės numeriu (1111111111) ir vienu (1), kuris yra 1111111112.

Klientas ir serveris nebesiųs eilės numerio, nes sekos pradžia jau buvo patvirtinta. Tačiau abi šalys tikisi patvirtinimo segmentų, tęsiančių eilės numerius plius vienas (1), ir skaičiaus baitus per visą sąveiką. Tokiu atveju klientas tikisi, kad kito serverio atsakymo ACK bus 0000000002 (jei nėra pridėtų duomenų).

Po to nustatomas trijų krypčių rankos paspaudimas!

Supratimas, kaip veikia tinklo ryšiai

Dabar, kai sužinojote, kaip veikia trijų krypčių rankos paspaudimas, jums taip pat bus lengviau suprasti, kaip veikia TCP po rankos paspaudimo. Klientas ir serveris pradės siųsti duomenis, kai bus nustatytas rankos paspaudimas. Šį kartą bus naudojamas visas segmento formatas ir pasirenkami duomenys arba naudingoji apkrova.

Duomenys paprastai segmentuojami / supjaustomi į mažesnius gabalus, kad būtų lengviau perkelti. Kiekvienas duomenų segmentas turi savo segmento antraštę, kurioje yra eilės numeris ir patvirtinimo numeris. Eilės numerio priežastis yra žinoti segmentų seką, kada jie galiausiai bus surinkti. Patvirtinimo numeriai yra skirti siuntėjui patikrinti, ar jo segmentas buvo gautas ir ar jis atitiko gaunamų segmentų seką.

Skaičiuojant eilės numerį ir patvirtinant juos patvirtinant, TCP gali patikimai transportuoti didžiulius duomenų gabalus be jokių trūkstamų duomenų paketų.

Turėtumėte turėti gerą supratimą apie tai, kaip veikia TCP.