Tijekom ranijih godina interneta, Internet Protocol (IP) bio je jedini protokol koji su ljudi koristili za povezivanje na internet. Problem s IP-om bio je u tome što ste mogli poslati poruku i niste sigurni hoće li je primatelj primiti ili ne. Zbog toga je uspostavljen TCP/IP.

TCP/IP osigurava da svi podaci koje pošaljete stignu do primatelja. To čini tako što klijentu i poslužitelju pruža sigurnu vezu prije slanja podataka. Ova sigurna veza uspostavlja se kroz proces poznat kao trosmjerno rukovanje, također poznato kao TCP/IP rukovanje.

Što je trosmjerno rukovanje?

Zasluga slike: Fleshgrinder/Wikimedija

Trosmjerno rukovanje (TCP/IP rukovanje) prve su tri interakcije između klijenta i poslužitelja koji pokušavaju uspostaviti TCP vezu. Ove početne interakcije bitne su za stvaranje sigurne veze. U ovoj fazi, i klijent i poslužitelj će se dogovoriti o parametrima koje će koristiti za provjeru i provjeru dolaznih i odlaznih paketa podataka. Ovi će parametri biti u obliku TCP segmenata.

Što je TCP segment?

U TCP/IP vezi, svi podaci koji se šalju moraju biti izrezani i strukturirani na ono što je poznato kao TCP segmenti. Ovi segmenti sadrže informacije kao što su IP adrese, portovi, bitovi zastavice, brojevi sekvence, brojevi potvrde i izborni podaci ili korisni teret.

Prve tri interakcije (trosmjerno rukovanje) sadržavat će samo zaglavlja TCP segmenta bez korisnog opterećenja ili priloženih podataka. Ovdje je primjer TCP segmenta

Zasluga slike: Ere/Wikimedija

Imajte na umu da je gornja ilustracija samo za TCP. Potpuni TCP/IP segment zahtijeva oboje IP adrese od pošiljatelja i primatelja na vrhu gornjeg TCP segmenta.

Kad god pošaljete paket osobi, dostavna služba od vas traži da ispunite obrazac s informacijama i zatim ga priložite paketu prije slanja. Slično, TCP zahtijeva od pošiljatelja da priloži glavu segmenta (informacijski obrazac) na podatke (paket) prije nego što počne slati segment (paket) primatelju.

Kad god klijent komunicira s poslužiteljem, obje strane će morati oblikovati svoje interakcije u obliku TCP segmenta. TCP segment se sastoji od glave TCP segmenta pridružene podacima koje pokušavate poslati. Pošiljatelj će morati ispuniti podatke koje zahtijeva glava segmenta.

Za trosmjerno rukovanje pošiljatelj će morati ispuniti sljedeće:

  • Izvorna luka: Identificira luku pošiljatelja
  • Odredišna luka: Identificira port prijemnika
  • Redni broj: Označava slijed segmenta
  • Broj potvrde: Označava da je segment potvrđen dodavanjem jednog na zadani broj sekvence

Osim popunjavanja polja glave segmenta, pošiljatelj također mora odabrati bit zastavice. Ukupno ima šest bitova zastavice, ali za trosmjerno rukovanje trebat će vam samo sljedeća dva:

  1. SYN: Daje redni broj. Ovaj redni broj koristit će se za brojanje slijeda svih dolaznih segmenata za ostatak interakcije.
  2. ACK: Označava da primatelj SYN broja prihvaća zahtjev za povezivanje dodavanjem jedan (1) danom SYN broju.

Sada kada znate što je TCP segment, pogledajmo kako se koristi u trosmjernom rukovanju.

Kako funkcionira trosmjerno rukovanje

Trosmjerno rukovanje je uspostavljeno kada su i klijent i domaćin razmijenili informacije i potvrdili međusobne brojeve sekvence. Kao što naziv implicira, trosmjerni stisak radi se u tri koraka.

Prvo, klijent šalje čisti SYN segment koji pokazuje da želi vezu. Drugo, poslužitelj odgovara segmentom SYN-ACK što znači da je potvrdio zahtjev i šalje svoj vlastiti SYN broj da ga klijent potvrdi. Treće, klijent šalje ACK segment poslužitelju kako bi ga obavijestio da je SYN broj poslužitelja potvrđen i da će se koristiti za daljnje povezivanje.

Trosmjerno rukovanje izgledat će otprilike ovako:

Zasluge imovine: Fleshgrinder/Wikimedija

Razložimo to i pogledajmo segmente kako biste znali što se točno događa kada klijent i poslužitelj razmjenjuju i priznaju redovne brojeve.

Korak 1: Klijent šalje SYN segment

Zasluge imovine: Fleshgrinder/Wikimedija

Klijent šalje zahtjev za povezivanje slanjem SYN segmenta na poslužitelj. Klijent koristi IP adresu klijenta za lociranje poslužitelja i slanje TCP segmenta.

