TCP/IP

Koncepcijos ir planavimas:TCP/IP ir Windows NT

Terminai, kuriuos reiktų išmokti. ARPANet RFC IAB OSI Portai Soketai Slenkantys langai TCP/IP Programos lygis Transporto lygis Tarptinklinis lygis Tinklinio interfeiso lygis NetBIOS Windows Soketai

Žinios kurias reiktų įsisavinti IP lygių paskirtis IP lygių palyginimas su OSI IP Interfeisų aprašymai

Įvade Jūs nerasite konkrečios informacijos, o tik bendras žinias leidžiančias sąvokas ir reiškinius sudėlioti į savas vietas.TCP/IP nėra vienas protokolas, tai protokolų rinkinys, arba dar kitaip protokolų dirbančių kartu grupė. Nuo pat atsiradimo TCP/IP buvo skirtas tam, kad galėtų dirbti skirtinguose kompiuterinių tinklų tipuose, o taip pat galėtų parinkti įvairius alternatyvius maršrutus jei nors viena tinklo dalis nebeveikia.Ankstesnis TCP/IP pavadinimas buvo NCP (Network Control Protocol). NPC savo ruoštu buvo JAV gynybos ministerijos padalinio ARPANet (Advanced Research Project Agency Network) kūrinys, skirtas tam, kad atominio karo metu, nurūkus daliai ryšio linijų, duomenys būtų toliau perduodami alternatyviais ryšio kanalais. Nors TCP/IP šaknys ir glūdi JAV gynybos ministerijoje, tačiau TCP/IP nėra kokios nors kompanijos ar asmens nuosavybė. Šiuo metu tai pagrindinis Internet duomenų perdavimo protokolas. Taip kaip ir kiti Internet standartai TCP/IP yra aprašytas RFC (Request For Comments – Komentarų užklausimas) standarte ir palaikomas IAB (Internet Architecture Board – Interneto architektūros tarnyba). IAB leidžia tiek kompanijoms tiek privatiems asmenims peržiūrėti esamus RFC, ar siūlyti savo pakeitimus ar netgi naujus projektus, kurie vėliau galėtų tapti standartais.Jei kas nors pasiūlo savo RFC tai jis būna publikuojamas viešai keliems mėnesiams, kad visi galėtų išsakyti savo nuomonę ir kritiką, po to jį peržiūri IETF (Internet Engineering Task Force – Internet inžinierinių užduočių padalinys), kuris yra IAB padalinys. Po viešo aptarimo ir pakankamo laiko kritikai naujasis pasiūlymas gali tapti RFC juodraščiu, arba netgi nauju RFC standartu, kurį po to naudotų visa Internetinė visuomenė. Kadangi TCP/IP nėra kieno nors nuosavybė tai su juo susijusią medžiagą tikrina ir peržiūri daugybė žmonių visame Internete.

