Poglavlje 4 - Osnove IPv4 adresiranja i rutiranja

  • TCP/IP koristi IPv4 i IPv6 adrese za rutiranje.
  • Oba tipa ovih adresa imaju iste funkcije, ali sa malo drugacijim detaljima.
  • IP se fokusira da dostavljanje podataka u formi IP paketa, od izvornog hosta do destinacijskog hosta.
  • IP se oslanja na nize slojeve TCP/IP modela da bi dostavio te podatke. 
  • IP se ne brine o fizickom dostavljanju paketa i pretvaranju podataka u elektricne signale, vec se brine o logickom prenosu podataka u sloju ispod njega (data link layer)
  • Protokoli za rutiranje su mozak svih rutera i tjeraju ih da uce informacije koje oni trebaju kako bi vrsili rutiranje paketa.
  • Ruteri i hostovi rade zajedno kako bi izvrsili IP rutiranje paketa.
  • Svaki operativni sistem bilo kojeg hosta ima TCP/IP software koji implementira TCP/IP i omogucava prenos podataka standardizovano u cijelom svijetu. Hostovi koriste taj software da bi znali gdje poslati pakete, odnosno do prvog gateway rutera. Nakon toga, ruteri odlucuju gdje da posalju te pakete. 
  • Zajedno, hostovi i ruteri rade zajedno kako bi dostavili podatke (pakete) na zadanu destinaciju.
Slika objasnjava kako ruteri odlucuju gdje proslijediti paket.

Kako host razmislja: Posalji paket do najblizeg rutera.
  • Host pocinje analizirati IP adresu 
  • Shvata da IP adresa nije na istom LAN-u
  • Logika mu kaze da posalje taj paket na najblizi gateway na istom LAN-u.
  • Da bi poslao paket do gateway rutera, host kreira novi data-link frame sa MAC adresom rutera i IP adresom PC2 (10.1.1.1)
  • Frame sadrzi header, trailer i data izmedju. Ta data sadrzi network layer informacije kao i destinacijsku IP adresu, tj. IP adresu od hosta 10.1.1.1
Kako razmisljaju R1 i R2: Rutiranje paketa kroz mreze.
  • svaki ruter ima svoju IP tabelu rutiranja
  • svaka tabela ima svoje IP grupe (IP adresa mreze, IP subnet)
  • ruter pogleda u tabelu, shvata da ta IP adresa nije u tabeli, proslijedjuje paket sljedecem ruteru.
  • isti proces se ponavlja kod svakog rutera, sve dok ne pronadje IP adresu koja pripada grupi u njegovoj tabeli.
Kako razmislja R3: Dostavljanje paketa do odredista PC2.
  • ruter 3 dobija paket od R2, otvara ga, gleda u tabeli da li ima takvu IP adresu kako bi znao sta da radi s nje. Nalazi je i shvata da je ta IP adresa povezana sa PC2. 
  • Kreira novi data-link frame gdje stavlja MAC adresu od PC2
Kako network layer rutiranje koristi LAN i WAN:
  • Logika network layer-a unutar hosta ili rutera mora proslijediti paket do data link layer protokola, koji sluze kao veza izmedju data link layer-a i physical layer-a da bi uspjesno poslali pakete.
  • Data link layer dodaje header (zaglavlje) i trailer (nastavak) na originalni paket i tako kreira frame prije nego ga posalje preko physical layer-a
  • Proces rutiranja podrazumijeva proslijedjivanje IP paketa s jednog kraja TCP/IP mreze do drugog, dok data link frame, koji sadrzi MAC adresu, uzima  krace relacije, do uredjaja do uredjaja ali samo unutar jednog LAN-a.
  • Ruteri kreiraju nove data link header-e i trailer-e
  • Novi header-i i trailer-i sadrze nove MAC adrese kako bi se IP paket mogao dostaviti unutar LAN mreze.
  • Ruter odlucuje koju MAC adresu treba da koristi tako sto gleda u Address Resolution (ARP) tabelu.
  • U primjeru iznad, R3 ce pogledati u svoju ARP tabelu kako bi pronasao MAC adresu koja je asocirana as IP pakete, i onda bi ga proslijedio do PC2.
Kako IPv4 adresiranje pomaze rutiranju paketa:
  • IP protokol definise IP adrese koje unikatno identifikuju svaki host ili ruter interface na TCP/IP mrezi.
  • TCP/IP grupise IP adrese tako da su sve IP adrese dio jedne LAN mreze.
  • Te grupe nazivamo subnetima (subnets).
  • Ideja subneta je slicna postanskim brojevima gradovima tj. grupama u kojima zive ljudi tj. IP adrese. Ako imamo jedan veliki dio IP adrese koja moze imati 1000 hostova, taj blok IP adresa bi mogli podijeliti na 10 unikatnih postanskih brojeva tj. subneta koji bi unikatno identifikovali svaki grad tj grupu IP adresa gdje zive hostovi. Tako bi jedan subnet imao unaprijed rezervisan blok IP adresa kako bi se moglo znati da racunari iz tog bloka IP adrese zive u finansijskom odjelu neke firme, dok s druge strane bi imali blok do 20 IP adresa u kojima imamo IP kamere, u trecem bloku bi imali subnet vezan za magacin, marketing, programere, guest room gdje bi smjestili sve random uredjaje koje se povezu u mrezu i sl.

Kako izgleda IPv4 header:
  • header ima 32 bitnu IP adresu (adresu hosta) i 32 bitnu IP adresu (adresu destinacijskog hosta)

Protokoli za rutiranje:
  • oba rutera i hosta moraju znati logiku rutiranja kako bi poslali ili/i primali pakete
  • hostovi moraju znati IP adresu njihovog default gateway-a da bi slali pakete na destinacije van LAN-a.
  • ruteri moraju znati rute da bi mogli proslijedjivati pakete do drugih IP mreza ili IP subneta


Slika iznad, objasnjenje:
  • Primjer iznad objasnjava kako ruteri propagiraju nove rute do drugih rutera
  • R3 ce poslati poruku (routing protocol message) do R2
  • R2 ce nauciti novu rutu za mrezu 168.1.0.0
  • R2 ce poslati poruku (routing protocol message) do R1
  • R1 ce nauciti novu rutu za mrezu 168.1.0.0


IPv4 adresiranje:
  • najbitnija oblast za nauciti (CCENT, CCNA)
  • ako host zeli komunicirati sa TCP/IP uredjajima, on mora imati IP adresu
  • kada uredjaj dobije unikatnu IP adresu, TCP/IP software i hardware koji omogucavaju slanje i primanje podataka, dozvoljavaju tom hostu da salje i prima IP pakete.
  • IP adresa sadrzi 32 bitni broj napisan u dotted decimal notaciji. U prevodu, brojevi su odvojeni tackama.
  • IP adresa sadrzi 32 bitni broj napisan u 4 okteta tj. 4 grupe. Primjer IP adrese bi bio 192.168.1.3 gdje imamo 4 broja dok svaki od tih brojeva je 8 bitova tj. 1 byte. 
  • Svaki byte tj. svaki oktet oznacava jedan dio IP adrese (1 od 4)
  • Svaka IP adresa ima 4 okteta
  • Svaki oktet je podijeljen tackama
  • Jedan oktet je jedan byte
  • Range jednog okteta je 0-255
  • Svaki network interfejs mora imati unikatnu IP adresu unutar LAN mreze.


Pravila IP adresa:
  • Network ID je IP adresa kompletne mreze
  • Sve IP adrese u jednoj mrezi moraju biti u jednom subnetu, tj. izmedju njih ne smije stojati ruter.
  • Sve IP adrese koje imaju izmedju sebe ruter, moraju biti u razlicitim mrezama ili subnetima.

Klase IP adresa: Klasa A, klasa B, klasa C:
  • 32 na drugu daje vise od 4 milijarde kombinacija IP adresa (0.0.0.0, 0.0.0.1...0.0.0.255...0.0.1.0...0.0.1.255...0.1.0.0...0.1.255.255... ...255.255.255.255)
  • Klasa A dobija polovinu IPv4 address prostora (1-126)
  • Klasa B dobija cetvrtinu IPv4 address prostora (128-191)
  • Klasa C dobija osminu IPv4 adress prostora (192-223)
  • Klase A,B,C definisu jednu unicast IP adresu, sto znaci da ta jedna IP adresa unikatno identifikuje uredjaj u mrezi.
  • Klasa D definise multicast adrese koje se koriste za slanje paketa na vise hostova
  • Klasa E definise experimentalne IP adrese koje su u sadasnjosti rezervisane za buducu upotrebu.


Network ID:  
  • Identifikuje mrezu.
  • Network ID je IP adresa koja pocinje sa npr. 10.0.0.0 tako da se zna da je prvi oktet network oktet.
  • Ako znamo koji je network oktet, ostali su host okteti.
  • Network ID je obicna IP adresa rezervisana da bi identifikovala IP mrezu.
  • Network ID se ne moze koristiti kao host IP adresa.
  • Network ID, network number, network address su sinonimi za takvu IP adresu.
  • Pojam classful IP network odnosi se na Klasu A, B ili C mrezu jer je kao takva definisana pravilima klase.