Kako bismo smanjili složenost segmenta, zanemarimo nekoliko segmentnih polja i usredotočimo se na ono što je potrebno za trosmjernu vezu rukovanja. To uključuje izvorni port, odredišni port, redni broj, broj potvrde i vrstu bita zastavice koja se koristi.

I uz to, segment SYN/zahtjev bi trebao izgledati ovako:

Slika koju je napravio pisac 

Port klijenta je nasumični broj između 49152 i 65536. Ovaj raspon portova je dogovoreni raspon koji javni uređaji mogu dinamički koristiti za povezivanje s internetom. Rasponi portova od 1024 do 49151 su privatni. Morat će ih registrirati entitet da bi koristio port unutar navedenog raspona. Brojevi portova ispod 1024 su portovi rezervirani za različite funkcije i internetske protokole kao što su FTP (port 20), SMTP (port 25), DNS (port 53) i HTTP (port 80).

U stvarnom životu, redni broj je slučajni broj. Za primjer, upotrijebili smo 0000000000 kako bismo ga lakše vizualizirali.

Zabilježite redni broj dok napredujemo kroz korake. Trenutno je 000000000. Trenutačno ne postoji broj potvrde jer ne postoji nešto za potvrdu.

Korak 2: poslužitelj odgovara segmentom SYN-ACK

Zasluge imovine: Fleshgrinder/Wikimedija

Nakon što poslužitelj primi SYN segment, on će odgovoriti slanjem ACK segmenta koji sadrži broj potvrde. Broj potvrde bit će klijentov redni broj plus jedan (1).

Slika koju je izradio pisac

Pogledajte izvorni port. Pokazuje da je segment s porta 20, što ukazuje da je došao s poslužitelja kao odgovor.

Sada pogledajte broj potvrde. To je 0000000001, što je redni broj klijenta (0000000000) plus jedan (1). Ovako se prati segment. Recimo da je klijent primio odgovor ACK segmenta gdje je broj potvrde 0000000002. To bi klijentu naznačilo da nedostaje segment 0000000001 i da će klijent morati pričekati dok ne stigne tako da ne doživite gubitak paketa.

Kao što vidite, aktivirana su dva bita zastavice—SYN i ACK.

Osim što će potvrditi redni broj klijenta, poslužitelj će također poslati svoj vlastiti redni broj kako bi klijent potvrdio redni broj poslužitelja plus jedan (1). U našem primjeru koristili smo 1111111111 kao redni broj poslužitelja. Opet, u stvarnom svijetu, ovaj broj je slučajan.

Imajte na umu da se redni brojevi klijenta i poslužitelja ne moraju podudarati. Sve dok obje strane međusobno priznaju jedinstveni redni broj, veza će biti pouzdana.

Korak 3: Klijent odgovara ACK segmentom

Zasluge imovine: Fleshgrinder/Wikimedija

Konačno, klijent potvrđuje redni broj poslužitelja.

Slika koju je napravio pisac

Posljednji segment je ACK segment od klijenta.

Kao što možete, klijent će potvrditi redni broj poslužitelja tako što će odgovoriti s poslužiteljevim rednim brojem (1111111111) plus jedan (1), a to je 1111111112.

Klijent i poslužitelj više neće slati redni broj jer je početak slijeda već potvrđen. Obje strane će, međutim, očekivati ​​segmente potvrde s kontinuiranim brojevima sekvence plus jedan (1) i broj bajtova tijekom interakcije. U ovom slučaju, klijent očekuje da će sljedeći odgovor poslužitelja imati ACK od 0000000002 (ako nema priloženih podataka).

Nakon toga se uspostavlja trosmjerni stisak!

Razumijevanje funkcioniranja mrežnih veza

Sada kada ste naučili kako funkcionira trosmjerno rukovanje, također ćete lakše razumjeti kako TCP radi nakon rukovanja. Klijent i poslužitelj će početi slati podatke kada se uspostavi rukovanje. Ovaj put će se koristiti cijeli format segmenta, plus izborni podaci ili korisni teret.

Podaci se obično segmentiraju/režu na manje dijelove radi lakšeg prijenosa. Svaki segment podataka ima svoju glavu segmenta koja sadrži redni broj i broj potvrde. Razlog za redoslijed je da se zna slijed segmenata kada će se na kraju ponovno sastaviti. Brojevi potvrde su tu kako bi kod pošiljatelja provjerili je li njihov segment primljen i odgovara li slijedu dolaznih segmenata.

Prebrojavanje slijednog broja i njihova provjera s potvrdom je način na koji TCP može pouzdano prenijeti ogromne komade podataka bez ikakvih paketa podataka koji nedostaju.

Uz to, trebali biste imati prilično dobru ideju o tome kako TCP radi.