2017. június 1., csütörtök

Alkalmazások kommunikációja az Ethernettel


Bár az Ethernet szabványok garantálják a különbözõ Ethernet-eszközök problémamentes interoperábilitását egymással, azonban nem egységesítik a szóban forgó eszközök másik irányba, az alkalmazások és magasabb szintû protokollok felé történõ illesztését. (Megj.: nem is lenne szerencsés, ha a szabvány erre is kiterjedne.)
 
Ez tehát azt jelenti, hogy pl. a különbözõ gyártók által elõállított lapkakészletekre épülõ Ethernet-kártyákat különbözõ módon kell programozni, ami lehetetlenné teszi az alkalmazások számára a kártyák közvetlen vezérlését. Ugyanakkor ez utóbbi megoldás meglehetõsen szerencsétlen lenne, hiszen lehetetlenné tenné az Ethernet kártya, mint osztott erõforrás felhasználását, mert nem lenne mód több program párhuzamos mûködésének biztosítására (tehát pl. ugyanazon a gépen nem futhatna egy Novell IPX protokollt használó kliens, és egy ettõl független, mondjuk Microsoft TCP/IP protocol stack).
 
A probléma megoldása azon alapul, hogy a hálózati kártya kezelését egyetlen, független szoftver-komponensre (az ún. meghajtó-programra) kell bízni, amelynek azonban gondoskodnia kell az erõforrás különbözõ folyamatok közti megosztásáról is: a hozzáférések szinkronizálásáról, a beérkezett csomagok szétosztásáról, stb. A meghajtó-programot maga a hálózati eszköz gyártója készíti el és mellékeli berendezéséhez, ezáltal lehetõvé téve azon a különbözõ hálózati alkalmazások futtatását.
 
A szóban forgó technikai megvalósítására számos gyártó jó néhány specifikációt dolgozott ki (pl. NDIS, ODI, stb.), melyek technikai megoldásai némely esetekben alapvetõen eltértek, de közös jellemzõjük a fent felvázolt erõforrás-megosztási technika valamilyen szintû megvalósítása. Sajnos ezen megoldások legnagyobb részében (szerzõi jogi értelemben) védett megoldásokat (is) alkalmaztak, amelyek eleve lehetetlenné tették az interfész használatát külsõ programok által, másrészt elsõsorban az illetõ gyártó egyedi hálózati szoftvereit szolgálták ki, és általában véve nem voltak elegendõen rugalmasak az egyre gyarapodó és egyre sokrétûbbé váló hálózati alkalmazások számára.
 
Adott körülmények között nem csoda, hogy a legnépszerûbbé és legelterjedtebbé egy olyan specifikáció vált, amelynek megalkotásakor pont, hogy ezen egyedi alkalmazások igényeit vették figyelembe, és amelyet szerzõi szabadon hozzáférhetõvé és felhasználhatóvá tettek bárki számára. Ez az FTP Software által kidolgozott “Packet Driver Specification” volt.
 
A packet driver specifikáció
 
Bár a szabványt eredetileg az FTP Software is saját, PC/TCP nevû hálózati szoftvercsomagja számára dolgozta ki, azonban nagyon okosan nem ragadt le annak igényeinél, hanem egy teljesen általános célú interfészt alkotott meg. A specifikáció olyan jól sikeredett, hogy minden idõk legelterjedtebb és a programozók körében legnépszerûbb alacsony szintû DOS-os hálózati interfészévé vált.
 
A specifikáció megjelenésekor még kénytelenek voltak lelkes “amatõrök” elkészíteni a különbözõ (akkor még viszonylag alacsony számú) meglévõ hálózati kártyákhoz a megfelelõ meghajtóprogramokat, az idõ múlásával azonban kõkemény követelménnyé vált az újonnan megjelenõ kártyákkal szemben, hogy a legújabb Windows és *nix verziókhoz készült meghajtók mellett a kártyához készült packet driver program is ott "csücsüljön" az eszközhöz mellékelt lemezen.
 
A siker kulcsa az interfész technikai és morális értelemben vett nyíltságában rejlett: mindenki számára könnyûszerrel hozzáférhetõ, és ugyanilyen könnyen használható megoldást nyújtott a hálózati eszközök az adatkapcsolati réteg szintjén történõ kezelésére.
 
A mûködési elv
 