Opis
Klasa
Network ID
Sve adrese koje pocinju sa 8
A
8.0.0.0
Sve adrese koje pocinju sa 149.5
B
149.5.0.0
Sve adrese koje pocinju sa 192.168.3
C
192.168.3.0

Primjer IP adresa Klase A
Klasa
Network ID
Sve adrese koje pocinju sa 8
A
8.0.0.0
Sve adrese koje pocinju sa 14
A
14.0.0.0
Sve adrese koje pocinju sa 18
A
18.0.0.0
Sve adrese koje pocinju sa 125
A
125.0.0.0
Sve adrese koje pocinju sa 126
A
126.0.0.0


Primjer IP adresa Klase B
Klasa
Network ID
Sve adrese koje pocinju sa 128.1
B
128.1.0.0
Sve adrese koje pocinju sa 128.128
B
128.128.0.0
Sve adrese koje pocinju sa 159.13
B
159.13.0.0
Sve adrese koje pocinju sa 173.99
B
173.99.0.0
Sve adrese koje pocinju sa 191.225
B
191.225.0.0

Primjer IP adresa Klase C
Klasa
Network ID
Sve adrese koje pocinju sa 192.168.1
C
192.168.1.0
Sve adrese koje pocinju sa 192.168.200
C
192.168.200.0
Sve adrese koje pocinju sa 199.199.199
C
199.199.199.0
Sve adrese koje pocinju sa 200.1.1
C
200.1.1.0

Klasa
Prvi i zadnji oktet
Validni network IDs
A
1-126
1.0.0.0 - 126.0.0.0
B
128-191
128.0.0.0 - 191.255.0.0
C
192-223
192.0.0.0 - 223.255.255.0

IP subnetovanje:
  • jedna od najbitnijih tema u umrezavanju
  • u subnetovanje spadaju metode podjele IPv4 adress pool-a u grupe koje su manje od prave network IP adrese
  • subnetovanje je dalja podjela A, B ili C klase 
  • subnet je skracenica rijeci subdivided network
  • gdje bi koristili cijele klase mreze, koristimo manje subnete, kako bi sacuvali IP adrese



  • u primjeru iznad, imamo 5 mreza (150.1.0.0, 150.2.0.0, 150.3.0.0, 150.4.0.0, 150.5.0.0) 
  • ovakvih 5 grupa bespotrebno koriste mnogo IP adresa
  • vise logican nacin bi bio da se subnetuje Klasa B
  • na primjer, 150.9.1.0, 150.9.2.0, 150.9.3.0 ... i tako dalje.
  • prilikom subnetovanja, svaki subnet bi dao 254 adrese za 254 hosta i bilo bi vise nego dovoljno.
  • svaki host ili ruter interface ce imati svoju IP adresu
  • IP adresa se ne bira nasumicno, mrezni administrator bira koji range ce koristiti i koju IP adresu. 
  • grupe IP adresa mogu biti Klasa A, B, C ili moze biti subnet


IPv4 rutiranje:

Rutiranje hosta:

