Fragmentiranje paketa
Neke mreže imaju ograničenje na veličinu paketa. Maksimalna veličina paketa definirana je parametrom koji se zove MTU (Maximum Transmission Unit). MTU je zadan na podatkovnom sloju modela OSI i to se ograničenje prenosi na mrežni sloj. Ako je paket veći od dopuštene veličine, mora se fragmentirati na manje pakete.
Npr. usmjernik R1 šalje na mrežu okvire veličine 1500 okteta što je definirano njegovom MTU vrijednošću. Ti okviri dolaze na usmjernik R2 te se moraju proslijediti prema usmjerniku R3, no veza između usmjernika R2 i R3 dopušta trostruko manje okvire. MTU je ovdje tek 500 okteta. Jedino rješenje koje R2 ima na raspolaganju jest fragmentirati paket, odnosno razdijeliti ga na manje dijelove kako bi zadovoljio MTU veličinu mreže na koju te fragmente mora poslati.
Svaki fragment dobija zasebno IP zaglavlje. Svi fragmenti nastali iz istog paketa dobijaju jednak identifikacijski broj zapisan u polju identifikacije unutar IP zaglavlja. Ova se identifikacija upotrebljava kako ne bi došlo do mješanja fragmenata nastalih iz različitih paketa. Polje oznake fragmenta (Fragment Offset) upotrebljava se za ponovno slaganje fragmenata u paket, a uz pomoć MF zastavice identificira se zadni fragment paketa.
Fragmentacija je nepoželjna zbog:
– ako jedan fragment paketa bude zbog bilo kojih razloga uništen, mora biti ponovno poslan cijeli nefragmentirani paket
– fragmentiranje zahtjeva dodatno procesno vrijeme usmjernika
4.5. ICMP (Internet Control Message Protocol)
Zadaće protokola ICMP
Protokol IP pokušava što je moguće brže proslijediti paket od ishodišta do odredišta. Da bi bio što brži, nema ugrađene kontrolne sustave provjere je li podatak stigao na odredište, dakle nema ugrađen sustav kontrolnih poruka i poruka grešaka pri prijenosu.
Taj posao obavlja protokol ICMP, pa se zato može smatrati potprotokolom protokola IP. Posao protokola ICMP je slanje kontrolnih poruka i poruka o pogreškama. Zbog toga se često rabi u dijagnostičke svrhe. On ne ispravlja pogreške, već samo šalje poruke o njima. ICMP poruke šalju se ishodišnom uređaju enkapsulirane u IP zaglavlje.
Zbog toga što su ICMP poruke enkapsulirane u IP zaglavlje, može doći do pogreške u prijenosu paketa s ICMP porukom kao i svakog drugog paketa. Kako ne bi ICMP poruke javljale pogreške o slanju ICMP poruka i da ne bi došlo do možebitnog zagušenja porukama, pogreške pri prijenosu ICMP poruka ne javljaju se novim ICMP porukama. To otvara mogućnost da neke pogreške pri prijenosu paketa nikada ne budu dojavljene.
Zaglavlje ICMP poruke:
Tip (8 bitova) – tip ICMP poruke
Kod (8 bitova) – dodatna specifikacija ICMP poruke
Provjera ispravnosti prijenosa (16 bitova) – polje za provjeru pogrešaka
Ostale informacije – primjerice kod Echo Reply poruke upotrebljava se za ID vrijednost i redni broj paketa.
Tipovi ICMP poruka:
poruke greške (Destination Unreachable, Time Exceeded)
poruke zahtjeva i odgovora (Echo Request/Echo Reply, Source Quench, Timestamp Request/Timestamp Reply)
Destionation unreachable – uređaj A šalje poruke za uređaj u mreži Z. Paket stiže do usmjernika koji u svojoj usmjerničkoj tablici nema zapisan put do mreže Z i ne zna kamo poslati paket. U tom se slučaju protokol IP na usmjerniku koristi protokolom ICMP za slanje poruke uređaju koji je poslao paket da je mreža Z nedostupna. Poruka da je mreža nedostupna može se poslati i ako je potrebna fragmentacija paketa na usmjerniku, a paket ne dopušta fragmentaciju (kod=4).
Time exceeded – poruka koja obavještava ishodišni uređaj da je TTL parametar u zaglavlju IP paketa sveden na vrijednost 0 (TTL se pri svakom prolazu kroz usmjernik smanji za 1). Ako poprimi vrijednost 0, usmjernik uništava paket i šalje ICMP poruku na ishodišnu adresu.
Echo request/Echo reply – dva specifična ICMP tipa koja se upotrebljavaju u naredbama ping i traceroute. Ping je naredba kojom se ispituje logička povezanost mrežnih uređaja. Naredbom Ping šalje se ICMP poruka Echo request kojom se traži da se uređaj na navedenoj IP adresi javi. Ako povezanost između uređaja postoji te su ispravno konfigurirani za rad na protokolu TCP/IP, pozivani će uređaj odgovoriti sa porukom Echo reply.
Source quench – poruke kojima se sprečava zagušenje u mreži. Primjer mogućeg zagušenja je povezanost brze LAN veze i spore WAN veze. Ako je mnogo računala u lokalnoj mreži spojeno brzim vezama i većina želi istodobno izaći iz mreže preko lokalnog usmjernika koji je spojen na sporu WAN liniju koja ne može procesuriati sve pridošle pakete, da ne bi došlo do gubljenja paketa, usmjernik šalje ICMP source quench poruku uređajima u LAN mreži neka uspore slanje paketa da ne bi došlo do zagušenja (tip 4).
Timestamp Request i Reply – poruke pomoću kojih jedan uređaj može tražiti trenutačno vrijeme od udaljenog uređaja. Udaljeni uređaj koristi se ICMP timestamp reply porukom da bi odgovorio na zahtjev.
Naredba ping (Packet Internet Grouper)
Osnovni alat za provjeru postojanja veze između dva uređaja u mreži i rješavanje problema ako s vezom nešto nije u redu. Naredba Ping šalje ICMP poruke – echo request do odredišnog uređaja. Ako je veza ispravna, odredišni će uređaj primiti ICMP poruke i na njih odgovoriti porukom echo response. Ping paket obično sadržava 32 ili 64 okteta podataka. Ako uređaj koji šalje zahtjev primi odgovor u određenom vremenu, veza između dva uređaja je ispravna. To znači da su svi mrežni uređaji između ishodišnog i odredišnog uređaja ispravni i da su ispravno konfigurirani.
Značajke ping paketa su:
- svakom se paketu dodjeljuje broj te se tako može doznati koji se paket vratio ili je izgubljen,
- svakom se paketu dodaje vremenska oznaka (timestamp) pomoću koje se može izračunati koliko je vremena trebalo paketu da se vrati (RTT – round trip time).
Osnovna sintaksa naredbe ping je ping <ip adresa>. Upotrebljavaju se i dodatne opcije koje variraju ovisno o operacijskom sustavu. Na slici su prikazani slučajevi korištenja naredbe ping ako veza između dva uređaja u mreži nije ispravna (poslani paketi se nisu vratili u predviđenom vremenu), te za slučaj ispravne veze:
bytes=32 znači da su poslana i vratila se četiri paketa dužine 32 okteta
Time pokazuje vrijeme koje je bilo potrebno da ICMP paketi dođu do odredišta i da se vrate. To je zapravo vrijeme odziva koje se naziva RTT (Round Trip Time)
TTL je parametar koji određuje vrijeme života paketa odnosno određuje kroz koliko mreža (usmjernika) može paket proći prije nego što će biti uništen. TTL je zaštita od paketa koji zbog raznih razloga počinju beskonačno kružiti mrežom i ne mogu naći odredište. Da takvi paketi ne bi smetali u mreži, svaki paket ima vrijeme života u kojemu mora stići do cilja.
Na kraju izvještaja je statistika koja nam govori koliko je paketa poslano i koliko se vratilo, najkraće i najduže vrijeme puta paketa do odredišta i nazad te ukupno srednje vrijeme.
Naredba traceroute
Traceroute naredbom ili njezinom varijacijom, ovisno o operativnom sustavu, dobije se informacija o čvorovima kroz koje paket prolazi od ishodišta do odredišta. Upotrebljava iste tipove ICMP paketa kao i naredba ping, samo na nešto drugačiji način.
Tracerout naredbom šalje se niz od tri ICMP paketa koji imaju IP adresu odredišnog uređaja. Prvo se šalje niz ICMP paketa s vrijednošću TTL parametra 1. Prvi usmjernik na koji ICMP paket dođe smanjit će TTL vrijednost za 1. Budući da će TTL vrijednost postati nula, paket će biti uništen i bit će vraćena ICMP poruka pogreške. Slijedeći će niz paketa imati postavljenu TTL vrijednost u 2. U ovom će slučaju TTL vrijednost doći na nulu na drugom usmjerniku. Drugi će usmjernik također uništiti paket i vratiti poruku pogreške. Ovaj se proces nastavlja (ICMP paketi šalju se s inkrementiranjem TTL parametara) sve dok paket ne stigne na odredište i pošalje ICMP poruku. Na taj se način dobiju poruke od svih usmjernika kroz koje paket prolazi do odredišta.
Traceroute se koristi ICMP porukama za stvaranje popisa uređaja kroz koje paketi prolaze do odredišta. Tracerout šalje tri puta uzastopno ICMP pakete do svakog usmjernika na putu do odredišnog čvora i daje informaciju o RTT-u, odnosno o vremenu odziva za svakog od njih.
Naredba tracert korisna je kod rješavanja problema u mreži jer se pomoću nje može utvrditi na kojem je dijelu mreže (usmjerniku) pukla veza i gdje treba tražiti rješenje problema.
Osnovna sintaksa naredbe: tracert <ip adresa>
ICMP paketi s EchoRequest/Reply porukama pomoću alata za praćenje podataka
Kako izračunati mrežnu i broadcast adresu
4.6. ARP (Address Resolution Protocol)
Da bi računalo poslalo Ethernet okvir prema odredištu, prvo mora saznati fizičku adresu mrežne kartice odredišnog uređaja. Računalo zna odredišnu IP adresu, ali to je logička adresa uređaja na mrežnom sloju. Kako bismo saznali fizičku adresu uređaja (MAC adresa) kojemu želimo proslijediti okvir na temelju logičke adrese (IP adresa), pomaže na protokol koji se naziva ARP.
Proces komunikacije odvija se tako što računalo kada sazna IP adresu odredišta, na mrežu šalje ARP zahtjev (ARP Request). Ovaj je zahtjev sastavni dio protokola ARP i doslovno znači “Neka mi se javi računalo s IP adresom …. i dostavi mi svoju MAC adresu.” Računalo s IP adresom navedenom u ARP zahtjevu šalje kao ARP odgovor (ARP Reply) svoju MAC adresu koju potom računalo koje je slalo ARP zahtjev zapisuje u Ethernet okvir te ga prosljeđuje na mrežu.
ARP poruke su broadcast poruke što znači da ih primaju sva računala na mrežnom segmentu. Ove poruke ne prelaze usmjernik. Ako je komunikacija namijenjena računalu izvan lokalne mreže, računalo će morati proslijediti paket svom standardnom izlazu (Default Gateway) i samim time slati ARP zahtjev s fizičkom adresom standardnog izlaza.
Kada prime ARP odgovor, računala rezultat zapisuju u privremenu memoriju (ARP Cache) te u slučaju da moraju ponovno slati okvir istom računalu, MAC adresu odredišta očitavaju iz memorije i ne šalju ARP zahtjev.
Ethernet jednako definira broadcast fizičku adresu koja je namijenjena za slučajeve kada sva računala u lokalnoj mreži moraju primiti okvir. Ova je adresa zapisana heksadecimalno ffff.ffff.ffff.ffff.
ARP poruka
Ako računalo 1 želi poslati podatke računalu 2 koje se nalazi na istom mrežnom segmentu logičke mreže, prije slanja podataka mrežna kartica računala 1 mora enkapsulirati paket u okvir i poslati ga na medij za prijenos podataka. Da bi okvir bio ispravno popunjen, potrebno je upisati odredišnu fizičku adresu (MAC adresu).
Računalo 1 zna samo IP adresu računala 2. IP adresa je logička adresa i ona nije dovoljna za pronalaženje mrežne kartice računala 2. Posao protokola ARP je saznati fizičku adresu na temelju logičke adrese. Računalo prvo potraži IP adresu u ARP spremniku (ARP Cache) i ako je nađe, pročita MAC adresu i šalje okvir prema odredištu.
Ako se IP adresa ne nalazi u ARP spremniku, protokol ARP šalje na mrežni segment okvir s broadcast upitom (ff-ff-ff-ff-ff-ff) u kojemu traži da mu računalo koje ima određenu IP adresu pošalje svoju MAC adresu. Računalo 2 zna da je riječ o ARP upitu po broju u polju tip protokola u Ethernet zaglavlju.
Kada računalo 2 pošalje svoju MAC adresu računalu 1, tada računalo 1 može poslati paket enkapsuliran u okvir s odredišnom MAC adresom računala 2. Tip u Ethernet zaglavlju sada je promijenjen. IP adresa i pripadajuća MAC adresa privremeno se pohranjuju u ARP spremnik da se za slijedeći paket s istom odredišnom IP adresom ne bi morao ponovo slati ARP zahtjev. ARP zahtjev šalje se samo ako IP adrese nema u ARP spremniku.