2017. szeptember 28., csütörtök

TCP/IP



A TCP/IP egy hálózati protokoll. (Transmission Control Protocol/Internet Protocol, magyarul: Átvitel Vezérlési Protokoll/Internet Protokoll) A TCP/IP kezdettől fogva az Internet (és a Linux) protokollja. A modern számítógépes hálózatokban a továbbítandó adatok nem egybefüggő folyamként haladnak egyik géptől a másikig, hanem több különálló adatcsomag (datagram) formájában.

A TCP/IP protokoll két alrendszerének az alábbi feladatai vannak:
TCP - A küldő számítógépen a továbbítandó adathalmaz feldarabolása adatcsomagokra, és az adatcsomagok címkézése. Az adatokat fogadó számítógépen pedig a kapott adatcsomagok összerakása, és így az eredeti adathalmaz előállítása.
IP - Az adatcsomagok irányítása, a kommunikációban résztvevők (gépek) azonosítása.
Ez utóbbi feladat igen összetett és sokrétű. Egy IP alapú hálózat, minden egyes számítógépe (sőt ezen túlmenően minden egyes hálózati interfész pl. hálózati kártya) egyedi azonosítóval rendelkezik (IP cím). Ne felejtsük el, hogy egy PC-ben lehet több hálózati kártya is! Az egyediség, vagyis az, hogy minden PC más és más IP címmel rendelkezik, az összefüggő hálózatokban elengedhetetlen alapkövetelmény.
Ez azt is jelenti, hogy egy "kifelé" zárt hálózatban (pl. vállalati, vagy otthoni intranet) használhatóak olyan IP címek, amelyek egyébként az interneten szerepelnek, hiszen ütközés nem lehetséges, mivel a hálózat nem kapcsolódik az internethez.
Nagyon fontos!!! Az IP címét egy hálózati kártya nem a gyártásakor kapja meg, és így az nem egy végleges valami. Az IP címet az adott hálózat üzemeltetői határozzák meg, természetesen egy rendszer szerint, bizonyos kritériumok figyelembevételével. A kifelé zárt rendszernél, - hálózatnál - az egyetlen dolog amire figyelni kell, hogy a hálózatben ne legyen két azonos IP cím, tehát az egyediség a fontos. Ha azonban a gépünk, illetve a hálózatunk kifelé nyitott, vagyis kapcsolódik egy másik hálózathoz, (pl. az Internethez) akkor nagyobbrészt az Internet szolgáltatótól (ISP=Internet Service Provider) függ, hogy milyen IP címeket használhatunk.

Nézzük meg azt az esetet, amikor pl. egy PC-ben lévő hálózati kártyának mindig ugyanaz az IP címe, (fixre van állítva)! Ebben az esetben úgynevezett: "statikus IP cím"-ről beszélünk. Ha az IP cím csak akkor derül ki, amikor az Internet kiszolgáló szerverhez kapcsolódik a PC, vagyis a szolgáltató osztja ki az ő IP tartományából véletlenszerűen, akkor már "dinamikus IP cím"-ról van szó.

Az IP cím felépítése, jellemzői

Az IP cím egy 4 byte-ból, azaz 32 bit-ből álló számsorozat. Leggyakrabban pontokkal elválasztott decimális formában találkozhatunk vele: xxx.xxx.xxx.xxx alakban. Mind a négy tag, 0-255 közötti értéket vehet fel. Példa egy lehetséges IP címre: 192.168.1.215

Egy rendkívül fontos kérdés az, hogy egy olyan hálózatban, amelyben több ún. "alhálózat" van fizikailag összekötve, milyen IP címeket alkalmazhatunk. Vagyis mi az alhálózat és a hálózat közötti különbség.
Tételezzük fel, hogy otthon a lakásban van egy egymással fizikailag összekötött számítógép rendszer. Mindenkinek külön gépe van, és az összekötések révén, a 4 PC kommunikálni tud egymással. Mondjuk a szomszédban, és a ház még néhány lakásában is van egy-egy ilyen rendszer. Ezek mindegyike egy önálló számítógépes hálózat. Ha felmerül az igény, hogy az egyes lakásokat is kössük össze egymással, akkor ez kétféleképpen tehető meg:

