Deo IP specifikacija definiše opseg privatnih IP adresa. To su oni opsezi koji su predviđeni za korišćenje za mreže u firmama i za kućne mreže i ne čine adresni prostor na internetu (tj. privatne adrese NE postoje na Internetu*). Za korišćenje privatnih IP adresa nije potrebna registracija kod Internet autoriteta (za razliku od javnih IP adresa). Njihov opseg je poprilično veliki te je (skoro) nemoguće ostati "kratak" sa privatnim IP adresama. Pošto privatne IP adrese ne postoje na Internetu sledi da routeri na Internetu ne rutiraju saobraćaj na ove adrese - što, praktično, znači da je nemoguće da uljez sa Interneta pristupi privatnoj IP adresi u nekoj korporativnoj/kućnoj mreži.
Opsezi privatnih IP adresa:
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
Da bi bilo koji kompjuter unutar privatne mreže uopšte komunicirao sa Internetom, mora imati unikatnu, registrovanu (pri Internet autoritetima) javnu IP adresu. Network Address Translation (ili NAT skraćeno) je jednostavan način kombinovanja privatnih IP adresa sa Internetom.
PRIMER:
Recimo da imamo kompjuer "A", sa IP adresom 192.168.0.1 (jedna od privatnih IP adresa koja je slobodna za upotrebu). Zatim, imamo router "R" koji je povezan sa internetom sa IP adresom 87.116.15.14 (totalno nasumice izabrana javna IP adresa od strane mene :) ) i koji je konfigurisan za NAT nad kompjuterom "A". Kompjuter "A" želi da uspostavi web konekciju sa serverom "ES" (www.elitesecurity.org) čija je adresa 217.26.67.165. Što se tiče kompjuter "A", za njega je "R" samo router. "A" ne zna za sposobnost "R" da NAT-uje. "A" samo zna da hoće da pošanje paket "ES"-u. Tada Web Browser od kompjutera "A" prenese network layer-u da napravi konekciju sa 217.26.67.165 na portu 80. Network layer treba da napravi IP paket; njegove ključne komponente su:
- Source address: 192.168.0.1 (kompjuter "A" koji šalje zahtev)
- Destination address: 217.26.67.165 (www.elitesecurity.org)
- Source port: 4444 (Nasumice izabran slobodan source port na "A")
- Destination port: 80 (port za HTTP)
Sada, network layer forwarduje (prosleđuje) paket na svoj default gateway - koji je u stvari router "R". Očekuje da primi reply paket gde će destination port biti 4444 - isti kao i source port sa kog je poslat zahtev.
Router "R" radi sledeće. Pre svega, on zameni "source address" sa svojom IP adresom (87.116.15.14). Dalje, izabere novi slobodan source port (recimo 5555) i te vrednosti ubaci u paket koji treba da se pošalje na "ES". Onda zabeleži sve vrednosti (i stare i nove) u lokalnoj lookup tabeli.
Paket sada izgleda ovako:
- Source address: 87.116.15.14 (sada je ovo adresa "R")
- Destination address: 217.26.67.165 (isto www.elitesecurity.org)
- Source port: 5555 (Nasumice izabran slobodan source port na "R")
- Destination port: 80 (port za HTTP)
Paket je poslat na Internet na prosleđivanje do "ES". Kada "ES" pošalje odgovor, on jednostavno permutuje source i destination vrednosti.
Paket koji šalje "ES" kao odgovor:
- Source address: 217.26.67.165
- Destination address: 87.116.15.14
- Source port: 80
- Destination port: 5555
Ovaj paket je poslat Internetom, i s obzirom da mu je destination address 87.116.15.14, naš router "R" će ga primiti. Sada "R"-u ostaje da taj paket prosledi nazad do "A" (jer sve je počelo od "A" koji je taj zahtev za "ES" i uputio).
Dakle, "R" vidi da ima paket od 217.26.67.165 ("ES"), koji sadrži njegovu adresu (87.116.15.14) sa source portom 80 i destination portom 5555. "R" zna da treba nešto da uradi ako u njegovoj lokalnoj lookup tabeli postoji:
* Unos gde se destination address poklapa sa source address paketa
* Unos u tabeli gde se source port poklapa sa destination portom paketa
* Unos u tabeli gde se destination port poklapa sa source portom paketa
U našem slučaju, "R" vidi da postoji poklapanje i da u tabeli postoji da je originalna source adresa 192.168.0.1 i da je originalni source port 4444. Tada "R" napravi par izmena u paketu:
- Destination address je promenjena iz 87.116.15.14 u 192.168.0.1.
- Destination port je promenjen iz 5555 u 4444.
Paket je sada odaslat u lokalnu mrežu sa parametrima:
- Source address: 217.26.67.165
- Destination address: 192.168.0.1
- Source port: 80
- Destination port: 4444
Kompjuter "A" čeka komunikaciju na portu 4444 (čeka još od samog početka - otkad je poslao zahtev za "ES"). Kada paket stigne, "A" ga prihvati kao deo reply-a od "ES" Web servera i to je to :)
*Ima ljudi koji se ne bi složili sa ovom rečenicom (i u pravu su), ali imajte na umu da je ovo pisano sa najjednostavnijeg mogućeg stanovišta.
Ukoliko postoji neka nelogičnost ili greška u ovom postu, molim vas da me obavestite. Moguće je da sam prevideo nešto.
[Ovu poruku je menjao AleksandarNS dana 19.01.2006. u 21:01 GMT+1]
[Ovu poruku je menjao Milan Andjelkovic dana 04.05.2006. u 21:33 GMT+1]