Interneti varasematel aastatel oli Interneti-protokoll (IP) ainus protokoll, mida inimesed Interneti-ühenduse loomiseks kasutasid. IP-ga seotud probleem oli see, et saate saata sõnumi ja olla kindel, kas adressaat saab selle kätte või mitte. Sel põhjusel loodi TCP/IP.
TCP/IP tagab, et kõik teie saadetud andmed jõuavad adressaadini. See teeb seda, pakkudes kliendile ja serverile enne andmete saatmist turvalise ühenduse. See turvaline ühendus luuakse kolmepoolse käepigistusena tuntud protsessi kaudu, mida tuntakse ka kui TCP/IP-käepigistust.
Mis on kolmesuunaline käepigistus?
Kolmepoolne käepigistus (TCP/IP-käepigistus) on kolm esimest suhtlust kliendi ja serveri vahel, mis üritavad luua TCP-ühendust. Need esialgsed suhtlused on turvalise ühenduse loomiseks hädavajalikud. Selles etapis lepivad nii klient kui ka server kokku parameetrites, mida nad kasutavad sissetulevate ja väljaminevate andmepakettide kontrollimiseks ja kontrollimiseks. Need parameetrid on TCP segmentide kujul.
Mis on TCP segment?
TCP/IP-ühenduses tuleb kõik saadetavad andmed lõigata ja struktureerida nn TCP-segmentideks. Need segmendid sisaldavad teavet, nagu IP-aadressid, pordid, lipubitid, järjenumbrid, kinnitusnumbrid ja valikulised andmed või kasulik koormus.
Esimesed kolm interaktsiooni (kolmesuunaline käepigistus) sisaldavad ainult TCP segmendi päiseid ilma kasuliku koormuse või lisatud andmeteta. Siin on TCP segmendi näidis
Pange tähele, et ülaltoodud illustratsioon on ainult TCP jaoks. Täielik TCP/IP segment nõuab mõlemat IP-aadressid saatjast ja vastuvõtjast ülaltoodud TCP segmendi kohal.
Iga kord, kui saadate inimesele paki, peab kohaletoimetaja täitma teabevormi ja lisama selle enne saatmist pakile. Samamoodi nõuab TCP, et saatja lisaks andmetele (paketile) segmendipea (teabevorm), enne kui ta hakkab segmendi (paki) saajale saatma.
Kui klient suhtleb serveriga, peavad mõlemad osapooled vormindama oma suhtluse TCP segmendi kujul. TCP segment koosneb TCP segmendi peast, mis on kinnitatud andmetele, mida proovite saata. Saatja peab täitma segmendi pea nõutava teabe.
Kolmepoolse käepigistuse jaoks peab saatja täitma järgmise:
- Allika port: Tuvastab saatja pordi
- Sihtsadam: Tuvastab vastuvõtja pordi
- Järjestuse number: Näitab segmendi järjestust
- Kinnitusnumber: Tähistab, et segment on kinnitatud, lisades antud järjenumbrile ühe
Lisaks segmendi pea väljade täitmisele peab saatja valima ka lipubiti. Lipubitte on kokku kuus, kuid kolmesuunalise käepigistuse jaoks on vaja ainult kahte järgmist:
- SYN: Annab järjekorranumbri. Seda järjenumbrit kasutatakse kõigi sissetulevate segmentide järjestuse loendamiseks ülejäänud suhtluse jaoks.
- ACK: Näitab, et SYN-numbri vastuvõtja võtab ühendustaotluse vastu, lisades antud SYN-numbrile ühe (1).
Nüüd, kui teate, mis on TCP segment, vaatame, kuidas seda kolmepoolses käepigistuses kasutatakse.
Kuidas kolmesuunaline käepigistus töötab
Kolmepoolne käepigistus luuakse siis, kui nii klient kui ka host on vahetanud teavet ja kinnitanud üksteise järjekorranumbreid. Nagu nimigi ütleb, toimub kolmesuunaline käepigistus kolmes etapis.
Esiteks saadab klient puhta SYN-i segmendi, mis näitab, et soovib ühendust. Teiseks vastab server SYN-ACK segmendiga, mis tähendab, et ta on päringu kinnitanud ja saadab kliendile kinnitamiseks oma SYN-numbri. Kolmandaks saadab klient serverile ACK-segmendi, teatades, et serveri SYN-number on kinnitatud ja seda kasutatakse edasiseks ühenduse loomiseks.
Kolmesuunaline käepigistus näeb välja umbes selline:
Jagame selle lahti ja vaatame segmente, et saaksite teada, mis täpselt juhtub, kui klient ja server vahetavad ja kinnitavad järjenumbreid.
1. samm: klient saadab SYN-i segmendi
Klient saadab päringuühenduse, saates serverile SYN-i segmendi. Klient kasutab serveri asukoha leidmiseks ja TCP segmendi saatmiseks kliendi IP-aadressi.
Segmendi keerukuse vähendamiseks jätkem tähelepanuta mõned segmendiväljad ja keskendugem kolmepoolse käepigistuse ühenduse jaoks hädavajalikule. See hõlmab lähteporti, sihtporti, järjenumbrit, kinnitusnumbrit ja kasutatava lipubiti tüüpi.
Ja sellega peaks SYN-i/päringu segment välja nägema järgmine:
Kliendiport on juhuslik arv vahemikus 49152 kuni 65536. See pordivahemik on kokkulepitud vahemik, mida avalikud seadmed saavad Interneti-ühenduse loomiseks dünaamiliselt kasutada. Pordivahemikud 1024 kuni 49151 on privaatsed. Määratud vahemikus oleva pordi kasutamiseks peab üksus need registreerima. Pordinumbrid alla 1024 on pordid, mis on reserveeritud erinevate funktsioonide ja Interneti-protokollide jaoks, nagu FTP (port 20), SMTP (port 25), DNS (port 53) ja HTTP (port 80).
Reaalses elus on järjenumber juhuslik arv. Näites kasutasime 0000000000, et oleks lihtsam visualiseerida.
Sammude läbimisel võtke teadmiseks järjekorranumber. Praegu on see 000000000. Praegu pole kinnitusnumbrit, kuna pole midagi, mida tunnustada.
2. samm: server vastab SYN-ACK segmendiga
Kui server saab SYN-i segmendi, vastab ta, saates ACK-segmendi, mis sisaldab kinnitusnumbrit. Kinnitusnumber on kliendi järjekorranumber pluss üks (1).
Vaadake lähteporti. See näitab, et segment pärineb pordist 20, mis näitab, et see tuli serverist vastusena.
Nüüd vaadake kinnituse numbrit. See on 0000000001, mis on kliendi järjekorranumber (0000000000) pluss üks (1). Nii jälgitakse segmenti. Oletame, et klient sai ACK segmendi vastuse, mille kinnitusnumber on 0000000002. See näitab kliendile, et segment 0000000001 on puudu ja klient peab ootama, kuni see saabub et te ei kogeks pakettakad.
Nagu näete, on aktiveeritud kaks lipubitti – SYN ja ACK.
Lisaks kliendi järjenumbri kinnitamisele saadab server ka oma järjenumbri, et klient kinnitaks serveri järjekorranumbri pluss ühe (1). Meie näites kasutasime serveri järjenumbrina 1111111111. Jällegi, reaalses maailmas on see arv juhuslik.
Pange tähele, et kliendi ja serveri järjekorranumbrid ei pea ühtima. Kuni mõlemad pooled tunnistavad teineteise kordumatut järjenumbrit, on ühendus usaldusväärne.
3. samm: klient vastab ACK-segmendiga
Lõpuks kinnitab klient serveri järjekorranumbri.
Viimane segment on kliendi ACK segment.
Nagu saate, kinnitab klient serveri järjenumbrit, vastates serveri järjekorranumbriga (1111111111) pluss ühe (1), mis on 1111111112.
Klient ja server ei saada enam järjenumbrit, kuna jada algus on juba kinnitatud. Mõlemad osapooled ootavad aga kinnitussegmente, mis jätkavad järjenumbrit pluss üks (1) ja arvubaite kogu suhtluse vältel. Sellisel juhul ootab klient järgmise serveri vastuse ACK-i 0000000002 (kui lisatud andmeid pole).
Pärast seda kehtestatakse kolmepoolne käepigistus!
Võrguühenduste toimimise mõistmine
Nüüd, kui olete õppinud kolmesuunalise käepigistuse toimimist, on teil ka pärast käepigistust lihtsam mõista, kuidas TCP töötab. Klient ja server hakkavad andmeid saatma, kui käepigistus on loodud. Seekord kasutatakse kogu segmendi vormingut, millele lisanduvad valikulised andmed või kasulik koormus.
Andmed segmenteeritakse/lõigatakse tavaliselt väiksemateks tükkideks, et neid oleks lihtsam edastada. Igal andmesegmendil on oma segmendi pea, mis sisaldab järjenumbrit ja kinnitusnumbrit. Järjenumbri põhjuseks on segmentide järjestuse tundmine, millal need lõpuks uuesti kokku pannakse. Kinnitusnumbrid on selleks, et koos saatjaga kontrollida, kas tema segment on vastu võetud ja et see ühtis sissetulevate segmentide järjestusega.
Järjenumbrite loendamine ja nende kinnitamine kinnitusega on see, kuidas TCP suudab usaldusväärselt transportida tohutuid andmetükke ilma puuduvate andmepakettideta.
Ja sellega peaks teil olema TCP toimimisest päris hea ettekujutus.