Átkábelezzük az egész épületet, és csinálunk egy nagyobb, (minden PC-t magába foglaló) új hálózatot. (Ez elég bonyolult és valljuk be, hülye megoldás.)
Meghagyjuk a már meglévő lakásonkénti hálózatokat, és a lakásokat fűzzük fel egy új hálózattá. Ebben a pillanatban már a lakásokban lévő összekötött PC-k a házban kialakított hálózat alhálózataivá válnak.
Visszatérve az előbbi kérdésre, hogy tudniillik: Milyen IP címeket használhatunk a fizikailag összekötött alhálózatok esetében? Nos ennek a kérdésnek a megválaszolásához szükség van, - az IP címeken kívül - az úgynevezett "hálózati maszk"-ra (netmask). A netmask ugyanúgy néz ki mint egy IP cím, tehát 4 pontokkal elválasztott decimális szám. A hálózati maszk azonban azt mutatja meg, hogy egy adott alhálózaton, az elejétől fogva, hány bitnek kell megegyeznie az IP címben. Ha például az első 24 bitnek kell megegyeznie, akkor az alhálózati maszk a következő lesz:
1111 1111 1111 1111 1111 1111 0000 0000
255 255 255 0
netmaszk
A megismert módon, a fenti netmask helyesen felírva: 255.255.255.0 lesz. Ebből az derül ki, hogy ennek az alhálózatnak 256 tagja lehet. Vagyis ezzel a maszkkal 256 db PC köthető hálózatba. Természetesen ezeknek a gépeknek egyedi IP címei lesznek, de a maszk által meghatározott módon, minden PC-nek az IP címe ugyanazzal a három taggal kezdődik! Tehát ennek a hálózatnak a gépei pl. az alábbi IP címekkel rendelkezhetnek:
192.168.0.1
192.168.0.2
192.168.0.3 ...
192.168.0.255
Látszik, hogy az IP cím két részre osztható. Az egyik része az alhálózat minden gépén ugyanaz, ez tehát a hálózati azonosító.
A másik, a maradék rész az adott alhálózaton belül egy gép (hálózati kártya) egyedi azonosítója. Tehát a 192.168.0.113 IP címnél a 192.168.0 a hálózati azonosító, a gépet az alhálózaton belül pedig a 113 azonosítja.
Ha a hálózati azonosító végén lévő biteket 0-ra írjuk, akkor megkapjuk a az alhálózat címét, ami egyúttal az adott alhálózat legkisebb címe. Példánkban: 192.168.0.0

Az IP címeket, eredetileg három csoportba osztották. (Az IP címek rohamos fogyása miatt ez a rendszer már jelenleg is átalakulóban van. Lásd IPv6!)

"A" osztályú IP cím.
Az "A" osztályú hálózatban, az első byte a hálózati azonosító. A fennmaradó 24 bit azonositja a hálózati interfészeket (PC-ket). Egy "A" osztályú hálózat 224, azaz kb. 16,7 millió(!) tagból állhat.
1111 1111 0000 0000 0000 0000 0000 0000
255 0 0 0
"A" osztályú IP tartomány
Ilyen nagyméretű hálózat kevés létezik. Egy "A" osztályú hálózat az alábbi IP tartományt használja: 1.0.0.0 - 127.255.255.255
"B" osztályú IP cím.
A "B" osztályú hálózatban, az első 2 byte a hálózati azonosító. A fennmaradó 16 bit azonosítja a hálózati interfészeket. Egy "B" osztályú hálózat 216 azaz 65536 tagból állhat.
1111 1111 1111 1111 0000 0000 0000 0000
255 255 0 0
"B" osztályú IP tartomány
A "B" osztályú, közepes méretű hálózat a 128.0.0.0 - 191.255.255.255 IP tartományt használja.
"C" osztályú IP cím.
A "C" osztályú hálózatban az első 3 byte a hálózati azonosító. A fenmaradó 8 bit azonosítja a hálózati interfészeket. Egy "C" osztályú hálózat 28 azaz 256 tagból állhat.
1111 1111 1111 1111 1111 1111 0000 0000
255 255 255 0
"C" osztályú IP tartomány
A "C" osztályú, kisméretű hálózat 192.0.0.0 - 223.255.255.255 IP tartományt használja.
A 224.xxx.xxx.xxx és a 255.xxx.xxxx.xxx számmal kezdődő IP címeket speciális célokra tartják fenn, ezért ez a tartomány nem osztható ki. Vannak azonban úgynevezett "privát" IP címek, amelyek általában magáncélra, Internethez nem kapcsolódó gépekhez alkalmazhatóak.
"A" osztályú hálózathoz: 10.0.0.0
"B" osztályú hálózathoz: 172.16.0.0 - 172.31.0.0
"C" osztályú hálózathoz: 192.168.0.0 - 192.168.255.0
Van egy speciális hálózati cím, nevezetesen a 127.0.0.0
Ez a cím, helyi IP forgalomhoz van fenntartva, és ezen belül a 127.0.0.1 az ún. "LOOPBACK" (visszahurkoló) interfész címe. Ez egy "virtuális" hálózati kártya, amely olyan gépeken is lehetővé teszi a TCP/IP alapú tevékenységet, amelyben fizikailag nincs is hálózati kártya.
Az IP-címek, tartományok kiosztása, és nyilvántartása a Network Information Center (NIC) nevű szervezet feladata. Magyarországi szervezete megtalálható, a http://www.nic.hu/ URL címen.

