Pripremna vježba - seminar

1. Uvod

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:.

2. Spajanje računala na mrežu

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.

3. Osnove Internet-a

Internet je spoj mnoštva lokalnih mreža i ovisno o kakvom načinu spajanja se radi, te koje lokalne mreže su spojene, možemo razgraničiti tri pojma:

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.

3.1. Adresiranje na internetu

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.

Mrežne naredbe na Unix operacijskom sustavu

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:

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.

ifconfig

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. Na mjesto slova n stavlja se redni broj sučelja, pa tako ako imamo dvije ethernet kartice jedna će imati oznaku eth0, dok će druga imati oznaku eth1.

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:

Zadatak:

U izvještaju je potrebno navesti sljedeće:

route

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:

ping

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.

netstat

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:

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:

nslookup/host/dig

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: