Hálózat, IP-címek, NAT, bridge

Számítógép-hálózatok

A számítógép-hálózat a számítógépek egymás közötti kommunikációját valósítja meg.

Alapjában véve két fajtája van: vezetékes (pl.: ethernet hálózatok, LAN) és vezeték nélküli (pl.: WiFi).

IP-címek, netmask

Kezdetben, amikor a gépek egy hálózatba lettek kötve, akkor valamilyen módon azonosítani kellett őket. Erre kitalálták, hogy sorszámozzák az egyes csomópontokat és végpontokat. Így elkezdték az egyes elemekhez következő számokat hozzárendelni: 1, 2, 3, ... Alapvetően a gateway (router) kapta az 1-es sorszámot, majd a hozzá kapcsolódó kliensek 2-től kezdve növekvő sorrendben a többi számot.

Voltak olyan hálózatok, amelyek nagyon sok csomóponttal rendelkeztek, ezért megállapítottak egy maximális "darabszámot" (a 232 = 4 294 967 296), hogy legfeljebb ennyi számot lehessen kiosztani. Amint ebből látszik, a kiosztható címek a 0-től egészen a 4 294 967 295-ig terjednek.

Ezek a számok binárisan tárolva 32 bit hosszúak, tehát 32 darab 0-s vagy 1-es bitet tartalmaznak.

A sorszámok egészen a millióig, s milliárdig terjednek, ezért nehezen olvashatóak az emberek számára. Ennek elkerülése végett kitalálták azt, hogy csoportosítják a 32 bitet, így alkotnak könnyebben olvasható azonosítókat. Fontos megjegyezni, hogy a kiosztható címek darabszáma nem változott! A csoportosítást úgy végezték el, hogy a 32 bitet 4 részre osztották, azaz a címek megjelenítése során az első 8 bit után egy elválasztó karakter jön, majd ezt követi a következő 8 bit, s ismét az elválasztó karakter, stb. Elválasztó karakterként a pontot (.) jelölték ki. Fontos megjegyezni, hogy a számok tárolása elválasztó jelek nélkül történik (egy számként), a pont karakterek beszúrása csak a megjelenítés során alkalmazott, amely könnyed olvashatóságot nyújt az emberek számára, egyéb haszna nincs. A megjelenítés során a ponttal elválasztott biteket decimális számmá alakítják úgy, hogy csak az adott 8 bitet konvertálják 10-es számrendszerbe. Így kapunk 4 darab decimális számot.

Itt olvasható egy példa, hogy a bitek hogyan lettek felosztva, illetve hogyan történik a megjelenítésük:

	
10101100000100001111111000000001    -> 2886794753

10101100.00010000.11111110.00000001 -> 172.16.254.1
	

Látható, hogy ebben a példában a felső, milliós értékű számot nehéz megjegyezni, illetve rögtön ránézésre megállapítani a helyiértékek számát. A pontokkal történő elválasztás viszont áttekinthetőbbé és értelmezhetőbbé teszi e feladatot.

Nos, miután sikerült megalkotniuk a sorszámokat, s azok megjelenítését, nevet adtak neki. Ez a név az Internet Protocol Address, röviden IP-address (magyarul IP-cím) lett. A most bemutatott IP-cím IPv4-es címnek felel meg. Emellett létezik még egy elterjedőben lévő verziója, az IPv6, amely 128 bitből áll. Utóbbira azért volt szükség, mert a világon kioszható IP-címek IPv4 esetében elfogytak, ezért egy új típusát kellett megalkotni.

Miután kialakultak az IP-címek, felmerült az ötlete annak, hogy a címeket csoportosítsák valamilyen módon. Ezt úgy valósították meg, hogy intervallumokat alakítottak ki. Például a 32 bites IP-címeket egyben, decimális számként ábrázolva: 18-56-os címek intervalluma, vagy például ponttal elválasztva: 192.168.100.1-192.168.100.100-ig terjedő címek tartománya.

Ez tök jó ötlet, hogy az IP-címeket ily módon tartományokra osztjuk, így nem kell az egész intervallumot felhasználnunk. Viszont felmerült a kérdés, hogy hogyan lehetne a tartományt (elejétől a végégig) leírni számítógépesen nyelven, azaz bitekkel? Megfigyelték, hogy az IP-címeket bináris számként felírva, majd a legnagyobb helyiértéktől indulva (balról jobbra) a legkisebb felé haladva, az egymást követő biteket lefixálják oly módon, hogy azok nem változhatnak, csak az utánuk következőek, akkor egész egyszerűen alakíthatóak ki az intervallumok. A műveletnél figyelembe kell venni, hogy nem minden esetben a tartomány legelejétől indulunk ki, ezért az IP-címek elejét le kell rögzíteni.

Így alakult ki a netmask, azaz alhálózati maszk. A netmask a következő szabályok szerint épül fel binárisan: két 1-es bit között nem lehet 0-s bit; 0-s bitet csakis 0-s bit követhet; az 1-es bitek kötelezően a legnagyobb helyiértéktől (balról jobbra) a legkisebb felé haladnak; lehetséges olyan eset, hogy egy 1-es bitet 0-s követ, de ez maximálisan egy esetben valósulhat meg.