Tekintettel arra, hogy a még ki nem osztott IP tartományok köre rohamosan fogy, a szükség elvezetett a "C" osztályúnál kisebb tartományokhoz is. Nézzünk meg egy negyed "C" osztályú tartományt! Az elv ugyanaz, mint a korábban megismert, vagyis az alhálózat azonosítója az első 3 és 1/4 byte.
1111 1111 1111 1111 1111 1111 1100 0000
255 255 255 192
negyed "C" osztályú IP tartomány
Vegyük például, a 192.168.0.0 hálózati címet! Ha elosztjuk a fenti táblázat szisztémája szerint négy egyenlő nagyságú IP tartományra, akkor a négy tartomány kezdő és végcímei az alábbiak szerint alakulnak:
192.168.0.0 - 192.168.0.63
192.168.0.64 - 192.168.0.127
192.168.0.128 - 192.168.0.191
192.168.0.192 - 192.168.0.255
Minden alhálózatban vannak fenntartott címek. Az előbbiekben már volt arról szó, hogy a legkisebb cím, az alhálózatot címzi meg, ezért hálózati címnek (hálózati kártya címnek) nem osztható ki.
Ugyanígy foglalt az adott alhálózat legnagyobb IP címe is, mert ez a cím van kijelölve üzenetszórásra (broadcast). Ezen a broadcast címen az alhálózat valamennyi eleme, tagja elérhető. Ez az adattovábbítás szempontjából igen fontos.

Speciális IP-címek

 
00000000.00000000.00000000.00000000 Az aktuális gép.
00000 ... 00000 host Az aktuális hálózat megadott gépe
11111111.11111111.11111111.11111111 Broadcast az aktuális hálózaton.
network 00000 ... 00000 A megadott hálózat azonosítója.
network 11111 ... 11111 Broadcast a megadott hálózaton.
01111111 bármi Loopback
Nézzük meg egy IP csomag továbbítását!

Első példánk, egy egyszegmensű hálózat, ahol egyetlen kábel köti össze az összes PC-t. A küldő gép IP címe legyen pl.: 192.168.0.193! A hálózat "C" osztályú, innen már tudjuk, hogy a netmaszk: 255.255.255.0.
A célállomás IP címe, - ahová a küldő indítja az adatcsomagot - 192.168.0.253.
A küldő PC a fenti három adatból meg tudja állapítani, hogy a célgép ugyanazon az alhálózaton van, mint ő maga. Az adatok elküldéséhez, szükség van a célgép Ethernet címére. Ezt a küldő gép le tudja kérdezni egy ethernet-specifikus ún. ARP kérdéssel (Adress Resolution Protocol). Ez az a kérés, ami a broadcast címre megy, (az alhálózat legnagyobb címe) így az összes gép megérti, de csak a keresett IP című gép fog rá válaszolni, mégpedig a saját Ethernet címével. (Az ethernet címet a hálózati kártya, a gyártásakor kapja meg). Ezután a küldő PC az IP csomagból ethernet-csomagot állít elő, és elküldi azt.
De mi van olyankor, ha a hálózat nem egyszegmensű, hanem több alhálózatból áll?
Ebben az esetben szükség van egy forgalom irányító eszközre (router) is.
A router, egy olyan hálózati eszköz, amely 2 vagy több hálózati interfésszel rendelkezik, és a feladata, hogy összekössön több fizikai hálózatot. (Természetesen ha egy PC-be két hálózati interfészt építünk, akkor az is lehet router!) Ilyenkor a hálózatba kapcsolt gépeknél az IP címen és a netmaszkon kívül ismerni kell az alapértelmezett átjáró útvonalát (default gateway). Az esetek többségében ez megegyezik az azonos alhálózaton lévő router IP címével.

Nézzünk most egy konkrét példát a routolás megértéséhez!

routolás
Amint az látható, a két "fél C osztályú" tartományt egy olyan router köti össze, amelynek mindkét alhálózathoz van IP címe! A küldő gép, a saját IP címéből és a netmaszkból, valamint a célgép IP címéből rájön hogy nincsenek egy alhálózaton. Ezért a nála beállított alapértelmezett átjáróhoz fordul és ide küldi el az adatcsomagot. A routerben kiderül, hogy a célgép IP címe a router másik interfészével azonos alhálózaton van, így a már ismert módon a küldemény célba ér.
Ha a cél a router egyik interfészével sincsen közös alhálózaton, akkor ő is továbbküldi a csomagot a saját alapértelmezett átjárójára és így tovább mindaddig, amíg az egyik gateway talál egy számára megfelelő szegmenst.
DNS

