Nivoji TCP/IP

Čeprav je postal TCP/IP naš vsakodnevni spremljevalec, pa marsikdo ne pozna načela njegovega delovanja. Marsikdo po zamahnil z roko češ, da je za zagon naprave treba vpisati le ustrezne vrednosti in globlje poznavanje niti ni nujno. Dejstvo pa je, da je dobrodošlo v primerih, ko želi uporabnik priključiti dodatno napravo, naleti na težave v omrežju ali želi omrežje in naprave v njem optimalno izkoristiti.

PREPLETANJE PROTOKOLOV

Že samo ime TCP/IP (Transmission Control Protocol/Internet Protocol − protokol za krmiljenje prenosa/internetni protokol) nakazuje, da ne gre za en protokol. V zmoti so tudi tisti, ki pričakujejo, da gre pri vsem skupaj le za kombinacijo dveh protokolov, saj gre pri TCP/IP-ju za prepletanje prej omenjenih protokolov z drugimi. Če sodite med tiste, ki se zaradi nepoznavanja ali nerazumevanja sveta protokolov bojijo, vas bom poskušal prepričati, da zadeva še zdaleč ni tako huda. Poznavalci področja pa naj mi ne zamerijo določenih poenostavitev, ki bodo narejene z namenom lažjega razumevanja tematike.

TCPIP in OSI

PRIMERI IZ VSAKDANJEGA SVETA

Protokole lahko razumemo kot določena pravila, ki so lahko uporabljena splošno ali pa le v omejenem obsegu. Primer uporabe določenih protokolov je lahko tudi vožnja avtomobila. Avto najprej »vžgemo«, nato speljemo (po določenem postopku), menjamo prestave (spet po določenem postopku), zaviramo, se srečujemo z drugimi udeleženci (po dogovorjenih pravilih). Drug primer bi lahko bil priprava hrane. V kuharski knjigi je za določeno jed naveden postopek priprave: potrebujemo prave sestavine, ki jih kombiniramo med seboj po določenih pravilih in ustreznem zaporedju. Ker gre za uporabo znanih postopkov (npr. znano je, kaj je paniranje), postopkov ni treba vsakič znova opisovati, ampak se nanje le sklicujemo.

Naloga IP-protokola
Vsako sporočilo ali informacija se preko TCP/IP-omrežja pošlje kot IP-paket. Naloga IP-protokola je omogočanje prenosa podatkov prek omrežij in med njimi. Od tod tudi njegovo ime IP (Internet Protocol). Vsaka naprava v IP-omrežju potrebuje unikaten naslov.

PROTOKOLI IN NIVOJI

Primer priprave jedi pa je dobrodošel tudi za razumevanje še ene komponente protokolov. Od najnižje ravni (posamezne sestavine) z uporabo postopkov počasi prehajamo proti višjim ravnem do najvišje – končne jedi. Postopnost prehajanja med ravnmi pa nam omogoča tudi to, da lahko naredimo določene spremembe le na »delu«, ki je potreben, vse drugo pa lahko pustimo nespremenjeno. To lahko ponazorimo z nakupom novega avtomobila (zaradi zamenjave starega tipa avtomobila z novim ne spreminjajo prometnih predpisov) ali na primer, da zaradi spremenjenega načina delovanja zelene luči ne zamenjujemo osebnih vozil. Skratka, spremembe delamo le na ravneh, kjer so te potrebne, na mejah pa zagotovimo možnost povezovanja z drugimi področji.

Lahko bi rekli, da je razdelitev TCP/IP-ja narejena nekoliko drugače, kot jo poznamo pri modelu OSI. V grobem lahko rečemo, da s TCP/IP-jem »pokrivamo« štiri nivoje, od katerih vsak višji nivo dodaja novo funkcionalnost glede na spodnjega. Na najnižji ravni (link) lahko uporabimo poljubno tehnologijo, npr. ethernet, token ring, povezava prek protokola PPP oziroma SLIP … Ker lahko omenjene tehnologije (npr. ethernet) izvedemo prek različnih medijev (UTP, koaksialni kabel, optika, brezžične povezave …), lahko trdimo, da je uporaba TCP/IP-ja praktično neodvisna od uporabljenega medija! O ethernetu smo v pretekli številki Mojega mikra že pisali, zato pojdimo stopnjo višje − na raven omrežja.