TCP/IP yra pagrįstas OSI (Open System Internconnections-atvirų sistemų sąveikos) sistemos modelio pagrindu. Tai užtikrina programuotojus, kad bet kuris TCP/IP modelis turės RFC apibrėžtą bazinių funkcijų sąrašą.Tačiau Microsoft TCP/Ip turi papildomų funkcijų sąrašą.RFC (Request For Comments)Kaip ir minėjau RFC naudojama dokumentuoti Internet standartus. Reikia žinoti, kad iš visų RFC tik nedaugelis tampa standartais. Yra daugybė RFC tipų, štai keletas populiaresnių iš jų:• FYI (For your Information – Jūsų žiniai)• Drafts – Juodraščiai• STD (Standards – Standartai)Kiekvienas žmogus turi teisę pateikti RFC arba komentuoti, kritikuoti esamus. Pateikus savo RFC projektą, kuris jokiu būdu dar nėra RFC, IETF (Internet Enginering Tasks Force) jį patalpina Internete, kur kelių mėnesių eigoje jį gali kritikuoti ir komentuoti kas tik nori. Praėjus pakankamai laiko kritikai ir komentarams IETF projektą peržiūri ir pakomentuoja. Kad RFC projektas taptų RFC juodraščiu nuo publikacijos pradžios turi praeiti bent šeši mėnesiai. O kad RFC juodraštis taptų RFC standartu – dar keturi mėnesiai.Kiekvienas RFC turi savo unikalų numerį, kuris eina paeiliui PVZ.: RFC 1880 “Internet Official Protocol Standards”, jame yra visų prieš tai ėjusių RFC sąrašas. Jei RFC koreguojamas ar pakeičiamas naujesniu, tai jam visada priskiriamas naujas RFC numeris, o senasis variantas pripažįstamas negaliojančiu. Daugiau apie RFC galima rasti: www.Internic.comOSI (Open System Interconnection) modelis ir TCP/IPNors yra daug tinklinių protokolų, bet visi jie turi turėti kažkokį tai pagrindinių funkcijų sąrašą. Tos funkcijos gali būti skirtingai realizuotos, bet turi turėti tam tikras bendras charakteristikas. Pavyzdinis ISO modelis, kuris buvo sukurtas ISO (International Organisation for Standards) ISO modelyje yra nurodytas pagrindas kaip programuotojas turi kurti tinklinius protokolus, kad juos būtu patogu naudoti, atnaujinti, koreguoti. Šiandien OSI modelis tai daugiau teorinis pagrindas to kaip turi atrodyti tinklinių protokolų sistema, bet nereikia galvoti, kad jis nenaudojamas praktikoje OSI modelio pagrindu yra sukurtos protokolų sistemos TCP/IP arba Novell analogas IPX/SPX.
Tiek teorinis tiek praktikoje naudojamas OSI modelis sudarytas iš tam tikrų lygių. Kiekvienas lygis turi savo paskirtį ir funkcijų rinkinį, kiekvienas lygis bendrauja tik su virš esančiu ir žemiau esančiu lygiu, tai leidžia koreguoti funkcijas ne visų lygių ir neperrašinėti visą protokolą, o tik kaimyninių lygių funkcijas. Tai taip pat leidžia skirtingiems programuotojams programuoti skirtingus lygius, reikia žinoti tik žemesnių lygių funkcijas. Skirtingi gamintojai pagal standartą gali kurti skirtingas protokolų sistemas, kurios galės bendrauti tarpusavyje PVZ.: Windows->Linux->Novell.Teorinis OSI modelis sudarytas iš septynių lygių. Septintasis lygis yra arčiausiai vartotojo programų, o pirmasis lygis yra artimiausiai techninės įrangos PVZ.: tinklo korta, ar modemas. OSI lygiai:7. Programos lygis. Jis atsakingas už tai, kad programos galėtų pasiekti tinklą.6. Duomenų pateikimo lygis. Jis atsako už tai, kad žemiau esantis lygis gautų duomenis tinkamu formatu PVZ.: laiko formatas gali būti 17:00 arba gali būti 5 AM, taigi formatas padaromas toks, kad būtų suprantamas ant bet kokio kompiuterio.5. Seanso lygis. Atsakingas už ryšio nustatymą (connection), palaikymą ir nutraukimą (disconnection).4. Transporto lygis. Šiame lygyje rūpinamasi tuo, kad duomenys iš siuntėjo papultų gavėjui. Taip pat rūpinasi duomenų vientisumu. Jei žemesni lygiai to nedaro, tai transporto lygis taip pat atsako ir už virtualaus tunelio tarp adresato ir gavėjo sudarymo.3. Tinklo lygis. Atsako už paketų maršrutizavimą, kai yra keletas tinklų. Jis dirba nepriklausomai nuo žemiau dirbančių protokolų. Šis lygis leidžia dirbti skirtingų tipų tinkluose.2. Kanalinis (Tunelinis) lygis. Šį lygį sudaro du sub lygiai:• Loginio ryšio kontrolė (LLC – Logical Link Control)• Priėjimo prie įrenginių valdymas (MAC – Media Access Control) MAC leidžia pasinaudoti tinklu kai niekas jo tuo metu neužimaŠiame lygyje LLC verčia bitus ir baitus gautus iš MAC reikiamą formatą.1. Fizinis lygis. Tai lygis realizuotas paprastai pačioje aparatūroje (tinklo kortoje ar modeme) jis atsako už tai kaip tinklo kabeliu bus perduodami ir gaunami duomenys.

