OSI-modell
Az OSI az Open System Interconnect – nyílt rendszerek összekapcsolása kifejezés angol eredetijéből alkotott betűszó. Nyílt rendszereknek olyan rendszereket hívjuk amelyek nyitottak a más rendszerekkel való kommunikációra. Az OSI modell hét rétegből áll, és a kialakításuknál a következő elveket vették figyelembe:
- minden réteg feladata jól definiált legyen, és ez a nemzetközileg elfogadott szabványok figyelembe vételével történjen,
- a rétegek közötti információcsere minimalizálásával kell a rétegek határait megállapítani,
- elegendő számú réteget kell definiálni, hogy a különböző feladatok ne kerüljenek feleslegesen egy rétegbe.
Az OSI modell az “oszd meg és uralkodj” elvet alkalmazza. A modell szerint a hálózatot legjobban úgy lehet megvalósítani, hogy azt a feladatok szerint egymástól független különböző rétegekre osztjuk, ahol aztán az egyes rétegek egymással kommunikálnak. A modell hét réteget különböztet meg. Ezek a rétegek aztán a rájuk vonatkozó protokollok szerint végzik a feladatukat. Az OSI modell az Internet felépítését, architektúráját nem adja vissza teljes mértékben, ugyanis az az ARPANET fejlesztőinek a munkáját tükrözi. A különbség az ARPANET és az OSI munkatársai közötti kisebb-nagyobb nézeteltérésekben kereshető, illetve abban a tényben, hogy a kidolgozás időpontjában (1980 körül), az OSI (illetve senki) nem gondolta volna, hogy az ARPANET internet architektúrája annyira elterjed, hogy az lesz a meghatározó az Internet fejlődésében. Az OSI modell a hálózatot mintegy réteges tortát képzeli el. Ennek a tortának hét rétege van. Szakszerűen azt mondanánk, hogy protokoll-veremről van szó. Minden rétegnek megvan a maga protokoll-készlete, amelyek a réteg feladatát hivatottak szabályozni. Az egyes rétegek egymással csak logikai kapcsolatban állnak, fizikailag mindig az alattuk lévő réteggel kommunikálnak. A két hálózat tényleges fizikai kapcsolatát csak a fizikai réteg adja. Az alsó négy réteg azzal foglalkozik, hogy hogyan kell egy üzenetet a hálózat két pontja között továbbítani. Ezek:
- 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. Biztosítania kell, hogy a kábelre kiküldött 1 bitet a vevő oldal is 1-nek lássa, és ne 0-nak. Mi a feltétele, és hogyan lehet megvalósítani a lehető legminimálisabb háttérzajt, stb. Az összes, internetet alkotó hálózat lényegében csak a fizikai rétegeiken keresztül kommunikál egymással. Az internetek forgalma bármilyen fizikai közegen továbbítható, ennek mikéntjét írja le a fizikai réteg, és annak protokolljai.
- Adatkapcsolati réteg (data-link layer): Ez a réteg a fizikai réteg felett helyezkedik el. A feladata abban áll, hogy biztosítsa: az adó oldali adatok a vevő oldalra is adatként jussanak el, és ne legyen belőle értelmetlen jelek sorozata: szemét. Ezt úgy valósítja meg, hogy az adatokat egyértelműen azonosítható adatkeretkre tördeli szét, ellátja a szükséges vezérlőbitekkel, majd sorrendben továbbítja azokat. A vevő oldal pedig a kapott kereteket megfelelő sorrendben összeállítja. Az adó oldal ezenkívül még a vevő által küldött nyugtázásokat is feldolgozza. Mivel a fizikai réteg a biteket értelmezés nélkül továbbítja, ezért az adatkapcsolati réteg feladata, hogy felismerje a keretek határait. 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.
- Hálózati réteg (network layer): A hálózati réteg az adatkapcsolati réteg felett helyezkedik el, és 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, azaz a 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. Ez történhet statikusan: olyan táblázatok segítségével, amelyek nem változnak; dinamikusan: ilyenkor a táblázatok állandóan változnak, és a hálózat aktuális helyzetét (térképét) adják. Ezzel a módszerrel figyelembe vehető a hálózat terhelése is. Természetesen igaz az, hogy két keret, amelynek ugyanaz a forrás- és célállomása is, nem biztos, hogy ugyanazon az útvonalon keresztül jut el a rendeltetési helyre, hiszen a hálózat pillanatról pillanatra változik. Amennyiben túl sok a hálózaton a küldendő adatkeret, akkor ezek egymást akadályozzák, feltorlódhatnak. Ezzel az úgynevezett torlódási problémával is a hálózati rétegnek kell szembenéznie. Ha egy adatkeretnek több hálózaton kell áthaladnia ahhoz, hogy célba érjen, akkor probléma merülhet fel olyan esetekben is, ahol a hálózatok eltérő felépítésűek. A problémát (ti. a heterogén hálózatok összekapcsolását) szintén a hálózati réteg oldja meg. A hálózati réteg feladatait a TCP/IP alapú hálózatokban az Internet Protocol látja el.
- Szállítási réteg (transport layer): A hálózati réteg felett elhelyezkedve, ez a réteg biztosítja azt, hogy minden adat érintetlenül, sértetlenül érkezzen meg a rendeltetési helyére. Az adatokat csomagokra bontja szét, ha szükséges. A szállítási réteg két végpont között réteg, ami azt jelenti, hogy itt a forrás- és a célállomás egymással kommunikál, míg az alsóbb rétegeknél ez nem igaz: ott a gazdagépek a szomszédjukkal folytatnak párbeszédet. Ez arra jó, hogy a réteg mintegy azt ellenőrzi, hogy az átvitel során a közbeeső gépek mindegyike helyesen vitte-e át az adatokat. A szállítási réteg feladatait TCP/IP alapú hálózatokban a Transmission Control Protocol látja el.
A következő három réteg a felhasználók számára biztosít szolgáltatásokat. A három réteget együtt felső rétegeknek nevezik.
- Viszonyréteg (session layer): Közvetlenül a szállítási rétegre épül. Ez a réteg azt teszi lehetővé, hogy különböző gépek felhasználói viszonyt létesíthessenek egymással. Lényegében közönséges adatátvitelről van szó, amihez néhány kényelmes szolgáltatást adtak hozzá. Ilyen például az úgynevezett kölcsönhatás-menedzselés, ami vezérli, hogy a két oldal egyszerre ne próbálkozzon ugyanazzal a művelettel. Ez például úgy oldható meg, hogy vezérlőjelet tartanak fent, és csak az az oldal végezheti az adott műveletet, amelyiknél ez a vezérlőjel van. Egy másik fontos szolgáltatás a szinkronizáció. Képzeljük el például, hogy egy állománytovábbítás valamilyen hálózati hiba miatt megszakad. Jó lenne, ha ilyen esetben nem kellene elölről kezdeni az egészet. Ezért a viszonyréteg az adatokhoz úgynevezett szinkronizációs jeleket ragaszt, amelyek segítségével a hiba megszűnése után az adatok továbbítása az utolsó ellenőrzési jeltől folytatódhat.
- Megjelenítési (ábrázolási) réteg (presentation layer): A réteg a viszonyrétegen felül helyezkedik el, és olyan szolgáltatásokat ad, amelyekre a legtöbb alkalmazói programnak szüksége van, amikor a hálózatot használja. Ez a réteg foglalkozik a hálózaton továbbítandó adatok ábrázolásával: el kell döntenie, hogy milyen egységes struktúrába szervezze az adatokat, amelyeket a felette elhelyezkedő alkalmazói rétegtől kap. A legtöbb program például neveket, számokat, stb. küld egymásnak, amelyeket esetenként bonyolult adatszerkezetekként ábrázolnak. Ehhez jön még az a tény, hogy a különböző számítógépek különböző kódolásokat alkalmaznak (ASCII, EBCDIC,…). Annak érdekében, hogy a számítógépek egymással kommunikálni tudjanak, az adatokat a hálózaton egységes szabvány szerint kell bitek egymásutánjára kódolni. Ezt végzi el a megjelenítési réteg. Egyéb feladatai közé tartozhat még az adattömörítés, illetve a titkosítás is.
- 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 léte 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 és a terminál-emulációt irányító protokollok meghatározása.
A fentiek fényében foglaljuk össze, hogy hogyan működik egy ilyen hálózat ! A küldő számítógépen egy alkalmazói program adatot küld a protokoll-vermen. A megjelenítési réteg az adatokat tömöríti, esetleg titkosítja, majd tovább adja a szállítási rétegnek, amely a megfelelő méretű csomagokra bontja az üzenetet. Minden csomag információt tartalmaz arra nézve, hogy hová kell küldeni. A csomagok lejjebb kerülnek a hálózati réteghez, amely meghatározza az útvonalat, majd az adatkapcsolati és a fizikai réteg segítségével kiadja azokat a hálózatra. A célállomáson a folyamat fordítottja történik: az adatokat a vevő oldal fizikai és adatkapcsolati rétegén keresztül a hálózati réteg fogadja. A szállítási réteg a csomagokat megfelelő sorrendben összeállítja, a megjelenítési réteg pedig dekódolja az alkalmazási réteghez forduló programok számára. Egy ilyen kommunikációt úgy lehet elképzelni, hogy az adatok az egyik oldalon a protokoll-verem aljára (fizikai réteg) kerülnek, ott kijutnak a hálózatra, majd a másik oldalon a fizikai rétegen keresztül bejutnak a protokoll-verembe, és fel egészen az alkalmazói programokhoz. Mindebből a felhasználó nem vesz észre semmit, ő ezt úgy látja, hogy az adó oldal alkalmazási rétege kommunikál a vevő oldal alkalmazási rétegével.