TCP/IP na štirih ravneh
Aplikativni: HTTP, FTP, SSH …
Transportni: TCP, UDP
Omrežni: IP
Povezava: Ethernet

OMREŽNI NIVO

Na omrežnem nivoju najdemo internetni oziroma IP-protokol. Naloga omrežnega nivoja je, da skupaj s spodnjim nivojem poskrbi za prenos »informacije« med dvema točkama. Z informacijo mislim skupino oziroma bloke podatkov, ki se prenašajo v obliki paketov prek datagramov.

Prišli smo do pojma paket, zato je prav, da ga razložimo. Pojem IP-paketa lahko primerjamo z običajnim poštnim paketom. Tisti, ki opravlja storitev prenosa (poštar), ne ve, kakšna je vsebina paketa, na paketu pa sta napisana naslova tistega, ki mu paket pošiljamo, in naslov tistega, ki paket pošilja. Podobno velja pri IP-paketih. IP-paket je zaokrožena celota, ki je v grobem sestavljena iz dveh delov: režijskega dela (v katerega zapišemo tudi informacije o izvornem in ponornem naslovu) ter dela, v katerem prenašamo koristno informacijo.

Ko smo v pretekli številki govorili o ethernetu, smo spoznali naslove MAC (Media Access Control), ki so bili kot unikatni naslov zapisani v strojno opremo. Pri IP-protokolu poznamo podobne naslove, ki predstavljajo vrednosti, določene v programski opremi. Tudi te vrednosti morajo biti znotraj omrežja unikatne. IP-naslove lahko gledamo podobno kot številke v telefonskem omrežju. Če zapišemo svojo telefonsko številko na vizitko, jo pišemo običajno v obliki +, ki označuje izhodno kodo države, kodo klicane države, kodo omrežne skupine, telefonsko številko znotraj omrežja – na primer +386(0)41 738261. Zaradi lažje čitljivosti lahko dodamo še vmesne znake npr. +386-(0)41-738-261. Navsezadnje pa bi se lahko dogovorili tudi za poenostavljen zapis in ločitev s pikami 386.041.738.261. Ne glede na tip zapisa je bistveno to, da je telefonska številka sestavljena iz dveh delov: poti, ki kaže na operaterja v določeni državi, in konkretnega uporabnika v tem omrežju. Moj operater (Telekom Slovenije) poskrbi za vzpostavitev povezave do klicanega omrežja, drug operater pa poskrbi za ustrezno usmerjanje klica znotraj svojega omrežja.

Podobna zgodba je v podatkovnem svetu. Ker računalniki uporabljajo za svojo komunikacijo digitalne signale (zapis z 0 in 1) zapišemo vrednosti naslovov obliki štirih oktetov, ki jih med seboj ločimo s pikami, npr. 11000001.10111101.10100000. 11101010. Ker pa je večini ljudi bližji desetiški zapis, lahko prejšnji (binarni) zapis preprosteje napišemo kot naslov 193.189.160.234 (če vam prevajanje iz ene oblike v drugo ne leži, lahko uporabite tudi računalo v okolju Windows). Z vsakim oktetom lahko zapišemo 28=256 vrednosti (od 0−255). Zato nobena vrednost znotraj IP-naslova ne more biti drugačna kot v intervalu med 0 in 255. Z vsemi biti v naslovu lahko dosežemo skupaj 232=4.294.967.296 možnih naslovov. Čeprav se ta vrednost na prvi pogled morda zdi velika, bomo v nadaljevanju ugotovili, da to ne drži. Podobno kot pri zapisu celotne telefonske številke moramo tudi pri IP-naslovu vedeti, kateri del pripada določenemu operaterju in kateri del je specifičen za posameznega uporabnika. Dodatna informacija o IP-naslovu je tako imenovana maska (subnet mask). Ta, podobno kot IP-naslov, vsebuje 4 bajte (32 bitov) in jo tudi zapisujemo v isti obliki kot IP-naslov, torej s pikami. Delovanje maske si lahko zamislimo kot kazalec, ki ga pomikamo levo ali desno po 32 bitih IP-naslova. Levo od kazalca so vrednosti maske 1, desno od nje pa 0. Med navpičnimi vrednostmi IP-naslova ter maske izvedemo funkcijo logičnega IN ( 0 in 0 = 0, 0 in 1 = 0, 1 in 0 = 0, 1 in 1= 1), s čimer lahko ločimo del omrežja od naslova uporabnika v omrežju.

