Q: Podela IP adresa na manje mreze (subnetting)
A: #1/2
Da bi se fundamentalno razumeo subnetting, potrebno je poznavati osnove IP adresiranja. Za to je najbolje konsultovati RFC791 --
ftp://ftp.ripe.net/rfc/rfc791.txt.
DEO #1: (deo #2 u sledecoj poruci)
Klasne mreze i namena netmaski
Originalni dizajn IP adresa prepoznaje nekoliko razlicitih klasa IP adresa. Ove klase razlikuju se kako po svojoj velicini (A, B, C), tako i po svojoj nameni (D, E). Za potrebe subnettinga, potrebano je razumeti razlike u velicini. Dakle, necemo se baviti drugim razlikama izmedju IP adresa.
Osnovne klase IP adresa su:
A: Osnovna maska: 255.0.0.0 (8 bita), opseg: 1.0.0.0 do 126.0.0.0, broj mreza: 2
7 - 2
B: Osnovna maska: 255.255.0.0 (16 bita), opseg: 128.1.0.0 do 191.254.0.0, broj mreza: 2
14 - 2
C: Osnovna maska: 255.255.255.0 (24 bita), opseg: 191.0.1.0 do 223.255.254.0, broj mreza: 2
21 - 2
Prva stvar koju se covek zapita kad vidi netmasku je: "cemu ovo zapravo sluzi?". Da bi se odgovorilo na ovo pitanje, problem se mora sagledati van konteksta samih IP adresa. Poenta IP adresiranja je da se omoguci komunikacija izmedju dva uredjaja na (IP - Internet) mrezi. Da bi ta dva uredjaja mogla medjusobno da komuniciraju, moraju ne samo da poznaju adresu onog drugog, vec da znaju putanju (rutu - route) do odredista. Primer ispod je jednostavan:
Code:
[A]---[B]
Racunar A je direktno vezan sa racunarom B. Problem sa znanjem putanje gotovo da ne postoji. Medjutim, stvari u realnosti nisu tako jednostavne:
Code:
[A]---[v]---[w]---[x]---[B]
| X |
[y]---[z]
U primeru iznad, ne samo da A nema direktnu vezu sa B, vec postoji vise od nekoliko mogucih putanja od A do B. Svaka od imenovanih tacaka na dijagramu (X je oznaka za vezu izmedju w-z, y-x, prim. aut.) ima najmanje po jednu IP adresu. Da bi podaci od A stigli do B, da li A mora da zna punu putanju do B ili je dovoljno da zna putanju do [v]? U konkretnom slucaju, problem je jednostavan. Znatno kompleksniji problem se predstavlja pred, recimo [v]. Gde ce on da posalje paket? Iako bi ocigledno bilo da je odrediste [w], to zavisi od mnogo faktora. Da se ovo ne bi pretvorilo u veliko razmatranje o rutiranju, pretpostavimo da je putanja nebitna. Pogledajmo primer ispod:
Code:
[A]---[v]---[w]---[x]---+---[B]
| X | |
[y]---[z] +---[C]
|
+---[D]
|
...
Dakle, iza [x] imamo ne samo B, vec C, D, E, F... Ako uzmemo u obzir da je moguci broj IP adresa preko 2000000000 i da su sve 32bitne, ako bi svaki uredjaj na mrezi znao putanju do svih adresa, dolazimo do problema da uredjaji moraju da imaju stravicno mnogo memorije da bi imali sve te informacije. Posebno sto pored same adrese moraju imati i podatke o putanji. Kako resiti ovaj problem?
Odgovor je netmaskama. Netmaske su nacin da se na jednostavan nacin referencira vise IP adresa. Kako netmaske funkcionisu? Pogledajmo primer jedne IP adrese:
212.54.211.1
Predstavljena binarno, ova adresa je: 11010100.00110110.11010011.00000001
Predpostavimo da je to IP adresa naseg racunara [B] u gornjem primeru. Neka su [C], [D] ... svi uvecani za 1. Dakle, imamo:
B: 212.54.211.1
C: 212.54.211.2
D: 212.54.211.3
...
Z: 212.54.211.254
Kako je ova IP adresa iz klase C (vidi tabelu sa klasama iznad), osnovna maska je: 255.255.255.0. Maska predstavljena binarno je:
11111111.11111111.11111111.00000000
Ako uradimo logicko "I" adrese B i maske:
Code:
11010100.00110110.11010011.00000001 (212.54.211.1)
11111111.11111111.11111111.00000000 (255.255.255.0)
-----------------------------------
11010100.00110110.11010011.00000000 (212.54.211.0)
Ponovimo isto i za C:
Code:
11010100.00110110.11010011.00000010 (212.54.211.2)
11111111.11111111.11111111.00000000 (255.255.255.0)
-----------------------------------
11010100.00110110.11010011.00000000 (212.54.211.0)
ili pak Z:
Code:
11010100.00110110.11010011.11111110 (212.54.211.254)
11111111.11111111.11111111.00000000 (255.255.255.0)
-----------------------------------
11010100.00110110.11010011.00000000 (212.54.211.0)
U sva tri slucaja, dobijamo isti rezultat! Dati rezultat je najveca zajednicka adresa za sve racunare od A-Z. Ova adresa se zove "network" adresa. Dakle, u primeru nase mreze iznad, racunar A (kao i svi ostali uredjaji na putanji) ne mora da zna putanju do svih racunara B-Z, vec samo do mrezne adrese svih njih.
Network adresa je jedna od dve specijalne adrese u IP svetu. Druga specijalna adresa je tzv. "broadcast" adresa. Za razliku od mrezne adrese koja ima sve binarne 0 na kraju (host polje IP adrese), broadcast adresa ima sve binarne 1 u host polju. Dakle, broadcast adresa za nas primer je 212.54.211.255. Namena broadcast adrese prevazilazi nameru ove poruke.
Pogledom na masku iznad vidimo da njom "pokrivamo" 256 adresa. Sta ukoliko nasa mreza ima manje racunara? Ovde dolazimo do osnovnog problema kojim se ova poruka bavi - subnettingom. Subnetting (neki nakaradan prevod na nas jezik bi mogao da bude podmrezavanje) je proces kojim se iz default "host polja" pozajmljuje odredjeni broj bitova i dodaje masci, kako bi se mreza podelila na manje funkcionalne (administrativne) celine.
Recimo da se u nasem primeru iznad, krajnja mreza sastoji od pedeset racunara sa adresama 212.54.211.1 - 212.54.211.50. U tom slucaju, preko 200 adresa sa default maskom bi bilo neupotrebljeno. Ovaj problem se moze resiti tako sto bi se mreza podelila u subnete.
Najmanji subnet koji moze da opsluzi 50 racunara je od 64 adrese (2
6). Iznad sam spomenuo da je subnetting proces pozajmljivanja bitova iz host polja i dodavanja masci. Dakle, da bismo imali subnet od 64 adrese, nama je potrebno 6 umesto 8 bitova za host. Dakle, masci treba dodati 2 bita.
Pogledajmo kako to izgleda.
Network adresa:
212.54.211.0
11010100.00110110.11010011.{00}000000 (212.54.211.0)
11111111.11111111.11111111.{11}000000 (255.255.255.192)
Sa {} su oznaceni pozajmljeni bitovi. Ovo polje bitova se naziva "subnet polje".
Da bi nasa mreza ispravno funkcionisala, svaki racunar na mrezi je potrebno da ima konfigurisanu netmasku iznad. Promena netmaske sa default maske nam stvara jos jedan problem. Broadcast adresa vise nije ista! Da podsetim, broadcast adresa u host polju ima sve binarne 1. Pozajmljivanjem bitova za subnet polje, host polje je sad 6 bitova. Dakle, broadcast adresa je:
11010100.00110110.11010011.{00}111111 (212.54.211.63)
Uz malo srece ovo je do sada jasno. Sad sledi zaplet. Po klasnim pravilima subnettinga, ovaj primer iznad je
NEISPRAVAN! Ovo je veoma specifican problem vezan za rutiranje. Naime, network adresa naseg subneta (212.54.211.0) je ista kao i adresa C klase 212.54.211.0. Ovo nije dozvoljena situacija. Jos jedna nedozvoljena situacija je pravljenje subneta koji u sebi sadrzi default broadcast adresu mreze (212.54.211.255). Ovo treba uzeti u obzir kao aksiom za klasne mreze! (offtopic: ako su se korisnici Cisco rutera zapitali zasto im ne radi defualt ruta, a problem se resi sa
ip classless, objasnjenje pocinje od ovog aksioma).
Veoma cesto prakticno pitanje je, kako za datu adresu i netmasku odrediti koje su network i broadcast adresa. Ovaj problem cu prvo da objasnim binarno, a onda da otkrijem trik za veoma brzo racunanje bez konverzije u binarni sistem (na kraju drugog dela koji sledi u drugoj poruci - sutra).
Primer:
174.211.141.177
255.255.224.0
10101110.11010011.10001101.10110001 (174.211.141.177)
11111111.11111111.11100000.00000000 (255.255.224.0)
Logickim "I" dobijamo adresu mreze:
10101110.11010011.10000000.00000000 (174.211.128.0)
11111111.11111111.11100000.00000000 (255.255.224.0)
Ako u host polje (sva polja koja su u netmasci 0) stavimo sve 1, dobijamo broadcast adresu:
10101110.11010011.10011111.11111111 (174.211.159.255)
[nastavak sledi]
Marko.