OSI modell
A számítógép hálózatokban az adatok áramlását, a címzetthez való eljuttatását vezérelni, szabályozni kell. A kommunikációs rendszerek kialakításakor olyan általános architektúra fejlesztésére törekedtek, amely lehetővé teszi a nyitott rendszerkapcsolatot. Az OSI modell (Open System Interconnection) egy elméleti referenciamodell, egy szabvány, ami egy kommunikációs rendszer felépítését leírja. A számítógépek kommunikációja is erre a modellre épül.
Az OSI modell rétegekből épül fel és ezek a rétegek egymással kommunikálnak. Minden egyes réteghez tartozik egy protokollkészlet vagy címzési módszer, ami vezérli a réteg feladatait.
Ha továbbítani akarunk egy adatot, akkor át kell annak haladnia a rétegeken. Lehet, hogy az összes rétegen áthalad, de az is lehet, hogy csak az első pár rétegen. Ez hálózati eszköztől függ. Például egy switch csak az első két réteget valósítja meg, míg egy számítógéptől-számítógépig történő kommunikáció mind a 7 rétegen áthalad. Minden egyes réteg egy plusz információt rak az adathoz (egy fejrészt és egy farok részt) ami a réteg funkcióinak megvalósításához szükséges. Becsomagolja őt. Egyre több rétegen haladunk át úgy nő a plusz információ mennyisége.
1 -- Fizikai réteg (Physical Layer)
Ez a legalsó réteg, amely a fizikai közeggel foglalkozik, azzal, hogy hogyan kell az elektromos jeleket a hálózati kábelekre ültetni (feszültségszintek és csatlakozások meghatározása). Biztosítania kell, hogy a kábelre kiküldött 1 bitet a vevő oldal is 1-nek lássa, és ne 0-nak illetve, hogy minimális legyen a beszűrődő zaj hatása.
2 -- Adatkapcsolati réteg (DataLink Layer)
Az adatkapcsolati réteg felel az adatok az adó oldalról a vevő oldalra eljutásáért. Az adatokat egyértelműen azonosítható adatkeretekre tördeli szét, ellátja a szükséges vezérlő- és hibajavító bitekkel, majd sorrendben továbbítja azokat. A vevő oldal pedig a kapott kereteket megfelelő sorrendben összeállítja Másik fontos feladata az, hogy a kétirányú átvitel esetén az esetleges ütközésekből adódó problémákat megoldja.
Az adatkapcsolati réteg egysége a keret, ami fejlécében tartalmazza a küldő és a fogadó számítógép MAC címét. (lásd később)
3 -- Hálózati réteg (Network Layer)
Alapfeladata az adatkapcsolati réteg által elkészített keretek forrás és célállomás közti útvonalának meghatározása/kiválasztása, tehát az útvonalválasztás és forgalomirányítás: merre, milyen útvonalon (kvázi melyik számítógépeken, hálózatokon keresztül) kell az adatokat küldeni, hogy a rendeltetési helyre érkezzenek.
A hálózati réteg egysége a csomag, amely a fejlécében tartalmazza a küldő és a fogadó számítógép IP címét (lásd később) és sok egyéb információt, mivel a csomagok egymástól független külön útvonalon is közlekedhetnek.
4 -- Szállítási réteg (Transport Layer)
Ez a réteg biztosítja azt, hogy minden adat érintetlenül, sértetlenül érkezzen meg a rendeltetési helyére. Ehhez egy megbízható kapcsolatnak kell felépülnie a küldő és a fogadó kööztt. Ezért felel a TCP protokoll, amely elvégzi ezt a kapcsolatfelépítést.
A szállítási réteg egysége a szegmens, amely a fejlécében tartalmazza a küldő és a fogadó számítógép portszámát amely két port között történik a kommunikáció.
Álljunk meg egy szóra. Mi a különbség a keret, a csomag és a szegmens között? Lényegében semmi, mindegyik néhány bit egymás után. Az adatkapcsolati rétegben közlekedő adategységeket keretnek, a hálózati rétegben közlekedő adategységeket csomagnak a szállítási rétegben közlekedőket pedig szegmensnek nevezik Azért nevezték el őket különbőzően, hogy egyértelműen meg lehessen őket különböztetni amikor beszélünk róla.
Ha pl mindegyiket csomagnak neveznék, akkor nem lehet a leírásokban különbséget tenni pl a 2. réteg csomagjai és a 3. réteg csomagjai között -- míg köztük igen nagy a különbség: A 2. szállítási rétegben még csak MAC címeket tartalmaz a csomag, így még csak azt tudja, hogy egy LAN hálózaton melyik számítógéphez kell eljutnia -- a 3 .hálózati rétegben kap olyan fejlécet amiben ott vannak az IP címek, így az egész interneten tud közlekedni.
5 -- Viszonyréteg (Session Layer)
Ez a réteg azt teszi lehetővé, hogy különböző gépek felhasználói viszonyt létesíthessenek egymással. A viszony kialakítása nem egyszerű, mert szinkronizálni kell az adatok közlekedését, és menedzselni kell az adatáramlás irányát, ami lehet:
- szimplex: egyirányú. Csak az egyik irányba folyik kommunikáció
- félduplex: kétirányú úgy, hogy időben egyszer az egyik, egyszer pedig a másik fél ad
- duplex: kétirányú úgy, hogy egyszerre, párhuzamosan történik a két irányba a kommunikáció.
6 -- Megjelenítési réteg (Presentation Layer)
A megjelenítési réteg biztosítja az alkalmazási réteg számára, hogy az adatok a végfelhasználó rendszerének megfelelő formában álljon rendelkezésre. Esetleges kódolások feloldása, adattömörítés, titkosítás, és egyszerűbb adatkezelések történnek ebben a rétegben.
7 -- Alkalmazási réteg (Application Layer)
Ez a legfelső réteg, amelyhez a felhasználói programok által igényelt protokollok tartoznak. Az alkalmazási réteg a feltétele annak, hogy a különböző programok a hálózattal kommunikálhassanak. Többek között a réteg hatáskörébe tartozik az elektronikus levelezést, az állománytovábbítást irányító protokollok meghatározása (HTTP, FTP ...).
OSI Példa
7)
Tegyük fel, hogy Pistike internetezni szeretne. Megnyitja a kedvenc böngészőjét és beírja az URL-t. Az URL egy Alkalmazási réteg beli elem, aminek segítségével a böngésző majd a HTTP protokoll segítséégvel kapcsolódni tud a webszerverhez.
6)
A böngésző többfajta fájlformátumot támogat (jpg, png, gif...) és a weboldal forráskódja többféle karakterkódolásban lehet (UNICODE, UTF-8, ISO-8559-2 .... A megjelenítési réteg felel azért, hogy a távoli webszerverhez a megfelelő kódolással szóljunk és a tőle kapott adatot a megfelelően érttelmezzük.
5)
A webböngésző kapcsolódik több szálon a távoli webszerverhez. Az egyik kapcsolaton keresztül lehúzza pl a .html forráskódot, a másikon a weboldalba ágyazott képet stb.. Minden egyes kapcsolati szál duplex tehát kétirányú kommunikáció zajlik. Már a viszonyrétegben vagyunk.
4)
A kapcsolat felépítéséért a szállítási rétegben működő TCP protokoll felel. Ő küld egy csatlakozási kérelmet a távolban figyelő szervernek, aki ezt nyugtázza. A nyugta megérkezését pedig a kezdeményező még egyszer visszanyugtázza. Ez az ún. TCP-handshake. Ha mindkét oldal nyugtája megérkezett a másiknak akkor létrejött a kapcsolat.
3)
Kezdődhet az adatkommunikáció. Pistike kérelme, hogy melyik weboldalt szogálja ki a webszerver, az kisebb adategységekre tördelődik és a felsőbb rétegekről kapott plusz információkkal együtt csomagokba szerveződik. A csomagok célba jutásáért az IP cím felel. Ez a cím mondja meg, hogy melyik hálózathoz kell eljuttatni a csomagot és hogy melyik hálózatból jött. A csomagoknak nem szükséges ugyanazon az útvonalon közlekednie. Az egyik csomag erre a másik csomag arra megy. A forgalomszabályozást az útközben található routerek és egyéb hálózati eszközök végzik.
2)
Ha megérkezett a csomag a kívánt hálózatba (ahol a webszerver van), akkor azt el kell jutattni a célszámítógéphez. Ezt segíti az adatkapcsolati régtegben található MAC cím, amely a hálózati kártyákba égetett cím, így tudja a router hogy melyik gép hálózati kártyájára kell adni a csomagot.
1)
A bitsorozatot fogadja a hálózati kártya, az itt ofgadott bitek az Ethernet portnak megfelelő feszülségekkel történik.
Tehát megérkezett pistike által indított adat a webszerverhez. Eddig a rétegeket csökkenő sorrendben jártuk végig (7-6-5-4-3-2-1) és jól be van csomagolva az adat. Ahhoz, hogy a webszerver kinyerje az adatot végig kell járnia a rétegeket (1-2-3-4-5-6-7) mígnem eljut a tényleges adatig. Ha a webszerver kikereste azt amit Pistike böngészőjének kérelme tartalmazott akkor megindul a küldés. A szerver becsomagolja a 7 rétegbe és elküldi azt Pistinek aki örül. Így zajlik az adatkommunikáció az OSI modell segítségével.
A két legfontosabb elem az adatkapcsolat felépítése ami a TCP protokollal történik és a csomag eljtutatása a célhálózatba ami az IP cím segítségével történik. Ezért azt mondják, hogy az internetes kommunikáció alapja a TCP/IP.
Az IPv4, IPv6 cím
Az IP cím egy bitsorozat ami a számítógépek logikai címzéséért felel. A hálózati rétegben használják arra, hogy a csomag megtalálja a célszámítógépet akinek azt küldik. Az IP címek nem tartoznak fixen egy számítógéphez, hanem amkor a számítógép online akkor kap egyet ideiglenesen, azt használja, és amikor offline lesz az IP címet elengedi amit másnak osztanak ki.
Az IPv4 (4-es verziójú IP cím) egy 32 bites bitsorozat amiben a biteket inkább 10-es számrendszerben szokták írni, 8 bitenként egy . ponttal elválsztva:
IPv4 címből, mivel 32 bites, 232 = 42\'949\'67\'296 darab van, ami ma 2015-ben kevésnek bizonyul, így kidolgozták az Ipv6-ot (6-os verziójú IP cím) ami hosszabb, így több számítógépet lehet vele megcímezni. Az IPv6 jelenleg bevezetés alatt áll, egyes hálózatok már kezeik az ilyen címeket, egyes hálózatok még nem. A két hálózat közti átjárásért ú.n. 6to4 tunnelek felelnek.
Az IPv6 egy 128 bites cím amit inkább 16-os számrendszerben szoktak írni 16 bitenként egy : kettősponttal elválasztva a számokat, mert így rövidebb. Ha a címben vannak 0-ás blokkok, akkor azok elhagyhatók és egy :-tal helyettesíthetők bizonyos szabályok mellett.
Az Ipv6-tal mivel 128 bites 2128 = körülbelül 340 szextillió (3.4*1038) számítógépet lehetne megcímezni.
IP címosztályok és az alhálózati maszk
A teljes IP tartomány (legyen szó v4-ről vagy v6-ról) szétosztásáért az Internet Assigned Numbers Authority (IANA) felel, akik kiosztják 5 kontinentális szervezetnek az IP címeketet, akik azután kisebb "csomagokban" továbbosztják országoknak, azon belül pedig eljutnak az internetszolgáltatókhoz, akik hozzárendelhetnek 1-1 IP címet az éppen online felhasználóhoz.
Az IP cím két részből áll:
A hálózatazonosító a hálózatot azonosítja a hálózaton belüli azonosító pedig a hálózaton belüli gépet. Például itt van egy kisebb hálózat, amelyben felfedezhető a hálózatazonosító ami állandó az IP címek elején, és a hálózaton belüli azonosító ami a gépeket címezi szép sorban.
1981-ben bevezették az IP címosztályokat és 3 fő osztályba sorolták az IP címeket aszerint, hogy hány bites a hálózatazonosító rész:
Egy másik táblázat ugyanerről:
Egy A osztályú cím első 8 bitje a hálózatazonosító. Az A osztályú cím mindig 0-val kezdődik, a maradék 7 hálózatazonosító bitjével pedig 2^7^ = 128 hálózatot lehet létrehozni, amelyekben 2^24^ = kb 16 millió számítógép van.
Egy B osztályú cím első 16 bitje a hálózatazonosító. Az B osztályú cím mindig 10-val kezdődik, a maradék 14 hálózatazonosító bitjével pedig 2^14^ = 16\'384 hálózatot lehet létrehozni, amelyekben 2^16^ = kb 65 ezer számítógép van.
Egy C osztályú cím első 24 bitje a hálózatazonosító. Az C osztályú cím mindig 110-val kezdődik, a maradék 21 hálózatazonosító bitjével pedig 2^21^ = kb 2 millió hálózatot lehet létrehozni, amelyekben 2^8^ = 256 számítógép van.
A D osztályú címek speciális címek, amit a többszörös ún multicast címezésre használnak. Az E osztály egy fenntartott nem használt osztály.
Az IP címeket kiosztó szervezet az A osztályú címeket országoknak, internetszolgáltatóknak (nekik sok címre van szükségük) a B osztályú címeket egyetemeknek és egyéb intézményeknek osztják ki (itt kevesebb számítógép van, kevesebb címre van szükségük). Egy kisebb intézmény kisebb méretű osztályt kap.
A gond ott van, hogy lehet, hogy egy egyetemnek (teljes B osztályt kapott, 65 ezer gépet lehet vele megcímezni) nincs ennyi gépe hanem csak 10\'000 van naki. A B osztály túl nagy a C osztály túl kicsi (256 gép). Az osztály alapú IP címfelosztás helyett célszerűbb használni a VLSM-et.
VLSM = Variable Length Subnet Masking
A VLSM technika nem osztályokat használ IP tartományok megadására, hanem egy ún alhálózati maszkot. A maszk segítségével bárhol ketté lehet osztani az IP címet hálózatazonosítóra és hálózaton belüli azonosítóra, így bármilyen méretű tartományt létre lehet hozni.
Adott egy IP cím, ami egy bitsorozat. Például legyen ez (181.181.181.181):
10110101.10110101.10110101.10110101
Az alhálózati maszk egy 1-esekből és 0-ákból álló sorozat. Az alhálózati maszk elején van valahány darab 1-es, utána csupa 0. Például (255.255.252.0):
11111111.11111111.11111100.00000000
Ha az IP cím bitjeit az alhálózati maszkkal bitenként a logikai ÉS művelettel összeadjuk, akkor megkapjuk hol válik ketté az IP cím hálózatazonosítóra és hálózaton belüli azonosítóra.. Az ÉS művelet hatására ahol az alhálózati maszkban 0-ák vannak ott az IP cím kinullázódik.
IP cím:
10110101.10110101.10110101.10110101
&
Alh.maszk:
11111111.11111111.11111100.00000000
=
10110101.10110101.101101XX.XXXXXXXX
A hálózatazonosító tehát ebben az esetben az első 22 bit.
A hálózaton belüli azonosító az utolsó 10 bit, amivel 210 = 1024 gépet lehet megcímezni. (Ez eltér az A B vagy a C osztály méretétől, ez egy egyedi méret. Juhé)
Az utolsó sorban a X bitek változhatnak 00.00000000 -tól egészen 11.11111111-ig. Minden másik kombináció egy másik gépet címezhet meg.
Természetesen a fentieket csak számoláskor szokták kettes számrendszer alakban leírni. Amikor betáplálják ezt valahova, akkor már átváltják 10-es számrendszerbe. A fenti 3 számsor:
IP cím:
181.181.181.181
Alhálózati maszk:
255.255.252.0
A tartomány:
181.181.180.0 -- 181.181.183.255
(E kettő között pont 1024 darab IP cím van)
Ha "ki akarunk jelölni" egy tetszőleges méretű számítógép hálózatot akkor tehát vagy
- egy osztály alapú IP címtartományt adunk meg, ekkor meg van kötve a kezünk méretválasztáskor
- vagy egy IP címet és egy hálózati maszkot adunk meg,.Ekkor kijelölhetünk bármekkora tartományt egy kis kettes számrendszer beli bűvészkedéssel.
Privát IP címtartomány
Az interneten nincs két ugyanolyan IP cím, mindegyik egyedi -- ezért is szükséges kontrolláltan szétosztani őket, amit az IANA szervezet végez.. Nem így van ez router mögötti privát hálózatoknál. A router csak 1 darab egyedi IP címet kapott, azonban mögötte sok gép van. A router feladata az, hogy ezt az 1 darab IP címet felhasználja és az ide érkező csomagokat a megfelelő számítógépnek továbbítsa. (Ezért is a neve router, = útválasztó.)
Ahhoz, hogy a csomagok célbaérjenek a privát hálózaton lévő gépeknek is kell egy IP cím. Ők nem A B vagy C osztályú nyilvános IP címet kapnak, hanem egy speciális privát IP címtartományból szemezgetnek:
Ha például van egy otthoni hálózatunk, ami kicsi és csak pár számítógépet tartalmaz, akkor ő a 192.168.0.0-192.168.255.255 privát tartományból fog kapni IP címeket.
A privát tartományok kioszthatók több helyre mivel az internetről közvetlenül nem címezhetők. A szomszéd, akinek ugyanúgy van egy router mögötti otthoni hálózata szintén a 192.168.0.0- ... tartományt kapta meg. Ez a privát IPcím tartomány lényege. A privát hálózatokba többször is kioszthatóak.
Ahhoz, hogy egy privát hálózaton lévő gép mégis elérje az internetet azért a router felel, ami elvégzi a címfordítást.
A router a DHCP protokollt = Dynamic Host Control Protocol felhasználva osztja ki a privát IP címeket a hozzá kapcsolt számítógépeknek két -féle módon:
- fix IP cím kiosztás: az adott számítógép mindig ugyanazt a címet kapja
- dinamikus IP cím kiosztás: az adott számítógép mindig a legkisebb szabad IP címet kapja (azaz változhat az IP címe)
MAC cím
Az IP cím felel tehát azért, hogy az interneten a csomag az egyik hálózatból eljusson a másik hálózatba. Kiosztását és a teljes IP cím tartományokra bontását fentebb ismerhettük meg.
Térjünk vissza egy kicsit még a router egyik feladatára: A router a hozzá kapcsolt számítógépeknek DHCP-vel IP címet ad. Vajon ha fix IP címet kell kiosztania az eszközöknek, akkor hogyan ismeri fel, hogy ugyanaz az eszköz már egyszer csatlakozott csatlakozott a portjára? A válasz: a MAC cím alapján.
A MAC-cím (Media Access Control) egy hexadecimális számsorozat, amellyel még a gyártás során látják el a hálózati kártyákat. A hálózati eszközök a MAC-címet használják a hálózat meghatározott pontjainak azonosítására. A switch, úgy tudja megtanulni, hogy kinek kell egy csomagot küldeni, hogy a elemzi a csomagot, és meghatározza a címzett MAC címét és csak arra a portjára küldi ki a csomagot, amelyik portján ilyen MAC című hálózati eszköz található.
A különbség tehát az IP cím és a MAC cím között, hogy az előbbi dinamikus és az interneten azonosít, utóbbi pedig adott hardveres cím (szokták fizikai címnek is nevezni) és a hálózati eszközt azonosítja egy alhálózaton. Példa MAC címre (első ránézésre ez egy IPv6 címre hasonlít de nem, mert csak 64 bites a 128 helyett):
60:C5:47:8B:40:F8
Az operációs rendszerbe épített hálózati szoftverek
Nyissunk egy Windows parancssort és ott adjuk ki a következő parancsokat:
Ipcím és MAC cím lekérése:
ipconfig -all
(OSX, Linux alatt: ifconfig)
A képernyőn olvasható a hálózati kártya neve. A fizikai cím a MAC cím másik megnevezése. A számítógép itt épp fix IP címet kapott a routertől, mert a DHCP nincs engedélyezve. Az IP cím egy privát IP cím, mert 192.168...-al kezdődik. Az alhálózati maszk 255.255.255.0 ami azt jelenti, hogy az első 24 bit a hálózat azonosító az utolsó 8 pedig a hálózaton belüli azonosító, így 2^8^ = 256 gép lehet a hálózatban. Az alapértelmezett átjáró a router IP címét adja meg ami egy hasznos információ.
Nyomkövetés
tracert
(OSX, Linux alatt: traceroute)
Például nézzük meg milyen hálózati csomógpontokon keresztül jutunk el a google.com webszerverre:
Hálózati eszköz elérhetőségének ellenőrzése
ping
(OSX, Linux alatt: ping)
Például ellenőrizzük, hogy elérhető-e a 185.34.1.3 gép?