Postoje dva nacina gdje host razmislja kako uraditi rutiranje paketa:
1. Ako je destinacijska IP adresa u istom subnetu kao i ja, posalji paket direktno do tog hosta
2. Ako je destinacijska IP adresa van subneta kao i ja, posalji paket do najblizeg gateway rutera. 



    Prvo cemo objasniti proces sa slike kada je host na istom subnetu, a onda kada nije:
    • PC1 zeli poslati IP paket do PC11
    • PC1 pregleda malo u kojem je subnetu, dodje na zakljucak da PC11 sjedi na istom subnetu kao i on.
    • PC1 salje paket direktno do PC11, ignorirajuci gateway ruter.


    U suprotnom, ako nisu na istom subnetu, situacija je sljedeca:
    • PC1 zeli poslati IP paket do PC2
    • PC1 pogleda u kojem je subnetu, dodje do zakljucka da PC2 nije na istom subnetu kao i on.
    • PC1 salje paket do najblizeg gateway rutera, koji ima zadatak da taj paket proslijedi dalje.

      Odluke koje ruter donosi pri rutiranju i njegove IP tabele za rutiranje:
      • kada ruter primi data-link frame adresovan sa MAC adresom tog rutera, ruter ga mora procesuirati.
      • kada takav frame stigne do njega, ruter koristi sljedece logicke radnje kako bi uspjesno proslijedio taj data link frame:
      1. koristi FCS (Frame Check Sequence). Ako je frame imao gresku prilikom transporta, odbaci ga.
      2. ukloni data link header i trailer i pogledaj u IP adresu
      3. uzmi IP adresu i uporedi je sa tabelom rutiranja. 
      4. pronadji rutu koja najbolje odgovara tom paketu
      5. enkapsuliraj (generisi) novi data link frame sa MAC adresom rutera ili host koji treba da dobije paket. (destinacijska IP adresa se nikad ne mijenja, mijenjaju se MAC adrese u frame-u)
      6. proslijedi novi frame na interface.
      Bitno za znati, detaljno objasnjen proces odluke prilikom rutiranja.

      U primjeru iznad:
      • svi ruteri koriste OSPF protokol (za sad, ova informacija nije bitna, fokusiramo se na proces)
      • svi ruteri znaju rute za sve subnete
      • PC2: subnet 150.150.4.0 (ovaj subnet sadrzi sve IP adrese koje pocinju sa 150.150.4.X)
      • PC1 salje IP paket do 150.150.4.10 (PC2)

      Korak 1: PC1 salje paket do default gateway-a.
      • PC1 encapsulira novi IP paket sa destinacijskom IP adresom od PC2 150.150.4.10
      • posto je destinacijska IP adresa na drugom subnetu, PC1 salje paket do gateway-a
      • PC1 enkapsulira network layer IP paket, i stavlja Ethernet frame oko njega
      • taj frame ce sadrzati MAC adresu od gateway R1 rutera
      • PC1 salje frame kroz Ethernet kabel


      Korak 2: R1 procesuira dolazeci frame i proslijedjuje ga do R2.
      • R1 dobija novi frame, pregledava FCS da li je frame ostecen prilikom transporta kroz medijume.
      • R1 otklanja Ethernet header i trailer sa data link frame-a
      • R1 uporedjuje destinacijsku IP adresu (150.150.4.10) sa tabelom rutiranja i pronalazi da ima nacin gdje poslati paket ukoliko je namijenjen za ovaj subnet.
      • posto R1 zna gdje da posalje paket, salje ga na pravi interface (gleda u tabelu)
      • R1 pocinje proces enkapsulacije paketa u frame
      • R1 proslijedjuje paket do Serial0 interface, do R2 (150.150.2.7 sa slike)

      Korak 3: R2 procesuira dolazeci frame i proslijedjuje ga do R3
      • R2 ponavlja identican proces kao i R1 kada primi frame
      • R2 provjerava FCS, i nema gresaka
      • R2 otklanja header i trailer
      • R2 pronalazi rutu za subnet 150.150.4.0 (150.150.4.0-150.150.4.255) 
      • kada gleda u tabelu za rutiranje, shvata da destinacijska IP adresa je na subnetu kojeg ima u tabeli.
      • R2 enkapsulira paket u novi Ethernet header i trailer (frame)
      • R2 salje paket na interface gdje zna da se nalazi taj subnet.
      Korak 4: R3 dobija paket i proslijedjuje ga do hosta. (zadnji korak) 
      • R3 dobija frame, pregledava FCS, nema gresaka
      • R3 otklanja Ethernet header i trailer
      • R3 uporedjuje svoju rutu za subnet 150.150.4.0
      • R3 pronalazi najbolju rutu za taj subnet
      • R3 tabela rutiranja za 150.150.4.0 pokazuje da nema vise hopova do te adrese
      • R3 enkapsulira paket unutar Ethernet header i trailer frame-a sa MAC adresom od PC2
      • R3 proslijedjuje paket do PC2

        IPv4 protokoli rutiranja:
        Ciljevi protokola za rutiranje:
        • da dinamicki nauci i updejtuje tabelu rutiranja sa rutom do svakog subneta unutar mreze.
        • da ako je dostupno vise ruta do jednog subneta, odaberi najbolju
        • da primjeti ako su neke rute u tabeli pogresne, i obrise ih iz tabele
        • ako je ruta izbrisana iz tabele, provjeri da li ima druga ruta preko drugog rutera do tog subneta.
        • da brzo pronadje nove rute i zamijeni ih sa starim 
        • da sprijeci routing loops.
        Kako ruteri uce nove rute jedni od drugih:
        1. Svaki ruter dodaje rute u svoju tabelu rutiranja za svaki subnet koji je direktno povezan na ruter
        2. Svaki protokol za rutiranje govori neighbor ruterima o rutama u svojim tabelama ukljucujuci rute u svojim tabelama
        3. Nakon sto nauce nove rute od neighbor-a, protokol dodaje rutu u tabelu zajedno sa next-hop ruterom.

        Sljedeci primjer prikazuje kako tri rutera zajedno uce o subnetu 150.150.4.0
        Prati sliku i korake od A do F da vidis kako svaki ruter uci novu rutu do 150.150.4.0 subneta
        1. subnet 150.150.4.0 postoji kao subnet povezan na R3 preko E0. U tom subnetu zivi PC2
        2. R3 dodaje connected rutu 150.150.4.0 u svoju tabelu. Ovaj proces se izvrsava i bez protokola.
        3. R3 salje routing update do R2, forsira R2 da nauci o subnetu 150.150.4.0 i kaze, ako hoces da dodjes do ovog subneta, posalji ga meni.
        4. R2 dodaje rutu za subnet 150.150.4.0 u svoju tabelu
        5. R2 salje routing update do R1, forsira R1 da nauci o subnetu 150.150.4.0 i kaze da ako zelis da posaljes paket na ovaj subnet, ja znam kome cu ga proslijediti.
        6. R1 dodaje rutu za subnet 150.150.4.0 u svoju tabelu. Outgoing port za tu rutu kod R1 bi bio Serial0, na taj interface bi poslao paket namijenjen za ovaj subnet.
          Domain Name System DNS: 
          TCP/IP posjeduje nacin da koristi ime (a ne IP adresu) da bi identifikovao druge uredjaje.
          Kada otvorimo web browser i ukucamo www.google.com, racunar ne posalje IP paket sa destinacijom za google.com server
          Naprotiv, racunar salje IP paket do IP adrese koja se koristi za web server za Google. npr. 213.41.52.99
             



          • ruteri tretiraju DNS pakete isto kao i svake druge TCP/IP pakete, rutirajuci ih na osnovu njihove destinacijske adrese
          • ne postoji DNS koji zna sva imena stranica i njihove IP adrese za server, ali informacija se distribuira kroz mnoge DNS servere kroz proces filtracije po top level domenama, subdomenama i sl.
          • DNS serveri u svijetu rade zajedno, proslijedjujuci upite jedni drugima, sve dok server koji zna koja je IP adresa ne rijesi slucaj.


            Address Resolution Protocol ARP: 

            Svaki ruter dekapsulira IP paket, pogleda IP adresu, i enkapsulira ga opet u novi frame
            ruter u procesu iznad, zna sve odakle da krene rutiranje pakete, do IP adrese, ali ne zna MAC adresu koju ce ubaciti u novi frame kako bi ga proslijedio do tog uredjaja.
            ARP je metoda gdje svaki uredjaj na LAN mrezi moze dinamicki nauciti ostale MAC adrese svakog ostalog hosta ili rutera koji ima IP adresu.
            ARP je protokol. Kao takav ima ARP Request, poruku koja jednostavno receno pita ostale uredjaje na mrezi da li je ovo tvoja IP adresa. Ako jeste, odgovori mi.
            ARP takodjer definise i ARP Reply poruku, koja izbacuje IP adresu i MAC adresu uredjaja koji je odgovorio na ARP Request.
            ARP Request poruka je broadcast adresa, dakle, ruter koji trazi MAC adresu uredjaja, poslat ce broadcast adresu svima u mrezi pitajuci ih ko ima ovu IP adresu, posalji mi svoju MAC adresu. Samo onaj ko ima tu IP adresu moze odgovoriti.
            NOTE: Napad koji se koristi za lazno predstavljanje uredjaja naziva se ARP Spoofing. Nadam se da cu u buducnosti pisati vise o tome.



            • hostovi pamte ARP rezultate i drze ih u ARP tabeli
            • host ili ruter koristi ARP protokol s vremena na vrijeme da bi izgradio svoju tabelu.
            • svaki put kada host ili ruter zeli da posalje paket, prvo gleda da li je IP i MAC kombinacija tacna, tek onda kreira paket i salje ga na odrediste.
            • host ili ruter ce uraditi time-out ARP tabele da bi je ocistio, tako da se ARP Request poruke mogu vidjet s vremena na vrijeme u LAN-u gdje uredjaji medjusobno updejtuju informacije jedni o drugim. Pomocu programa Wireshark, mozemo pratiti desavanja sa ARP request i response porukama.

              ICMP Echo i Ping komande:
              • da bi testirali povezanost IP adrese sa ostatkom mreze koristimo ping komandu
              • PING (Packet Internet Groper) koristi ICMP Internet Control Message Protocol
              • ICMP salje ICMP echo request do ostalih IP adresa
              • racunar sa tom IP adresom odgovara sa response porukom tj. salje ICMP echo reply
              • PING testira layer 1, layer 2, i layer 3 OSI modela