Primarna (i u neku ruku službeno podržana) platforma za obavljanje svih vježbi je porodica Unix operacijskih sustava i programski jezik C. Studenti koji žele mogu upotrebljavati i druge operacijske sustave i/ili druge programske jezike uz napomenu da u tom slučaju više ovise o samima sebi, iako ćemo se mi sa svoje strane truditi da svim studentima što više pomognemo u obavljanju laboratorijskih vježbi neovisno o odabranoj platformi i programskom jeziku. Bez obzira na koju platformu i programski jezik ste se odlučili prva vježbe mora biti vezana uz njih te kasnije promjene i prebacivanja nisu dopuštena. U slučaju da studenti koji su odabrali neku drugu platformu/programski jezik kvalitetno naprave sve laboratorijske vježbe omogućiti će im se održavanje prezentacije za što će ih se nagraditi odgovarajućim brojem bodova. Cilj tih prezentacija bio bi upoznavanje ostalih studenata sa specifičnostima drugih platformi/programskih jezika.
Cilj ove vježbe je upoznavanje sa osnovama Internet-a, osnovama Unix-a, alatima koje nudi UNIX operacijski sustav vezanim uz postavljanje/održavanje računalne mreže, dokumentacijom isporučenom uz sam sustav, te programskim alatima koji su direktno ili indirektno vezani uz mrežno programiranje.
Ove upute organizirane su kao niz kratkih natuknica koje studenta upućuju na mjesta gdje može naći dodatne informacije. Od studenta se očekuje da prođe ovu pripremu, obavi praktični dio te sastavi izvještaj od otprilike 4 stranice koje potom predaje na pregled asistentu. Asistent na osnovu tog izvještaja određuje da li je on zadovoljavajući te studentu daje bodove. Izvještaj ostaje studentu kao pomoć za izradu preostalih vježbi. Za predaju bilo koje druge vježbe predana prva vježba je nužni uvijet.
U idućim poglavljima opisuju se osnove TCP/IP porodice protokola. Osim tih osnova dan je i kratak pregled programa na Unix operacijskom sustavu koji se koriste prilikom konfiguriranja i nadzora mreže. Konkretni zadaci koje student mora obaviti nalaze se navedeni u tekstu i to u bloku posebno označenom sa riječju Zadatak:.
Tri su najpopularnija načina spajanja računala na mrežu, odnosno na Internet. To su preko analognog modema, ISDN modema, te uz pomoć lokalnih mreža. Ovdje ćemo ograničiti razmatranje samo na lokalne mreže budući da je to okruženje u kojemu se obavljaju laboratorijske vježe, a većina osnovnih pojmova vrijedi neovisno o načinu spajanja. Na ovom mjestu je nužno napomenuti da za obavljanje vježbi nije neophodno imati priključak na Internet, tj. laboratorijske vježbe se mogu obavljati na bilo kojem računalu bez priključka ali sa instaliranom podrškom za mrežu.
Spajanje računala na mrežu obavlja se upotrebom mrežnih kartica (rijeđe Ethernet, i FastEthernet). Samo spajanje izvodi se UTP kabelom kategorije 5. Detalji se nalaze u predavanjima. Osim UTP-a, kao zaostatak prošlosti dosta često se sreće i BNC kabel sa tzv. T-konektorima. BNC kabel se inače upotrebljava za prijenos video signala.
Nakon postavljanja kartice u računalo i njenog spajanja na mrežu potrebno je još instalirati odgovarajuće driver-e te podesiti neke parametre kako bi operacijski sustav, a preko njega i aplikacijski programi, mogli koristiti mrežu, tj. mogli komunicirati. Prije nego opišemo te osnovne parametre moramo se upoznati sa nekim temeljnim principima Internet-a.
Vidimo dakle da se pod ta tri pojma podrazumijevaju tri različite stvari (iako ima određenih preklapanja), a svima njima zajednička je ista tehnologija, tj. porodica protokola, koja se zove TCP/IP porodica protokola.
Kada priključimo računalo na Internet ono mora imati svoje ime odnosno svoju adresu kako bi ostala računala mogla sa njim komunicirati. To ime je jedan 32-bitni broj, koji se radi lakšeg pamćenja te manipuliranja sa njim piše u sljedećem obliku:
aaa.bbb.ccc.ddd
aaa, bbb, ccc i ddd su decimalne vrijednosti pojeding okteta 32-bitnog broja pri čemu je aaa oktet najveće težine, a ddd oktet najmanje težine. Npr., računalo koje ima heksadecimalnu adresu:
0xA135410B
pišemo u sljedećem obliku
161.53.65.11
Prilikom dodjeljivanja adrese nekom računalu taj broj se ne može odabrati proizvoljno već postoje određena pravila po kojima se on bira, a ta pravila diktira mreža na koju se računalo priključuje.
Uz sam broj, tj. Internet adresu, vezan je još jedan parametar koji se zove mrežna maska. Radi lakše izvedbe usmjeravanja sve Internet adrese podijeljene su u tzv. mrežni dio i računalni dio. Mrežni dio identificira neku određenu mrežu na Internet-u, dok računalni dio određuje računalo u toj mreži. I opet kao i kod same Internet adrese, i za mrežnu masku postoje određena pravila po kojoj se ona određuju te se ne može odabrati proizvoljno. Za gornji primjer adrese 161.63.65.11 mrežna maska iznosi 255.255.255.0, što se piše na dva ekvivalentna načina:
161.53.65.11/255.255.255.0
ili
161.53.65.11/24
U gornjem primjeru radi se o mreži čija adresa je 161.53.65 dok računalo ima broj 11. Konkretno radi se o lokalnoj mreži na ZEMRIS-u, a računalo je glavni poslužitelj zavoda.
Svaka mrežna kartica u računalu, a općenito i bilo koji uređaj uz pomoć kojega se računalo priključuje na internet, mora imati barem jednu adresu i mrežnu masku gornjega oblika. U nekim slučajevima konfiguriranje tog uređaja obavlja se automatski dok ga je u drugim slučajevima potrebno ručno podesiti. Način na koji se točno podešava i parametri koji se pri tome koriste ovise o mreži na koju se računalo priključuje.
Ovdje ćemo napomenuti da svako računalo ima jedan poseban "uređaj" koji se zove loopback i čija adresa iznosi 127.0.0.1/8. To je virtualni uređaj u smislu da program tj. operacijski sustav simulira njegovo ponašanje, dok on fizički ne postoji.
Kako je ljudima dosta teško pamtiti brojeve uvedena su imena. Npr., glavni poslužitelj na ZEMRIS-u ima ime gandalf.zemris.fer.hr. I ovdje kao i kod brojeva postoji podjela na mrežni i računalni dio. Tako Zavodska mreža ima "ime" zemris.fer.hr dok je ime računala gandalf. Računalima ime ne znači ništa te ona svako ime koje se upiše moraju prevesti u gore spomenuti broj. To prevođenje obavljaju posebni poslužitelji, a aplikacije komuniciraju sa poslužiteljima uz pomoć protokola koji se zove Domain Name Service (skraćeno DNS). Pri pisanju programa postoje posebne funkcije koje to prevođenje obavljaju transparentno pa za korištenje te usluge nije potrebno poznavanje protokola. U imenu se može primjetiti i hijerarhijska strukutra koja je često administrativnog karaktera. Tako u primjeru imena gandalf.zemris.fer.hr čitajući to ime sa desna na lijevo možemo saznati da se to računalo nalazi u Hrvatskoj (.hr), potom na Fakultetu Elektrotehnike i računarstva (fer) te na ZEMRIS-u kao dijelu FER-a (zemris). Na kraju se nalazi ime računala gandalf.
U ovom poglavlju opisani su programi koji se koriste za postavljanje mrežnih parametara na Unix operacijskim sustavima, te za pronalaženje grešaka u radu sa mrežom. No prije samog opisa tih naredbi potrebno je spomenuti par stvari koje mogu puno pripomoći pri korištenju kasnije navedenih programa. To su:
$ man ifconfig
Svako upustvo započinje s tzv. NAME sekcijom u kojoj se nalazi navedeno ime programa koji se opisuje (ali osim programa mogu biti i formati datoteka, itd.) zajedno sa jednom linijom opisa što ta konkretna naredba radi. Na većini Unix-a te linije se indeksiraju te ih je moguće pretraživati. Recimo, ako želimo pronaći sve naredbe koje su vezane uz ethernet tada ćemo pisati:
$ man -k ethernet
a kao rezultat ćemo dobiti sve indeksirane linije koje sadrže riječ ethernet.
Zadatak:
Izvještaj treba započeti sa zaglavljem u kojemu su navedeni ime i prezime studenta, matični broj te datum izrade izvještaja. U svom uvodu izvještaj mora sadržavati podatak o varijanti operacijskog sustava na kojoj je izrađen izvještaj, tj. na kojoj su isprobani svi programi navedeni u daljnjem tekstu.
Kao što je već rečeno u prvom poglavlju svako računalo ima uređaj uz pomoć kojega
komunicira sa ostalim računalima na ethernet-u. Taj uređaj može biti mrežna
kartica, razne vrste modema, itd. Kolektivno se svi oni zovu sučelje
(eng. interface), a uz pomoć programa ifconfig postavljaju se
parametri tom uređaju neophodni za ispravnu komunikaciju, ali se isto tako
mogu i saznati parametri svakog sučelja. Tu je uključeno i virtualno sučelje,
tzv. loopback. Svako sučelje ima kratko ime koje ga identificira, a koje
dosta ovisi o varijanti operacijskog sustava. Uz pomoć tog imena obavljamo
operacije nad sučeljem. Kao primjer možemo uzeti Linux operacijski sustav. Na
njemu mrežne kartice tipa Ethernet imaju oznaku eth<n>, dok
loopback sučelje ima oznaku lo
Osim već navedene Internet adrese, postoje još neki parametri vezani uz sučelja koji su manje bitni za funkcioniranje mreže pa su ovdje ukratko navedeni:
aa:bb:cc:dd:ee:ff
Pri čemu umjesto aa, bb, cc, dd, ee, ff stoji 8 bitni heksadecimalni broj. Tu adresu nije moguće mijenjati.
Zadatak:
U izvještaju je potrebno navesti sljedeće:
- primjer izlaza koji daje program ifconfig te opisati informacije koje su dobivene
- navesti sintaksu programa uz pomoć koje se postavlja adresa sučelja, navesti konkretan primjer postavljanja adrese 172.78.34.5 sučelju eth0 pri čemu je mrežna maska 255.255.255.0
- odrediti način na koji se aktiviraju/deaktiviraju pojedina sučelja
- odrediti broadcast adresu i način na koji se ona formira
Nakon što je podešeno lokalno sučelje računalo ima svoju adresu te je u mogućnost slati i primati poruke. Ipak, nedostaje još jedna vrlo bitna komponenta. Recimo da neka aplikacija želi poslati poruku nekoj drugoj aplikaciji na računalu koje se nalazi na nekoj udaljenoj mreži. Aplikacija zna adresu računala sa kojim želi komunicirati te poruku zajedno sa odredišnom adresom predaje operacijskom sustavu da ju isporuči. Kako operacijski sustav zna gdje se nalazi to računalo, tj. na kojoj mreži, i kako će poslati poruku do tog računala? Rješenje tog problema dosta je kompleksno, pogotovo u vrlo dinamičkim uvijetima kakvi vladaju na Internetu. Za njegovo rješenje izmišljena je čitava klasa algoritama uz pomoć kojih se rješava taj problem. Ta klasa algoritama naziva se algoritmi usmjeravanja i o njima se puno detaljnije priča na predavanjima.
Na svu sreću o usmjeravanju se brinu posebni uređaji koji se nalaze na svim lokalnim mrežama i koji izvršavaju te algoritme te povezuju sve mreže međusobno. Ti uređaji nazivaju se usmjernici (eng. router). Računala obavljaju vrlo primitivna usmjeravanja koja se u većini slučajeva svode na to da oni proslijede paket zajedno sa odredišnom adresom usmjerniku koji potom odlučuje kamo sa njim. Iznimka tog pravila su računala koja se nalaze na lokalnoj mreži. U tom slučaju, koristeći ARP protokol, saznaje se Ethernet adresa dotičnog računala te mu se paket šalje direktno.
Sada se može postaviti pitanje: "Kako računalo zna koje su adrese na lokalnoj mreži, a koje mora proslijediti usmjerniku?". To se rješava uspoređivanjem mrežne adrese lokalne mreže i odredišnog računala. Recimo da računalo, čija adresa je 161.53.65.11/24 želi poslati poruku računalu čija adresa je 161.53.65.24/24. U tom slučaju OS uspoređuje mrežne dijelove koji u oba slučaja iznose 161.53.65. Budući da su jednaki zaključuje da se to računalo nalazi na lokalnoj mreži te uz pomoć ARP protokola saznaje Ethernet adresu tog računala i direktno mu šalje paket.
Na tom principu radi usmjeravanje. Računalo ima popis mreža i za svaku mrežu što treba učiniti. To se zove ruta. Kada ima paket za isporuku uspoređuju se mrežne adrese te kada se ustanovi preklapanje koristi se ta ruta.
Postoji jedna posebna ruta. Njena adresa je 0.0.0.0/0. Ako se uspoređuje bilo koja adresa sa tom uvijek se ustanovljuje poklapanje. Ta adresa ima i ime: default route. Najčešća akcija u tom slučaju je da se taj paket šalje usmjerniku. Na taj način računalo zna samo za računala na vlasitoj mreži, a za sva ostala računala koristi usmjernik.
Zadatak:
U izvještaju je potrebno navesti sljedeće:
- primjer izlaza koji daje program route
- navesti sintaksu programa uz pomoć koje se postavlja default-na ruta, te neka posebna ruta.
- primjetite da kao akcija pojedine rute može biti navedena IP adresa ili ime uređaja. Pokažite te rute u izvještaju te pokušajte objasniti razliku.
- objasniti riječima što radi pojedina ruta (odn. linija) iz ispisa u prvoj točki.
- Jedan od vrlo bitnih opcija naredbe route je opcija n. Objasnite što ta opcija radi te navedite primjer ispisa naredbe route koristeći tu opciju.
Ovo je jedan od najkorisnijih programa budući da se njegovom upotrebom može saznati da li računalo na kojemu ga pokrećemo ima dobro iskonfigurirano sučelje (za što se koristi program ifconfig), dobro iskonfigurirane rute, te da li je neko određeno računalo spojeno na Internet i aktivno.
Zadatak:
Potrebno je navesti sintaksu za upotrebu ovog programa, dati primjer njegova korištenja i to za slučaj kada odredišno računalo radi i jedno za koje ne radi. Nadalje, potrebno je opisati izlaz tog programa, tj. informacije koje se dobiju njegovi korištenjem.
Ovaj program nudi višestruku funkcionalnost, no za nas je interesantno da on može prikazati otvorene pristupe na računalu. Pristup je broj uz pomoć kojega je omogućeno da više aplikacija istovremeno koristi mrežu. Recimo da na jednom računalu želite izvršavati program za WWW i Mail. Kada neki preglednik (browser) poželi vidjeti WWW stranicu sa tog računala on šalje paket sa zahtijevom pri čemu se u paketu nalazi odredišna adresa. Kada ta adresa dođe do odredišnog računala pitanje je kako će OS znati kojoj aplikaciji od više njih koje se izvršavaju je upućen taj paket. Moguća su sljedeća rješenja:
Taj pristup ima više problema od kojih ćemo navesti samo neke. Prvi je da u tom slučaju OS mora imati ugrađenu logiku za prepoznavanje paketa - što se svakako želi izbjeći. Drugi problem je što nekad paket sadrži binarne podatke koji su nevezani sa protokolom. Prema tome ovaj pristup otpada.
Ovaj pristup opet ima problem prvog paketa za koji treba odrediti kome ga isporučiti. A dodatni probem je i u tome što se na odredišnom računalu može koristiti i mail i preglednik pa prema tome opet ne može razlučiti kome poslati koji paket.
Rješenje problema je u korištenju tzv. pristupa (eng. port). Kao što je rečeno pristup je 16-bitni broj. Kada aplikacija šalje poruku ona osim odredišnog računala daje i taj broj. Taj broj je onda povezan sa aplikacijom sa kojom želi komunicirati. Prema tome da bi mogli pristupiti webu na nekom računalu, osim adrese odn. imena tog računala moramo znati i pristup na kojemu čeka web server. Kako se zna taj broj? To je rješeno tako da brojevi manji od 1024 su tzv. dobro poznati pristupi (eng. well-known ports). Popis protokola i pristupa na kojima oni čekaju nalazi se u datoteci /etc/services na svakom računalu. Pregledavajući sadržaj te datoteke primjećuje se da se posebno tretiraju TCP i UDP portovi. To znači da na računalu teoretski nije moguće izvršavati više od 65536*2 aplikacija a u praksi je taj broj i daleko manji.
Zadatak:
U izvještaju je potrebno navesti sljedeće:
- pronaći i navesti na kojim pristupima se nalaze web i mail
- pronaći opcije koje daju otvorene pristupe, tj. pristupe koji se trenutno koriste u komunikaciji, te pristupe koji su pasivni, tj. čeka se da pristigne zahtijev za vezom (eng. listen).
- dati primjere izlaza za obje varijante
- kratko opisati izlaze
Kao što je već rečeno u uvodnom dijelu pripreme svako računalo ima lako pamtljivo ime uz pomoć kojega ga ljudi adresiraju. Ali da bi se ostvarila komunikacija potrebno je to ime transformirati u brojčanu adresu koja se koristi na Internet-u. Tu pretvorbu vrše tzv. DNS poslužitelji kojima se pristupa upotrebom DNS protokola. Programi nslookup te host i dig u novije vrijeme mogu se koristiti kako bi se saznalo adresa nekog računala, ali isto tako i ime računala iz adrese (što ne radi uvijek). Konačno, DNS poslužitelji osim imena i adresa računala sadrže i dosta dodatnih informacija koje su za ovu priliku manje bitne.
Zadatak:
U izvještaju je potrebno navesti sljedeće:
- saznati adresu računala www.yahoo.com
- saznati ime računala čija adresa je 64.28.67.35
- na koji način se programu nslookup određuje kojem DNS serveru će pristupiti.