Primer: IP-naslov 192.168.200.5 =
11000000.10101000.11001000.00000101
a. maska 255.255.255.0 = 11111111.11111111.11111111.00000000 (krajši zapis /24)
del, ki označuje omrežje 192.168.200.

b. maska 255.255.0.0
11111111.11111111.00000000.00000000 (krajši zapis /16)
del, ki označuje omrežje 192.168.

Po izvedbi logičnega IN med IP-naslovom in masko ugotovimo,da je uporabnikom v prvem primeru namenjen prostor osmih bitov (28-2=254 uporabnikov), v drugem pa šestnajstih bitov (216-2=65534). Dva naslova smo odvzeli zato, ker prvi naslov v omrežju označuje omrežje – (v primeru a. je to 192.168.200.0 v b. primeru pa naslov 192.168.0.0), zadnji pa je tako imenovani broadcast naslov (v primeru a. je to 192.168.200.255, v b. primeru pa naslov 192.168.255.255). Ker je celotni naslovni prostor omejen (32 bitov), je jasno, da s premikanjem maske v levo oziroma desno posredno vplivamo na število možnih omrežij, oziroma število uporabnikov v njih – več omrežij pomeni manj uporabnikov v njih. Zaradi optimizacij lahko naslovni prostor, ki nam je na voljo za omrežja, delimo ali združujemo – postopek imenujemo subneting oziroma superneting. Načelno je možno masko premikati poljubno (ne le na mejah).

Primer: IP-naslov 192.168.200.5 =
11000000.10101000.11001000.00000101
maska 255.255.255.240 = 11111111.11111111.11111111.11110000 (krajši zapis /28)

V omrežju ne bo več 254 možnih uporabnikov temveč le 14 (od 1−14). IP-naslov omrežja bo 192.168.200.0, broadcast naslov omrežja bo 192.168.200.15. Naslov 192.168.200.16 (ki je bil prej v istem omrežju, je po novem IP-naslov novega omrežja). Če vam premetavanje naslovov glede na masko ne diši lahko to storite tudi s kakšnim IP-kalkulatorjem (npr.www.wildpackets.com/products/free_utilities/ipsubnetcalc/overview)

JAVNI IN ZASEBNI NASLOVI

Spoznali smo, da imajo določeni naslovi poseben pomen. IP-naslov 0.0.0.0 označuje privzeto omrežje, ki ga uporabljamo v kombinaciji z masko 0.0.0.0 in kaže na privzeti prehod omrežja (več o njem v nadaljevanjih). Naslovi, ki se začnejo z vrednostmi 1−126, sodijo v tako imenovani razred A (Class A) in je namenjen majhnemu številu omrežij z velikim številom uporabnikov. Naslov 127.0.0.1 označuje navidezni vmesnik, ki deluje kot zanka (računalnik pošilja podatke sam sebi) in je namenjen predvsem testiranju. Naslovi, ki se začnejo z vrednostmi med 128 in 191, so namenjeni srednje velikim omrežjem in jih uvrščamo v razred B (Class B). Naslovi od 192 do 223 so namenjeni še manjšim omrežje in sodijo v razred C (Class C). V preostalem prostoru sta še razred D, ki je namenjen za multicast (multicast je hkratno pošiljanje IP-prometa več uporabnikom), in razred E (eksperimentalni nameni). Za preprečitev kaosa v javnih omrežjih ustrezne organizacije razporejajo IP-naslove (javni naslovi razredov A, B, C) uporabnikom.

Razredi IP-naslovov
Razred A: 0xxxxxxx 1-127
Razred B: 10xxxxxx 128-191
Razred C: 110xxxxx 192-223
Razred D: 1110xxxx 224-239
Razred E: 11110000 240-254