A TCP/IP alapú hálózatokban a címzés az IP címekkel történik. Ezzel a kommunikáció kiválóan működik, de a mindennapi használat során igen nehézkessé válhat. Gondoljon csak arra, hogy hogyan jutott el például a prog.hu weboldalára? Valószínűleg nem ezt írtja be a böngészödbe, hogy http://94.199.48.135 bár az eredmény ugyanaz, mintha azt írta volna, hogy http://www.prog.hu
Egy-két IP-cím példa:

origo.hu: 195.228.240.145
www.nanaskabel.hu: 212.24.176.130
www.csihagy-hnanas.sulinet.hu: 195.199.145.57
www.korosi-hnanas.sulinet.hu: 195.199.145.65
az én gépem címe (egyszer valamikor): 82.141.176.5
Szívesebben használjuk a szemléletesebb szimbolikus címeket (DNS neveket). A domain név szolgáltatás szerverei biztosítják számunkra azt, hogy szemléletesebb nevek megadásával az adott nevet megfelelteti az azt jelentő IP címmel.
Ezek a szimbolikus nevek egy jobbról induló hierarchiában foglalnak helyet. Nézzünk egy ilyen nevet közelebbről és fejtsük meg, hogy mit is jelentenek a részei!
A kérdéses szimbolikus név legyen pl. a http://www.prog.hu
Ebben a névben a ".hu" végződés, a felsőszintű domain arra utal, hogy ez egy magyar oldal. Az aldomain, a "prog" az oldal jellegére utal. A "www" a world wide web mozaikszava és világméretű, széles hálózatot jelent. (Ez átvitt értelemben, hiszen a hálózat angolul network, a web szó szerint pókhálót jelent, de az internetet ismerve, az elnevezés teljesen találó.) A http pedig az internetes böngészés szabványára utal (HiperText Transfer Protocol).
Mivel a TCP/IP alapú hálózatoknál (az Internet is ilyen) az adatcsomagok IP-cím alapján jutnak célba, ezért szükséges a nevekből megállapítani az IP-címet. Ezt a feladatot végzik el az ún. DNS szerverek. (Domain Name System) Minden körzetben van egy regisztrált DNS kiszolgáló, amelyik felel a körzetért. A DNS szerverek azonban nem csak arra képesek, hogy a névből IP címet állítsanak elő, hanem arra is, hogy az IP címre névvel válaszoljanak (reverse funkció).
Útválasztás

Tegyük föl, hogy az "A" hoszt szeretne információt küldeni a "J" hosztnak! Milyen útvonalon menjenek a csomagok?

Jellemzők:
Visszafelé nem megyünk. (Tehát a pl. "H"-ból az "F" felé megyünk, mert a "G"-ből értünk oda.)
Ha egy routertől két vagy több másik router felé ugyanaz a költség, akkor az elsőt választjuk. (pl. a "B"-ből a "C"-t választjuk a "G" helyett.)
(Persze ez csak akkor, ha csak a közvetlen szomszédokhoz vezető költségeket ismerjük. Ha már a 2. szomszédhoz vezető költségeket is ismernénk, akkor más lenne a szitu.)
Mivel a különböző útvonalak költségei pillanatról pillanatra változnak, ezért a csomagok nem ugyanazon az útvonalon fognak közlekedni.
Az "A" router táblája (routing table)
Melyik routerhez? Mennyi az odavezető költség?
B 3
G 2
H 4


Ha csak a közvetlen szomszédba vezető költségeket ismerjük.

Ha minden router a szomszéd router felé ismeri a kölstéget, akkor a fenti útvonalon halad a csomag. Így a költség 13.


Az ideális útvonal

Viszont a fenti útvonalat választva a költség csak 11.

Ha nem csak a közvetlen szomszádokhoz vezető költségeket ismerjük, hanem pl. a 2. szomszédhoz vezetőt is, akkor nagyobb eséllyel tudjuk az optimális utat kiválasztani. Ekkor viszont bonyolultabb lesz a routing tábla. (Az is időt vesz el, míg meghatározzuk a következő állomást!)
A routerek állandóan frissítik a táblázataikat.

Az optimális útvonal nem biztos, hogy a fizikailag legrövidebb útvonalat jelenti, ugyanis nagyon sok tényező befolyásolja az optimális választást. Ilyen lehet pl. a csomópont átlépések száma; az az idő, amennyi alatt a csomag eljut a következő csomóponthoz; vagy a vonalhasználat költsége.

Nincsenek megjegyzések:

Megjegyzés küldése