TCP/IP PROTOKOLAS
___________________________________
TCP sudalins failą į gabalus. TCP turi žinoti, kokio ilgio duomenis palaiko jûsų tinklas ir tinklas kitame gale. Abiejų galų TCP protokolai “susitaria”, kokio ilgio datagramas jie gali priimti, ir tada jie išsirenka mažiausią.
_______ _______ _______ _______ _______
Kiekvienos datagramos pradžioje TCP uždeda header’į. Header’į sudaro mažiausiai 20 baitų, bet patys svarbiausi yra siųstuvo ir imtuvo porto numeriai, bei sekos skaičius. Porto numeris leidžia išskirti kelis darbo kanalus. Įsivaizduokime, kad 3 skirtingi vartotojai siunčia failus. Tam jûsų TCP gali išskirti portus, kurių numeriai yra 1000, 1001 ir 1002. Kai jûs sinnčiate datagramas, ant heder’io bûna siuntėjo porto numeris. Žinoma, kito galo TCP priskiria savo porto numerį. Jûsų TCP taip pat turi žinoti kito galo porto numerį. Header’yje taip pat yra kontrolinė suma. Ši suma gaunama susumavus visus datagramos baitus. TCP kitame gale vėl skaičiuoja šią sumą. Jei sumos nesutampa, vadinasi siunčiant atsirado klaida, ir ši datagrama atmetama. Taip atrodo datagrama:
| Siuntėjo portas | Gavėjo portas | |||||||
| Sekos skaičius | ||||||||
| Patvirtinimo skaičius | ||||||||
| U | A | P | R | S | F | |||
| Duomenys | Rezervuota | R | C | S | S | Y | I | Langas |
| G | K | H | T | N | N | |||
| Kontorlinė suma | Bûtina žymė | |||||||
|
Duomenys … likę 500 baitų |
||||||||
Jeigu TCP header’į pažymėsime “T”, gausime:
T_______ T_______ T_______ T_______ T_______
Lentelėje randame daug nepaiškintų pavadinimų. Dauguma jų kontroliuoja siuntimą. Norint žinoti, kad pasiųsti duomenys gauti, gavėjas siunčia patvirtinimo skaičių. Pavyzdžiui, gavus paketą su patvirtinimo skaičiumi 1500, mes suprantame, kad gavėjas gavo visus duomenis iki 1500 okteto. Jei siuntėjas negauna patvirtinimo skaičiaus tam tikrą laiką, siuntimas kartojams dar kartą. “Langas” nurodo, kiek galima vienu kartu siųsti duomenų. Nėra įprasta kiekvieną kartą laukti duomennų gavimo patvirtinimo, nes tai labai lėtintų siuntimą. Iš kitos pusės, jûs negalite vien tik siųsti, nes lėtesni kompiuteriai gali paprasčiausiai nespėti priimti duomenų. Todėl kiekvienas kompiuteris į “lango” skyrių talpina skaičių, kuris nurodo, kiek oktetų tikimasi gauti. Kompiuteriui gavus duomenis, šis skaičius mažėja. Kai skaičius pasidaro lygus nuliui, siuntėjo kompiuteris turi sustoti. Gavėjui apdorojus gautus duomenis, “lango” skaičius padidinamas; tai signalas, kad galima pratęsti siuntimą. Dažnai ta pati datagrama naudojama pernešti patvirtinimo skaičiui ir tolesnio siuntimo leidimui (skaičius “lango” skyriuje). “Bûtinos žymės” laukas leidžia vienam “galui” perduoti žinią kitam, kad pastarasis peršoktų į priekį, apdorojant ekstra baitus. Dažniausia tai naudojama sinchronizuojant darbą, pavyzdžiui kaijûs surenkate kontrolinį simbolį, arba komandą, kuri nutraukia siuntimą. Kitus laukus čia smulkiau neapžvelgsime.
12.2 IP protokolas
Visas datagramas TCP perduoda IP protokolui. Žinoma, IP turi bûti nurodytas nutolusio kompiuterio adresas. Pabrėžtina, kad tai viskas, ko reikia IP. IP nesidomi, kas yra datagramose ar TCP header’yje. Vienintelis IP uždavinys yra surasti maršrutą datagramoms ir persiųsti jas gavėjui. Kad šliuzai arba kitos tarpinės sistemos žinotų, kur toliau siųsti duomenis, IP uždeda savo header’į. Pagrindiniai šio header’io elementai yra siuntėjo ir gavėjo Internet’iniai adresai (32 bitų adresas gali atrodyti taip: 205.244.196.2), protokolo numerį ir dar vieną kontrolinę sumą. Internet’o siuntėjo adresas paprasčiasiai yra jûsų kompiuterio adresas. Pagal protokolo numrį IP kitame gale supranta, kad datagramos turi bûti perduotos TCP protokolui. Nors didžioji dalis IP siuntimų skirti TCP, bet egzistuoja ir kiti protokolai, dirbantys su IP, todėl reikia nurodyti, kam perduoti datagrams. Kontrolinė suma leidžia IP esančiam kitame gale patikrinti, ar siuntimo metu nebuvo pažeistas header’is (TCP ir IP kontrolinės sumos nėra tas pats). IP header’is atrodo taip:
| Versija | IHL | Serviso tipas | Visas ilgis | ||
| Identifikatorius | Vėliavėlės | Fragmentų išstatymai | |||
| Gyvavimo laikas | Protokolas | Header’io kontrolinė suma | |||
| Siuntėjo adresas | |||||
| Gavėjo adresas | |||||
|
TCP header’is ir likę duomenys |
|||||
Jeigu IP header’į pažymėsime “I” gausime:
IT_______ IT_______ IT_______ IT_______ IT_______
Vėliavėlės ir fragmentų išstatymai reikalingi kontroliuojant suskaidytų datagramų siuntimą. Kartais to prireikia, jei datagramos siunčiamos tinklu, kuris nepraleidžia tokio ilgio datagramų. Gyvavimo laikas yra skaičius, kuris mažėja, siunčiant datagramas tinkle. Kai šis skaičius pasidaro lygus nuliui, datagrama sunaikinama. Tai leidžia išvengti “vaiduokliškų” datagramų, kurios gali atsirasti ryšium su įvairias tinklo nesklandumais. Žinoma tai neįmanoma, bet gerai organizuotas tinklas atsižvelgia ir į “neįmanomas” situacijas. Kita header’yje esanti informacija nėra taip reikšminga, todėl dabar mes jos nenagrinėsime.
Puslapiai: 1 2