Zaradi pomanjkanja javnih IP-naslovov so uporabniki največkrat prisiljeni uporabljati drugo skupino naslovov – zasebne naslove. Uporabniki lahko sami razpolagajo z zasebnimi naslovi med 10.0.0.0 in 10.255.255.255 (razred A), med 172.16.0.0 in 172.31.255.255 (razred B) ter med 192.168.0.0 192.168.255.255 (razred C). Ti se lahko v omrežjih različnih uporabnikov večkrat uporabijo, saj so posamezna zasebna omrežja skrita druga pred drugim – zasebni naslovi se prek interneta ne usmerjajo, z izjemo VPN-povezav. Zato je treba za zagotovitev dostopa do zasebnega omrežja imeti vsaj en javni IP-naslov, ki ga dobimo od ponudnika dostopa do interneta. Ta naslov je lahko statičen (ves čas je enak oziroma vsakič se nam dodeli isti IP-naslov) ali dinamičen (dodeljuje se naključno).

Za omogočanje mehanizma prenosa moramo na nivoju etherneta poznati (strojni) naslov posameznega vmesnika. Zato imamo v TCP/IP-omrežjih tudi protokol ARP (Address Resolution Protocol), ki skrbi za pretvorbo med IP-naslov in MAC-naslovi. Deluje tako, da pošilja po omrežju sporočila z ARP-zahtevo, naprave pa mu ob detekciji svojega IP-naslova v ARP-sporočilu odgovarjajo s podatkom o MAC-naslovu.

Sam IP je nepovezavno (connectionless) usmerjen protokol. To pomeni, da se vsak IP-paket obravnava samostojno. IP-protokol je podoben poštnemu uslužbencu, ki skrbi za »ročno« usmeritev posameznega paketa in se ne obremenjuje s tem, kako bo z njegovo končno dostavo, na primer vrstni red prispetja pošiljke glede na vrstni red pošiljanja, prispetje pošiljke na končno lokacijo …

Glede na potrebe se lahko se pri poštnih pošiljkah odločamo med različnimi načini prenosa. Cenejše in manj zamudno je običajno pošiljanje pošte. Glede na kakovost poštnih storitev lahko menimo in načelno verjamemo, da je bilo poslano pismo dostavljeno tudi, če ne dobimo potrditve o sprejemu. Pisemske pošiljke pa lahko pošiljamo tudi dražje/zamudneje in smo o (ne)uspešnosti dostave obveščeni. Če vročitev iz takšnega ali drugačnega razloga ni bila uspešna, lahko pošiljanje ponovimo. Po nadzorovanem načinu dostave posegamo takrat, ko je to zaradi različnih okoliščin mogoče (ustrezni časovni okviri – če tega zamudimo, nam tudi ponovitev nič ne pomaga) ali pa je nujno zaradi same narave. Enako velja za IP- pakete. Ker sam IP-protokol tega na omrežnem nivoju ne omogoča, lahko storimo to na višjem – transportnem nivoju. Na njem lahko najdemo protokola UDP (User Datagram Protocol) in TCP (Transmission Control Protocol).

Struktura glave IP-paketa

UDP IN TCP

UDP je zelo preprost protokol, ki nadgrajuje nižje ležeči IP, še vedno pa ostaja nepovezavno orientiran (ni mehanizma nadzora dostave IP-paketov). UDP med drugim doda polja, ki vsebujejo tudi informacije o uporabljenih vratih (port) na izvoru oziroma ponoru. Gre za »navidezna« vrata, ki so značilna za posamezne storitve. Na podlagi informacij o vratih lahko pravilno zložimo pakete z istega IP-naslova, ki prihajajo za različne storitve. UDP uporabljamo predvsem v časovno kritičnih aplikacijah (npr. broadcast, multicast, prenos govora prek IP-protokola – VoIP ... ). Pri »realnočasovnih« aplikacijah so IP-paketki hitro pokvarljivo blago, podobno kot sadje, ki mora biti pravočasno dostavljeno, kajti prepozna dostava nam nič ne pomaga ...

TCP je povezavno orientiran protokol, ki ga uporablja večina aplikacij in je kompleksnejši od UDP-ja. To pomeni, da se pred začetkom prenosa podatkov med uporabniki vzpostavi »povezava«, prek katere se potrjuje pravilnost sprejema paketov (v nasprotnem primeru se prenos neuspešno prenesenih paketov ponovi). Zaradi optimiranja se ne potrjuje vsakega paketa, temveč določene skupine (velikost okna). Bistvena prednost TCP-ja glede na UDP je možnost opozarjanja oddajne strani (aplikacije). Podobno kot UDP pozna tudi TCP-vrata, s pomočjo katerih lahko ugotovimo, kateri protokol/aplikacija je podatke sprejel/a ali poslal/a.

Marko Koblar