Kiekvienas lygis perduoda žemesniam lygiui informaciją kuria reikią siųsti tinklu, žemesnis lygis prie šios informacijos prideda savo tarnybinę informaciją. Kompiuteris gavęs atsiųstą informaciją analogiškai atfiltruoja ją t.y. žemiausias lygis pasiima visą duomenų paketą, iš jo atima savo tarnybinę informaciją, o po to perduoda kas liko aukštesniam lygiui, kuris pasielgia analogiškai.Microsoft TCP/IPMicrosoft sukūrė savo TCP/IP (MS TCP/IP) modelį pagal OSI standartą, bet pridėjo savo patobulinimus ir papildomus interfeisus. Praplėstos NetBIOS palaikymo galimybės (naudoja tik programos ir Windows servisai), o taip pat TDI (Transport Driver Interface – Transport Draiverio Interfeisas) ir NDIS (Network Device Interface Specifications – Tinklo Įrenginių Interfeisų Specifikacijos) Interfeisai. Tie papildymai palengvina programų rašymą TCP/IP protokolu. Microsoft OSI modelis turi keturis lygius. Šis keturių lygių mechanizmas pilnai atitinka teorinę septynių lygių OSI sistemą. Tiesiog MS TCP/IP kai kuriuose lygiuose realizuoti iškart keli teorinio OSI lygiai.7 Programos lygis. Šio lygio padedamos Windows programos ir servisai gali naudotis tinklu. Priėjimą prie tinklo transporto protokolų Winsock ir NetBIOS.• WinSock Interfeisas.Winsock yra tinklinis Interfeisas skirtas palengvinti darbą su TCP/IP ir kitais protokolais. Winsock kilo iš BSD Unix atmainos.• NetBIOS Interfeisas. Dauguma Windows programų ryšiui tarp išorinių procesų (Inter Process Comunication, IPC) naudoja NetBIOS Interfeisą, kuris leidžia naudoti NetBIOS vardus. Pvz.: jeigu norite prisijungti prie išskirto katalogo pavadinimu “pardavimai” esančio kompiuteryje vardu “verslas”, tai reiktu bandyti jungtis vardu \VERSLASPARDAVIMAI. Ši sistema dar vadinama UNC (Universal Name Convention – Universalus susitarimas dėl vardų). Tik nereikia jos maišyti su DNS (Domain Name Services – Domenų Vardų Servisas) NetBIOS atlieka tris pagrindines funkcijas:• NetBIOS vardų nustatymas• NetBIOS freimų tarnyba• NetBIOS seanso tarnyba

• NetBIOS vardai nustatomi arba atliekant kompiuterių apklausą lokaliame tinkle arba naudojant WINS serverį (Windows Internet Name Service – Windows Internet Vardų Servisas) Tai NBNS analogas sukurtas Microsoft. WINS leidžia be didelių užklausų nustatyti NetBIOS vardus lokaliame tinkle. Jei WINS serveris nepasiekiamas arba jo niekas nenustatė tai daromos broadcast (tai kai paketas yra siunčiamas visiems tinklo įrenginiams vienu metu) užklausos lokaliame tinkle.

• NetBIOS freimų tarnyba (servisas) atsako už duomenų perdavimą nenustatant susijungimo (connection) arba siunčiant Broadcast būdu. Kadangi nevykdomas susijungimas tai už tai, kad duomenys pasiektų adresatą niekas neatsako. Siuntėjas tokiu atveju negauna patvirtinimo ir nesėkmės atveju nesužino, kad duomenys nenuėjo.

• NetBIOS seanso servisas atsako už duomenų siuntimą ir gavimą. Pirma susijungiama, susijungimu vadinama tai kad siuntėjas siunčia gavėjui paketą su prašymu susijungti ir laukia patvirtinimo, gavęs patvirtinimą siunčia dar kai kokią tarnybinę informaciją apie kurią vėliau.

TDI InterfeisasTDI, tai tarsi tarpininkas tarp programinių interfeisų ir transporto lygio Interfeisų. Jis leidžia kurti komponentus seanso lygio. Šis Interfeisas sutinkamas tik MS TCP/IPTransporto lygis Atsako už kliento kompiuterio ir serverio kompiuterio susijungimą ir jungties patikimumą. Jis atsako už duomenų siuntimą ir duomenų persiuntimą nesėkmės atveju.. Transporto lygyje yra naudojami pagal poreikius du protokolai – tai TCP (Transmission Control Protocol – Persiuntimo kontroliavimo protokolas) arba UDP (User Datagram Protocol – Vartotojo duomenų protokolas). Kaip tik TCP reikalingas tada, kai duomenis reikia perdavinėti saugiai susijungus, o UDP nenaudoja susijungimo todėl siunčia duomenis nepatikimai.Port’ai Socket’ai ir Slenkantys langai (frames)Kiekvienas TCP procesas turi savo PORTO numerį. Porto numeris būna nuo 0..65535. Iš porto numerio galima žinoti kuriai kompiuteryje esančiai programai duomenys siųsti tinklu adresuoti. Programų portų naudojimą paskirsto IANA (Internet Asssigned Numbers Authority – Internet pajungtų numerių autorizacija) Žinoma niekas netrukdo programuotojams naudoti kokį nori porto numerį duotame tarpsnyje (0..65535). Bet jeigu Jūsų programos numeris bus registruotas, tai garantuos, kad oficialiai jūsų parašyta programa nesipjaus su kokia kita programa. Šiuo metu yra oficialiai užregistruoti pirmieji 1023 numeriai (portai). Portas yra Socket dalis. Socketai naudojami programose, kuriuose reikalingas susijungimas. Socketai sudaryti iš IP adreso ir PORTO.Slenkantys langai – terminas skirtas apibrėžti permainingo dydžio buferius skirtus duomenims perduoti ir priimti. Jei lengviau įsivaizduoti tai kaip ir duomenų masyvai siunčiami tinklu.

