Iepriekšējos interneta gados interneta protokols (IP) bija vienīgais protokols, ko cilvēki izmantoja, lai izveidotu savienojumu ar internetu. Problēma ar IP bija tāda, ka jūs varējāt nosūtīt ziņojumu un nezināt, vai adresāts to saņems vai nesaņems. Šī iemesla dēļ tika izveidots TCP/IP.
TCP/IP nodrošina, ka visi jūsu nosūtītie dati sasniedz adresātu. Tas tiek darīts, nodrošinot klientam un serverim drošu savienojumu pirms datu nosūtīšanas. Šis drošais savienojums tiek izveidots, izmantojot procesu, kas pazīstams kā trīsvirzienu rokasspiediens, kas pazīstams arī kā TCP/IP rokasspiediens.
Kas ir trīsvirzienu rokasspiediens?
Trīsvirzienu rokasspiediens (TCP/IP rokasspiediens) ir pirmās trīs mijiedarbības starp klientu un serveri, mēģinot izveidot TCP savienojumu. Šīs sākotnējās mijiedarbības ir būtiskas droša savienojuma izveidei. Šajā posmā gan klients, gan serveris vienosies par parametriem, kurus viņi izmantos, lai pārbaudītu un pārbaudītu ienākošās un izejošās datu paketes. Šie parametri būs TCP segmentu veidā.
Kas ir TCP segments?
TCP/IP savienojumā visi nosūtītie dati ir jāizgriež un jāstrukturē tā sauktajos TCP segmentos. Šajos segmentos ir ietverta tāda informācija kā IP adreses, porti, karoga biti, kārtas numuri, apstiprinājuma numuri un neobligātie dati vai lietderīgā slodze.
Pirmās trīs mijiedarbības (trīsvirzienu rokasspiediens) saturēs tikai TCP segmentu galvenes bez lietderīgās slodzes vai pievienotiem datiem. Šeit ir TCP segmenta paraugs
Ņemiet vērā, ka iepriekš redzamā ilustrācija ir paredzēta tikai TCP. Pilnam TCP/IP segmentam ir nepieciešami abi IP adreses no sūtītāja un saņēmēja virs TCP segmenta augšpusē.
Ikreiz, kad nosūtāt sūtījumu personai, piegādes dienests jums pieprasa aizpildīt informācijas veidlapu un pēc tam pievienot to pakai pirms nosūtīšanas. Tāpat TCP pieprasa, lai sūtītājs datiem (pakotnei) pievienotu segmenta galvu (informācijas veidlapu), pirms tas sāk sūtīt segmentu (paku) saņēmējam.
Ikreiz, kad klients sazinās ar serveri, abām pusēm sava mijiedarbība būs jāformatē TCP segmenta veidā. TCP segments ietver TCP segmenta galvu, kas pievienota datiem, kurus mēģināt nosūtīt. Sūtītājam būs jāaizpilda informācija, kas nepieciešama segmenta galvai.
Lai veiktu trīsvirzienu rokasspiedienu, sūtītājam būs jāaizpilda tālāk norādītā informācija.
- Avota osta: Identificē sūtītāja ostu
- Galamērķa osta: Identificē uztvērēja portu
- Secības numurs: Norāda segmentu secību
- Apstiprinājuma numurs: Norāda, ka segments ir apstiprināts, pievienojot vienu norādītajam kārtas numuram
Papildus segmenta galvas lauku aizpildīšanai sūtītājam ir jāizvēlas arī karoga bits. Kopā ir seši karoga biti, bet trīsvirzienu rokasspiedienam būs nepieciešami tikai divi:
- SYN: Dod kārtas numuru. Šis kārtas numurs tiks izmantots, lai uzskaitītu visu ienākošo segmentu secību pārējā mijiedarbības laikā.
- ACK: Norāda, ka SYN numura saņēmējs pieņem savienojuma pieprasījumu, pievienotajam SYN numuram pievienojot vienu (1).
Tagad, kad zināt, kas ir TCP segments, redzēsim, kā tas tiek izmantots trīsvirzienu rokasspiedienā.
Kā darbojas trīsvirzienu rokasspiediens
Trīsvirzienu rokasspiediens tiek izveidots, kad gan klients, gan resursdators ir apmainījušies ar informāciju un atzinuši viens otra kārtas numurus. Kā norāda nosaukums, trīsvirzienu rokasspiediens tiek veikts trīs soļos.
Pirmkārt, klients nosūta tīru SYN segmentu, norādot, ka vēlas savienojumu. Otrkārt, serveris atbild ar SYN-ACK segmentu, kas nozīmē, ka tas ir apstiprinājis pieprasījumu un nosūta savu SYN numuru, lai klients to apstiprinātu. Treškārt, klients nosūta serverim ACK segmentu, lai paziņotu, ka servera SYN numurs ir apstiprināts un tiks izmantots turpmākam savienojumam.
Trīsvirzienu rokasspiediens izskatīsies apmēram šādi:
Sadalīsim to un apskatīsim segmentus, lai jūs zinātu, kas tieši notiek, kad klients un serveris apmainās un apstiprina kārtas numurus.
1. darbība: klients nosūta SYN segmentu
Klients nosūta pieprasījuma savienojumu, nosūtot serverim SYN segmentu. Klients izmanto klienta IP adresi, lai atrastu serveri un nosūtītu TCP segmentu.
Lai samazinātu segmenta sarežģītību, ignorēsim dažus segmenta laukus un koncentrēsimies tikai uz nepieciešamo trīsvirzienu rokasspiediena savienojumam. Tas ietver avota portu, mērķa portu, kārtas numuru, apstiprinājuma numuru un izmantoto karoga bitu.
Un līdz ar to SYN/pieprasījuma segmentam vajadzētu izskatīties šādi:
Klienta ports ir nejaušs skaitlis no 49152 līdz 65536. Šis portu diapazons ir saskaņotais diapazons, ko publiskās ierīces var dinamiski izmantot, lai izveidotu savienojumu ar internetu. Portu diapazoni no 1024 līdz 49151 ir privāti. Tie būs jāreģistrē entītijai, lai izmantotu portu norādītajā diapazonā. Portu numuri, kas mazāki par 1024, ir porti, kas rezervēti dažādām funkcijām un interneta protokoliem, piemēram, FTP (ports 20), SMTP (ports 25), DNS (ports 53) un HTTP (ports 80).
Reālajā dzīvē kārtas numurs ir nejaušs skaitlis. Piemēram, mēs izmantojām 0000000000, lai atvieglotu vizualizāciju.
Veicot darbības, ņemiet vērā kārtas numuru. Pašlaik tas ir 000000000. Pašlaik nav apstiprinājuma numura, jo nav ko atzīt.
2. darbība: serveris atbild, izmantojot SYN-ACK segmentu
Kad serveris saņems SYN segmentu, tas atbildēs, nosūtot ACK segmentu, kurā ir apstiprinājuma numurs. Apstiprinājuma numurs būs klienta kārtas numurs plus viens (1).
Apskatiet avota portu. Tas parāda, ka segments ir no 20. porta, norādot, ka tas nāca no servera kā atbilde.
Tagad paskatieties uz apstiprinājuma numuru. Tas ir 0000000001, kas ir klienta kārtas numurs (0000000000) plus viens (1). Šādi tiek izsekots segments. Pieņemsim, ka klients saņēma ACK segmenta atbildi, kur apstiprinājuma numurs ir 0000000002. Tas klientam norādītu, ka trūkst segmenta 0000000001 un ka klientam būs jāgaida, līdz tas ieradīsies. lai jūs nepiedzīvotu pakešu zudumu.
Kā redzat, ir aktivizēti divi karoga biti — SYN un ACK.
Papildus klienta kārtas numura apstiprināšanai serveris nosūtīs arī savu kārtas numuru, lai klients varētu apstiprināt servera kārtas numuru plus viens (1). Mūsu piemērā mēs izmantojām 1111111111 kā servera kārtas numuru. Atkal, reālajā pasaulē šis skaitlis ir nejaušs.
Ņemiet vērā, ka klienta un servera kārtas numuriem nav jāsakrīt. Kamēr abas puses atzīs viena otras unikālo kārtas numuru, savienojums būs uzticams.
3. darbība: klients atbild ar ACK segmentu
Visbeidzot, klients apstiprina servera kārtas numuru.
Pēdējais segments ir klienta ACK segments.
Kā jūs varat, klients atzīs servera kārtas numuru, atbildot ar servera kārtas numuru (1111111111) plus viens (1), kas ir 1111111112.
Klients un serveris vairs nesūtīs kārtas numuru, jo secības sākums jau ir apstiprināts. Tomēr abas puses sagaida apstiprinājuma segmentus, kas turpinās secības numurus plus viens (1) un skaitļu baitus visā mijiedarbības laikā. Šajā gadījumā klients sagaida, ka nākamajai servera atbildei būs ACK 0000000002 (ja nav pievienoti dati).
Pēc tam tiek noteikts trīsvirzienu rokasspiediens!
Izpratne par tīkla savienojumu darbību
Tagad, kad esat uzzinājis, kā darbojas trīsvirzienu rokasspiediens, jums būs arī vieglāk saprast, kā darbojas TCP pēc rokasspiediena. Klients un serveris sāks sūtīt datus, kad būs izveidots rokasspiediens. Šoreiz tiks izmantots pilna segmenta formāts, kā arī papildu dati vai lietderīgā slodze.
Dati parasti tiek segmentēti/sagriezti mazākos gabalos, lai atvieglotu pārsūtīšanu. Katram datu segmentam ir sava segmenta galva, kas satur kārtas numuru un apstiprinājuma numuru. Kārtības numura iemesls ir zināt segmentu secību, kad tie galu galā tiks samontēti. Apstiprinājuma numuri ir paredzēti, lai kopā ar sūtītāju pārbaudītu, vai viņa segments ir saņemts un vai tas atbilst ienākošo segmentu secībai.
Kārtības numura saskaitīšana un to pārbaude ar apstiprinājumu ir tas, kā TCP var droši transportēt milzīgus datu gabalus bez trūkstošām datu paketēm.
Un līdz ar to jums vajadzētu būt diezgan labam priekšstatam par TCP darbību.