A packet driver specifikáció lehetõvé teszi, hogy egyetlen hálózati kártyát több alkalmazás is használjon egyidejûleg, pontosabban, hogy azok az eszközön keresztül zajló teljes forgalmat azok felosszák egymás között. A packet driver a tényleges fizikai átviteli réteg egyedi jellemzõit elfedve, egy, a médiatípusra általánosságban jellemzõ funkciókat szolgáltató interfészt bocsát az alkalmazások rendelkezésére, aminek köszönhetõen azok függetlenné válnak a ténylegesen alkalmazott hálózati eszköztõl és módosítás nélküli futásra képesek bármilyen, azonos karakterisztikákkal rendelkezõ (vagy azt emulálni képes) másik eszközön. Ez egyben azonban azt is jelenti, hogy – tekintve, hogy az absztrakció az adatkapcsolati réteg szintjén valósul meg – az alkalmazások továbbra is erõsen függenek a fizikai átviteli réteg, az alkalmazott hálózati média jellemzõitõl, és a különbözõ hálózati architektúrák számukra nem átjárhatóak. (Kivételt képez, ha egy adott hálózati architektúrán könnyûszerrel emulálható egy másik architektúra, hiszen ilyenkor a megfelelõ emulációt biztosító packet driver segítségével a probléma áthidalható.) A specifikáció az egymás között csereszabatos hálózati eszközöket (esetlegesen architektúrákat) az osztály (class) fogalmával illeti. Az azonos karakterisztikájú (csereszabatos) eszközök egyetlen osztályba kerülnek besorolásra (pl. Class 1 eszközök a DIX Ethernet szabvány szerint készült adapterek), melyeken belül a típus (type) azonosítója különbözteti meg az egyes modelleket (pl. Western Digital WD8003-as adapterének típus-azonosítója a 14).
 
A csomagok szétosztása – az alkalmazott alacsonyabb szintû hálózati rétegtõl függõen – a standard csomag-típus, vagy speciális, a csomagtípust közvetve meghatározó szekvenciák, az ún. service access point-ok alapján történik meg.
 
Funkciók
 
A packet driver által nyújtott funkciók a mûködési mechanizmus alapján alapvetõen két kategóriába sorolhatók. Az elsõ kategóriába tartoznak azok a funkciók, amelyekkel az alkalmazás adott típusú csomagok a szétosztás (demultiplexing v. dispatching) során hozzá történõ irányítását kéri, valamint ezt a kérelmet törli, illetve amely funkciókkal az alkalmazás maga kérheti egy adott csomag elküldését. A másik csoportot azok a funkciók alkotják, amelyekkel a hálózati interfészrõl ill. magáról az illesztõprogramról tud az alkalmazás információkat, statisztikákat begyûjteni ill. néhány paraméterét állítani.
 
Maga a specifikáció a definiált funkciókat egy másik szempont alapján is csoportosítja. Ez alapján a funkciók összesen három kategóriába: az alap (basic), kiterjesztett (extended) és nagyteljesítményû (high-performance) csoportba kerülnek besorolásra. Az alap-funkciókat minden a specifikációnak megfelelni kívánó illesztõnek támogatnia kell (pl. ide tartoznak a csomagok fogadásával és küldésével kapcsolatos funkciók), míg a másik két kategóriába sorolt funkciók implementálása opcionálisnak tekinthetõ (egymástól függetlenül).
 
A kiterjesztett funkciókat is implementáló illesztõk statisztikai információkat is nyújtanak az alkalmazások számára és egyéb, ritkán alkalmazott funkciókat (pl. multicast) is rendelkezésükre bocsátanak. A nagyteljesítményû kategóriába sorolt, aszinkron lefutású funkciókkal rendelkezõ meghajtók pedig értelemszerûen elõnyösen befolyásolhatják az alkalmazások teljesítményét.
 
A programozói interfész
 
A packet driverek funkciói a PC-s világban megszokott módon, szoftver megszakításokon keresztül érhetõk el. A specifikáció szerint egy adott interfészhez (adapterhez) tartozó driver a 0x60-0x80 tartományban bármely tetszõleges (szabad) szoftver-megszakítást használhatja. (Az alkalmazni kívánt megszakítás-vektor számát általában a meghajtóprogram betöltésekor a parancssorban meg lehet adni.)
 
Az érvényes packet driver megszakításokat (és így az elérhetõ interfészeket) az alkalmazás egy speciális mechanizmus segítségével térképezheti fel. A detektálás során az alkalmazásnak sorra kell vennie a fent megadott intervallumban a megszakítás-vektorokat és a megszakítás-kezelõk címeit a vektor-táblázatból kiolvasva, meg kell vizsgálnia az azt követõ 12 bájtot. Amennyiben ebben a vizsgált bájtsorozat tartalmazza a “PKT DRVR” karaktersort, úgy a vektor érvényes packet driver megszakítási vektornak tekintendõ és ennek megfelelõen biztonságosan hívható.
 

Nincsenek megjegyzések:

Megjegyzés küldése