Jei tinklas naudojama perduoti didelius duomenis – video, garsą, tai patartina naudoti didelį TCP buferį. Bet jei TCP dirba per lėtą liniją arba tarp kelių tinklų, tai geriau naudoti mažo dydžio buferius.TCP TCP atsako už duomenų perdavimą nuo siuntėjo iki gavėjo. Jis kuria virtualų tunelį tarp dviejų taškų (kompiuterių jei kam taip patogiau). Kad susijungti TCP siunčia užklausą kitam kompiuteriui su prašymu susijungti ir laukia jo atsakymo, jei nutolęs kompiuteris veikia (yra įjungtas), tai jis atsako, kad gali susijungti. Bet jei kompiuteris yra perkrautas ar susijungti negali tai neigiamo atsakymo jis nesiunčia. Toks modelis vadinamas (Three Way Hand Shaiking), kadangi jungtis vyksta trimis etapais:1. Klientas siunčia serveriui paketą, kuriame prašo serverį susijungti. Tame pakete yra Porto numeris, kuriuo jungiamasi ir ISN (Initial Sequence Number – Paketų eiliškumo numeris)2. Serveris atsako į tą paketą savo paketu, kuriame įrašo ISN serverio numerį padidinta vienetu, o taip pat kliento ISN padidinta vienetu. Šie numeriai naudojami tam, kad pastebėti jeigu pradingsta koks nors paketas.3. Klientas siunčia serverio ISN padidinta vienetu serveriui.Kiekviename TCP pakete yra Porto numeris, ISN, duomenų fragmentacijos nuorodos ir kontrolinė baitų suma skirta tam, kad pastebėti jeigu siunčiami duomenys yra iškraipomi.UDPTaigi, kaip ir nekartą sakiau UDP ne taip kaip TCP nenustato susijungimo su serveriu ir niekas negarantuoja, kad siunčiami duomenys pasiekė adresatą. UDP naudoja NetBIOS vardų servisas, nes jo siunčiamų paketų dydis yra nedidelis, todėl sumažėja galimybė, kad duomenys prapuls. UDP taip pat naudoja PORT numerius, bet jie skiriasi nuo TCP PORT numerių, todėl tarp šių dviejų rūšių numerių nebūna konfliktų.Tarptinklinis lygisAtsako už tai, kad duomenys keliautų lokaliame tinkle ir tarp kitų tinklų. Šiame lygyje dirba maršrutizatoriai jei perduodami duomenys iš vieno tinklo į kitą arba iš vieno tinklo segmenti į kitą.
IP protokolasIP (Internet protocol – Interneto protokolas). IP nenaudoja susijungimų ir yra reikalingas tam, kad perduoti freimus iš vieno tinklo į kitą. IP nelaukia patvirtinimų (ACK – Aknowledment) tai už jį jau daro TCP arba nedaro UDP. Kiekvienas IP paketas turi:• Siuntėjos mazgų adresus• Gavėjo mazgų adresus• Protokolo identifikatorių, kuris leidžia IP perduoti reikiamiems transporto protokolams• Kontrolinė suma• TTL (Time To Live) – tai skaičius, sakantis maršratizatoriams tarp siuntėjo ir gavėjo, kiek laiko paketas gali būti tinkle. Kaskart paketui pereinant pro maršrutizatorių TTL skaičius sumažinamas vienetu. Taip po kažkiek laiko paketas jeigu nepasieks adresato tai nebebus siunčiamas maršrutizatoriaus į kitus tinklus, ir nebus tinklo užterštumo nekorektiškais paketais.IP protokolas naudoja loginį “AND” operatorių, kad sužinoti ar paketas priklauso lokaliam potinkliui ar kokiam kitam. Jei paketas priklauso lokaliam potinkliui, tai IP užklausia ARP (Address Resolution Protocol – Adresų Nustatymo Protokolas). ARP jeigu atpažįsta gavėjo IP adresą tai gražina IP protokolui MAC adresą, jo pagalba IP protokolas gali siųsti paketą tiesiai adresatui, nenaudojant plačių broadcast užklausų. Jeigu IP adresas buvo nelokalaus potinklio, tai IP protokolas ieško nuorodos kur toliau siųsti šį paketą lokalioje maršrutizacijos lentelėje. Jei tenai kelio neranda, tai paketas siunčiamas Default Gateway. Gateway su paketu atlieka lygiai tokius pat veiksmus ir vėlgi, jei nerado, kam šis paketas priklauso tai siunčia jį savo Default Gateway prieš tai sumažinęs paketo TTL vienetu. Tai tęsiasi tol kol TTL = 0 arba paketas pasiekia adresatą.ARPARP (Address Resolution Protocol – Adresų nustatymo protokolas). Priklauso tarptinklinio lygio protokolams. Jis atsako už IP adreso vertimą į aparatūrinį adresą. ARP gavęs IP adresą iš pradžių ieško jo atitikmens savo keše, jeigu atranda, tai siunčia paketą konkrečiam tinklo įrenginiui turinčiam MAC adresą. Jeigu adresas nerastas tai daromos broadcast užklausos lokaliame tinkle, kad nustatyti tinklo įrenginį kuris turi tam tikrą IP adresą. MAC adresas sudarytas iš šešių šešioliktainių skaičių PVZ.:
“FA F2 AA F3 A8 B5” Jei paketas siunčiamas visiems tinklo įrenginiams tai vietoje normalaus MAC adreso pakete įrašomas “FF FF FF FF FF FF”. Paketą su tokiu MAC adresu priima ir apdirba visi tinklo įrenginiai. ARP dialogas skamba maždaug TAIP: Ei, ar kasnors naudoja IP adresą “X.Y.Z.W”? jei taip tai siųskite man savo MAC adresą, mano MAC adresas yra A-B-C-D-E-F. Gautą atsakymą ARP įsirašo į savo kešą, kad lengviau būtų įsivaizduoti maždaug tokiu formatu: IP X.Y.Z.W = MAC A-B-C-D-E-F. Ir kitą kart, kai reikės paketą su šiuo IP adresu išsiųsti vėl, tai jau bus žinomas MAC adresas ir nereikės klausinėti įrenginių kam jis priklauso. Tiesa jeigu adresas nerastas, tai paketas siunčiamas Default Gateway.ICMPICMP tai taip pat tarptinklinio lygio protokolas, jį naudoja aukštesnio lygio protokolai, kad pranešti apie siunčiamų paketų būseną. Šis protokolas dažniausiai naudojamas tarp dviejų maršrutizatorių, kad kontroliuoti kiek greitai informacija perduodama tarp dviejų tinklų. Jeigu maršrutizatorius perkrautas tai jis siunčia kitiems įrenginiams ICMP pranešimą, kad siuntinėtų paketus lėčiau.IGMPTai protokolas skirtas Internet grupių valdymui. Lokalus kompiuteriai naudoja IGMP, tam kad užsiregistruoti grupėse. Šios grupes naudojamos tam, kad keli iškarto kompiuteriai galėtų dirbti su tuo pačiu siunčiamu paketu. Tai patogu tuo atžvilgiu, kad nereikia to paties paketo siųsti kiekvienam adresatui atskirai, nes kiekvienas adresatas jeigu priklauso tam tikrai grupei, tai jis pats dirbs su tuo tinkle einančiu paketu. Šias technologijas naudoja tokios programos kaip Net Show ar Net Meeting ar kokios kitos perduodančios vaizdą ar garsą keliems kompiuteriams iš karto.Tinklo Interfeiso lygisŠis lygis atsako už freimų paskirstymą. Jis dirba su ARP, kad sužinotų kokia informacija turi būti patalpinta į siunčiamo freimo kadrą. Tai daroma tam, kad pritaikyti siunčiamą paketą konkrečioms tinklų sistemoms, tokioms kaip Ethernet, Token Ring ar ATM.