Közeg-hozzáférési eljárások
1. Véletlen átvitel-vezérlés
Mindegyik állomás figyeli a csatornát: ha szabad, akkor az adás idejére kisajátítja. A módszer nevében szereplõ véletlen kifejezés döntõ jelentõségû: mivel nincs külön eljárás az adási jog megadására, ezért elvileg nem lehet felsõ idõkorlátot adni az üzenettovábbítás idõbeli bekövetkezésére.
A módszer angol elnevezése: Carrier Sense Multiple Access with Collision Detection =CSMA/CD. Ennél a módszernél, mielõtt egy állomás adatokat küldene, elõször “belehallgat” a csatornába, hogy megtudja, hogy van-e éppen olyan állomás, amelyik használja a csatornát. Ha a csatorna “csendes”, azaz egyik állomás sem használja, a “hallgatódzó” állomás elküldi az üzenetét. A vivõérzékelés (carrier sense) jelenti azt, hogy az állomás adás elõtt belehallgat a csatornába. Az állomás által küldött üzenet a csatornán keresztül minden állomáshoz eljut, és véve az üzenetet a bennfoglalt cím alapján eldöntheti hogy az neki szólt (és ilyenkor feldolgozza), vagy pedig nem (és akkor eldobja).
Ennél a módszernél természetesen elõfordulhat olyan eset, amikor egyszerre két vagy több állomás akarja használni a közeget. Az adás közben — mivel közben a csatornán lévõ üzenetet veszi — el tudja dönteni, hogy az adott és a vett üzenetfolyam egyforma-e. Ha ezek különbözõk, akkor azt jelenti, hogy valaki más is “beszél”, azaz a küldött üzenet hibás, sérült. Ezt ütközésnek hívják, és ilyenkor az állomás megszakítja az üzenetküldést.
Az ütközés miatt kudarcot vallott állomások mindegyike az újabb adási kísérlet elõtt bizonyos, véletlenszerûen megválasztott ideig várakozik. Ezek az idõk a véletlenszerûség miatt eltérõk, és a versengõ állomások következõ hozzáférési kísérlete során egy, a legrövidebb várakozási idejû fog tudni adni, mivel a többiek a várakozási idejük leteltével adás elõtt a csatornába belehallgatva azt már foglaltnak fogják érzékelni. Az e protokoll szerint mûködõ állomások a következõ három állapot valamelyikében lehetnek: versengés, átvitel, és tétlen állapot. Végiggondolva az eljárást, nyilvánvaló, hogy gyér forgalom esetén a közeghozzáférés nagyon gyors, mivel kevés állomás kíván a csatornán adni. Nagy hálózati forgalom esetén az átvitel lelassul, mivel a nagy csatorna terhelés miatt gyakoriak lesznek az ütközések. A széles körben elterjedt Ethernet hálózat ezt a módszert használja, és részletesebben a LAN-okkal foglalkozó fejezetben — mint az IEEE 802.3 szabvány — írunk róla.
1. 2. Réselt gyûrû (slotted ring)
A gyûrûn felfûzött állomások rés-eknek elnevezett rögzített hosszúságú kereteket adnak körbe. Minden résben van egy jelzõ (marker) amelyik jelzi a rés foglaltságát. Mivel a rés hossza állandó, az állomásnak az üzeneteit akkora darabokra kell vágnia, hogy azok elférjenek a résben (az állomáscímekkel, és egyéb kiegészítõ információval együtt.) Ha egy állomáshoz egy nem foglalt (üres) rés érkezik, akkor az elhelyezi benne a saját adatait, és továbbadja az immár foglalt keretet. Természetesen az adatot elhelyezõ állomásnak a feladata a visszaérkezett keret kiürítése, azaz a foglaltságának a megszüntetése. Ha átviteli, vagy egyéb hibák miatt (pl. az állomás elromlik) ez nem történik meg, akkor ez a rés foglaltan tovább kering a gyûrûben. Ezért kijelölnek egy állomást, amely felügyelõi feladatot is ellát: ez figyeli, hogy van-e olyan rés, amely a gyûrûben nem jut alaphelyzetbe, és ha ilyen van, egy idõ múlva eltávolítja a gyûrûbõl. Mivel önmagában a közeg nem biztosítja a rések megfelelõ lépkedéséhez szükséges késleltetést, ezért az állomásokon (és így a gyûrûn) a bitek átvitele léptetõregiszterek segítségével van lassítva.
1. 3. Regiszter beszúrásos gyûrû (register insertion ring)
A gyûrû topológiájú hálózatoknál a másik alkalmazott eljárás a léptetõregiszter késleltetõ funkcióján túl, annak tárolási képességét is kihasználja. A hálózati illesztõben két regiszter: egy léptetõ- (shift-) és egy tároló- regiszter található.
A gyûrû indulásakor a mutató a léptetõ regiszter kezdõ pozíciójára mutat. Ahogy jönnek a bitek a hálózatról, a pointert mindig bitenként balra lépteti, azaz a gyûrûben lévõ biteket tárolja. Közben a keretben lévõ címet a beérkezett bitekbõl megállapítja.
Ha nem az állomásnak szól, akkor a kapcsolón keresztül kezdi kiléptetni a biteket, miközben az újabb érkezõ bitek a mutató által jelölt helyre íródnak, amely a léptetés miatt mindig felszabadul. Ha a keret utolsó bitjei is beérkezett, akkor a maradékot még kilépteti és mutató ismét a kezdõ pozícióba kerül.
Ha a keret az állomásnak szólt, akkor a kapcsoló 2-es pozícióba kerülve nem engedi a keret kijutását, azaz kivonja a keretet a gyûrûbõl.
Kivitel esetén az állomás által összeállított keret a KIMENETI TÁROLÓ REGISZTER-ben van. Kivitel csak akkor lehetséges, ha a az elõzõleg vett, és továbbadandó keret utolsó bitjét is már kitolta a BE-KIMENETI LÉPTETÕ REGISZTER-bõl a gyûrûre, és a regiszterben elegendõ hely van a kimeneti keret fogadására. Csak ekkor kerül a kimeneti kapcsoló a 3-as pozícióba, és kerül a regiszter tartalma bitenként a gyûrûre, a bemenettel szinkronban. Az új bemenet eközben gyûlik a felsõ regiszterben. Ha a kimeneti tároló regiszter kiürült, a kimeneti kapcsoló ismét az 1-es helyzetbe billen, folytatva a vett bitek küldését.
A módszer elõnye, hogy a gyûrû kisajátítást megakadályozza. Ha csak egy állomás aktív, akkor azonnal szinte állandóan adhat, ahogy ismét feltöltötte a kimeneti regiszterét. Ha azonban más állomás is használja a gyûrût, akkor a keretének elküldése után valószínûleg nem küldhet újabbat, mert a be-kimeneti regiszterében nem lesz elég hely.
2. Osztott átvitel vezérlés
Lényegében minden állomás a közeghez való vezérlés funkcióját is betölti, és ez a szerep váltakozva továbbadódik.
2. 1. Vezérjeles gyûrû (Token Ring)
Fizikailag gyûrû topológiájú hálózatok esetén — mivel lényegében páronként pont-pont összeköttetés valósul meg — a leggyakrabban használt hozzáférési módszer a vezérjel továbbításos eljárás, amelyben egy ún. vezérjel (token) halad körben a gyûrû mentén állomásról állomásra. A vezérjel lényegében egy rövid üzenet, ami utal a gyûrû foglaltságára. Ha szabadot jelez, akkor a tokent vevõ állomás számára ez azt jelenti, hogy üzenetet küldhet. A tokent foglaltra állítja és üzenettel együtt küldi tovább, vagy más megoldásként kivonja a gyûrûbõl. Az üzenet a gyûrûn halad körben állomásról állomásra.
Az üzenetet az állomások veszik, megvizsgálják hogy nekik szól-e, majd továbbadják. Amikor a gyûrûben az üzenet visszaér az elküldõ állomáshoz, akkor kivonja az üzenetét a gyûrûbõl, a tokent szabadra állítja, és továbbküldi az immár szabadot jelzõ vezérjelet más állomás számára.
Elképzelhetõ, hogy valamilyen hiba miatt egy üzenet nem kerül kivonásra. A leblokkolás megakadályozására kijelölhetnek egy aktív felügyelõ állomást, amely az ilyen “árva” üzenetek figyeli és kivonja ezeket a hálózatból. A többi állomás ún. passzív felügyelõ, és az aktív felügyelõ meghibásodásakor egy másik veszi át a szerepét. A módszer elõnye a garantált, adott idõn belüli üzenetadás. Az állomások között prioritás is kialakítható, azaz a nagyobb prioritású állomások az alacsonyabb szintû állomások elõtt kaphatnak lehetõséget adataik továbbítására. Részletesebben a LAN-okkal foglalkozó fejezetben mint az IEEE 802.5 szabvány írunk róla.
2. 2. Vezérjeles sín (Token bus - Vezérjel busz)
A vezérjel továbbításos eljárást két különféle topológiájú (busz illetve gyûrû) hálózati szabványban is használják. Busz topológiájú hálózat esetén vezérjel busz szabványról beszélünk. A vezérjel busz az átviteli közeget úgy vezérli, hogy az állomásról állomásra történõ vezérjel (ún. token) továbbítása egy logikai gyûrût képez.
Amikor egy állomás vette a vezérjelet, lehetõséget kap arra hogy adatblokkokat továbbítson a számára biztosított maximális idõn belül. Ha nincs adandó adatblokkja, akkor a tokent azonnal továbbadja. Fontos megjegyezni, hogy bár az állomások kapcsolata gyûrû, fizikailag mégis felfûzött busz topológiájú. Részletesebben a LAN-okkal foglalkozó fejezetben mint az IEEE 802.4 szabvány írunk róla.
2. 3. Ütközést elkerülõ, vivõérzékeléses többszörös hozzáférés (CSMA/CA)
A módszer angol elnevezése: Carrier Sense Multiple Access with Collision Avoidance) =CSMA/CA. A véletlen közeghozzáférésekkel foglakozó részben már a módszer alapgondolatát megismertük: Itt minden állomás adást figyelve “belehallgat” a csatornába. Az adás befejezése után minden állomás egy adott ideig vár, amit egy logikai listában elfoglalt helyük határoz meg. Ha ez alatt az idõ alatt más állomás nem kezd adni, akkor elkezdi az adást.
3. Központosított átvitelvezérlés
Ezeknél az eljárásoknál mindig van egy kitüntetett egység, amelynek feladata az egyes állomások hálózathoz való hozzáférésének a vezérlése.
3. 1. Lekérdezéses (polling) eljárás
Ennél az eljárásnál a fõállomás (master), és a többi mellékállomás (slave vagy secondary) alkotja a hálózatot. A fõállomás sorban egymás után szólítja fel a mellékállomásokat üzenetek küldésére. Ha a megszólított állomásnak van üzenete, akkor elküldi a fõállomáshoz, amely az üzenetben lévõ cím alapján meghatározza, hogy melyik másik mellékállomásnak kell ezt elküldenie. Azaz a mellékállomások a fõállomás közvetítésével tudnak egymással kommunikálni. Ha a megszólított mellékállomásnak nincs üzennivalója, akkor negatív választ küld a lekérdezésre. Ezután a fõállomás egy elõre meghatározott prioritási sorrend alapján periodikusan folytatja a többi mellékállomás lekérdezését.
Az eljárás elõnyös, mert a rugalmas vezérlés lehetõséget biztosít arra hogy egy mellékállomás több üzenetet is küldjön egymás után, és a lekérdezési sorrendben többször szereptetve egyes mellékállomásokat, azok magasabb prioritást kapnak. Az eljárás sebezhetõ pontja a mellékállomásoknál bonyolultabb fõállomás meghibásodási lehetõsége, hiszen ilyenkor az egész hálózat megbénul. Mivel minden két mellékállomás közötti üzenetváltás kétszer megy át a hálózaton ez növeli az átviteli idõt.
A mûködési elv miatt elsõsorban csillag kialakítású hálózatoknál használják.
3. 2. Vonalkapcsolásos eljárás
Az elõbb ismertetett eljárásnál a fõállomás fõ funkciója a postás szerep volt. Mivel az elsõdleges feladat a mellékállomások egymással való kommunikációja, ez megoldható egy Ha ez lehetséges, akkor a két mellékállomást egy vonalon relék vagy elektronikus kapcsolók segítségével összeköti, és a két állomás üzeneteket válthat egymással a kialakított áramköri úton keresztül. Mikor az üzenetváltást befejezik, a kapcsolat megszûnik és a kapcsoló felszabadul. Mivel a központban több kapcsoló helyezkedik el, ezért egyszerre több vonalkapcsolat is mûködhet. Itt is igaz az, hogy az intelligens kapcsolóközpont meghibásodása az egész rendszer számára katasztrófát jelent.
3. 3. Idõosztásos többszörös hozzáférésû eljárás (TDMA)
Az angol rövidítés a Time Division Multiple Access kifejezés elsõ betûibõl alkotott betûszó. Elsõdlegesen busz felépítésû hálózatoknál alkalmazzák. Ennél az eljárásnál minden a buszhoz kapcsolódó mellékállomás, egy adott idõszeletben adhat. Ha nincs üzenete, akkor a szelet kihasználatlan marad.
Adatkapcsolati protokollok
1. Korlátozás nélküli egyirányú (szimplex) protokoll
Az elsõ vizsgált protokoll a lehetõ legegyszerûbb: az adatátviteli sebesség, a feldolgozás nincs korlátozva: amilyen sebességgel küldi az ADÓ a kereteket, a VEVÕ ugyanilyen sebességgel képes ezt venni. Ez a gyakorlatban azt jelenti, hogy az ADÓ és a VEVÕ hálózati rétege mindig készen áll, a feldolgozási idõ elhanyagolható, és a keretek esetleges tárolására szolgáló puffer kapacitás végtelen. Az adatkapcsolati rétegek közötti csatorna hibamentes, kerethiba, keretvesztés nem fordul elõ. Az átvitel egyirányú.
2. Egyirányú “megáll és vár” protokoll
A valóságban nagyon sok esetben a VEVÕ nem képes olyan sebességgel feldolgozni a kereteket, azaz valahogy az ADÓ-t le kell lassítani olyan mértékben hogy a VEVÕ küldött kereteket mindig fel tudja dolgozni. Ez csak egy módon lehetséges: informálni kell az adót arról, hogy mikor küldheti a következõ keretet, azaz a vétel és a feldolgozás tényét nyugtázni kell. Vagyis a protokoll megköveteli az ADÓ-tól, hogy egy keret elküldése után addig várjon, amíg a kis üres (nincs adat!!!) nyugtakeret meg nem érkezik. Ezt a protokollt szokták “megáll ás vár” (stop and wait) protokollnak nevezni.
Látható, hogy bár az adatforgalom szimplex, azért a keretek már különbözõ idõpontokban két irányban áramlanak, ezért fél-duplex csatorna kialakítást igényel a fizikai réteg vonatkozásában. A protokoll jól mûködik az adatkeretek átvitelekor, hiszen a VEVÕ csak akkor küld vissza nyugtát, ha a keret vétele helyes volt. Mi van azonban akkor, ha VEVÕ által küldött nyugtakeret sérül meg? Mivel nyugta nincs, az ADÓ egy bizonyos idõ múlva ismét elküldené a nem nyugtázott keretet, amit a VEVÕ ismételten venne, azaz a benne lévõ adatok megkettõzõdve kerülnének a hálózati réteghez. Ez sajnos súlyos hiba.
A VEVÕ-nek kell egy olyan módszert alkalmaznia, amely megkülönböztethetõvé teszi a számára az elõször látott kereteket az újraadásra kerültektõl.
3. Egyirányú összetett protokoll
Ennek egyszerû megoldása az, hogy az ADÓ egy számot helyez el minden elküldendõ keret fejrészébe, és ezáltal a VEVÕ eldöntheti, hogy elõször adott, vagy ismételt keretrõl van-e szó. Mivel a keretek és a nyugták egymás után vannak, ezért elegendõ 1 bittel jelezni az újraküldés tényét. Nézzük: a k-adik keretre (amelynek újraküldési bitje 0 volt, jelezve az elsõ küldést) a VEVÕ nyugtát küld, de az elvész. Az ADÓ mivel a k-adik keretet elküldte, de nem nyugtázták (legalábbis azt hiszi), egy adott idõzítés lejárta után ismételten elküldi a keretet, de már 1-es újraküldési bittel). A VEVÕ ezt véve, a bit alapján már tudja hogy ezt már vette, ezért nyugtát küld vissza az elveszett helyett, de a keretet eldobja.
4. Kétirányú protokollok
Az elõzõ esetekben az adatátvitel egyirányú volt, bár az utolsó két esetnél a nyugtázás miatt az ellenirányú átvitelre is szükség volt az ADÓ informálása miatt. A gyakorlatban az adatátvitel is a legtöbbször kétirányú, ezért célszerû ezt a kialakítást is megvizsgálni. A megoldás lehetne két különálló, ellentétes irányú adatcsatorna használata, de az a nyugtázás miatt valójában négy információs utat jelentene, ahol a nyugtacsatornák kihasználása kicsi lenne.
Jobb megoldás, ha mindkét irány számára ugyanazt a csatornát használjuk, hiszen az adatkereteket a nyugtakeretektõl a keret fejrészében elhelyezett jelzõ meg tudja különböztetni, és ez a keret vételekor azonosítható.
Egy egyszerû megoldással az átviendõ keretek számát csökkenthetjük: bármelyik irányba tartó adatkeretre ráültethetjük az elõzõ ellenirányú adatkeret nyugtáját. Ezt szokták ráültetési (piggy-back) technikának is hívni. Hogy egy nyugta akkor is visszajusson, ha éppen nincs visszafelé küldött adatkeret, célszerû egy adott idõzítés lejártakor a VEVÕ-nek önállóan útnak indítani. Persze, ha az adó eltérõ idõzítése miatt újra elküldi a keretet, akkor ez problémát jelent.Az eddigiekben feltételeztük hogy a csatornán mindig egy adatkeret, majd rá válaszul egy nyugtakeret halad. A valóságban a csatorna jobb kihasználását teszi lehetõvé, ha megengedjük, hogy a csatornán több keret is tartózkodhat. Az ezt lehetõvé eljárásokat csúszóablakos (sliding window) vagy forgóablakos protokolloknak nevezik. A könyvben az elsõ megnevezést fogjuk használni.
A protokollban minden egyes kimenõ keret egy 0-max (az ábrán:0-7) közötti sorszámot kap. A lényeg az, hogy a sorban elküldendõ keretek sorszámaiból egy aktualizált listát tart fenn az ADÓ. A listában szereplõ sorszámú keretek az adási ablakba (sending window) esnek. Az ADÓ adási ablakában az elküldött, de még nem nyugtázott keretek vannak. Mikor egy nyugta megérkezik az ablak alsó fele feljebb csúszik, lehetõvé téve újabb keret elküldését. Nem kell a kereteket egyenként nyugtázni, ha pl. az ADÓ az 1-es sorszámú keretre kap nyugtát, ez azt jelenti, hogy nyugtázott a 6,7,0,1 keret. (ld. ábra). Mivel a kereteket esetleg újra kell adni, ezért az ablakban lévõ kereteket ismételt adásra készen memória-pufferekben kell tartani. Az ADÓ ezenkívül az ablakban lévõ minden keret elküldésétõl eltelt idõt nyilván tartja, és ha ez egy értéknél (timeout) nagyobb, akkor újra adja.
A VEVÕ egy vételi ablakot (receiving window) tart fenn, amely az elfogadható keretek sorszámait tartalmazza. Bármelyik ablakon kívüli keret érkezésekor az eldobódik. Ha a k-adik keret érkezik, akkor rá a nyugta a következõ két feltétel teljesülése esetén lesz visszaküldve: 1. A k-adik keret még nem lett nyugtázva. 2. Minden keretet az elsõnek várt (az ábrán a 6.) és a k-adik között már vettünk.
5. Egybites csúszóablakos protokoll
Ez a legegyszerûbb ilyen jellegû protokoll. Hasonló a megáll-és-vár protokollhoz, de az átvitel mindkét irányban folyik, és az ellenirányú csomag hordozza az elõzõleg küldött nyugtáját. Legyen két állomás, A és B! Jelölések: küld, vesz, pl Avesz=A vesz. A keret jelölése: (sorszám, nyugta, az A vagy B által küldött adatcsomag jelölése). Mivel mindig csak akkor lehet új keretet küldeni, ha nyugtázva van az elõzõ, a sorszám és nyugta értéke csak 0 vagy 1 lehet.
A kezdi az adást, küldi B-nek a keretet: (itt az 1 nyugta csak azért van, hogy B “azt higgye” hogy az elõzõ küldése sikeres volt) Aküld(0,1,A0).
B veszi, és a nyugtát a saját keretével visszaküldi: Bvesz(0,1,A0), Bküld(0,0,B0)
A veszi B elsõ keretét és küldött kerete nyugtáját, és küldi az újabb keretet: Avesz(0,0,B0), Aküld(1,1,A1). A következõ ábrán összefoglalva:
A protokoll nagyon jól mûködik: Ha például A nem kapja meg pl. az A0-ra nyugtáját, azaz B (0,1,B0)-át küld, akkor ismét elküldi B-nek a (0,1,A0) keretet (mivel A nyugtázhatja a B0 keretet. Akár többször is küldheti (próbálkozhat), miközben B sorban adja a saját kereteit. A protokollt semmilyen elveszett keret, vagy a lejárt idõzítés miatt újraküldött keret nem készteti arra, hogy kettõzött keretet adjon tovább a hálózati rétegnek, vagy egy keretet kihagyjon. Azonban keretkettõzõdés lép fel, ha A és B egyszerre kezd adni. Ugyanis ehhez induláskor 1-es nyugtával kell elküldenie a saját keretét:
Aküld(0,1,A0) Bküld(0,1,B0), és a vétel:
Avesz(0,1,B0) Bvesz(0,1,A0) amit el is fogadnak.
Mivel mindkét vételben 1-es nyugta van a várt 0 helyett, mindkettõ újraküldi az elõzõ keretet: Aküld(0,0,A0) Bküld(0,0,B0), amelyeket mindkettõ vesz és továbbad.
Mind az ADÓ mind a VEVÕ számára egy elemes csúszóablak elegendõ: az ADÓ az ablakba 0-át ír mikor elküld egy 0 sorszámú keretet, és amíg nem kap ezzel egyezõ nyugtát, újra küldi. Ha megjön a nyugta, akkor 1-et ír az ablakba, és várja a nyugtát. A VEVÕ csúszóablaka kezdetben 0-át tartalmaz, azaz 0 sorszámot vár. Ha ilyen keretet kap nyugtázza, és az ablakba 1-es (várt) sorszámot ír.
6. Visszalépés n-el technikájú protokoll
Ha a keretek átviteli ideje hosszú, például mûholdas átvitel esetén, akkor nem jó az a megoldás, hogy újabb keretet, csak az elõzõ nyugtázása után indítunk. A megoldás az, hogy az ADÓ nem 1 hanem k darab keretet küld el nyugtázás nélkül. Az n. keret elküldése után kezdi várni a nyugtákat és folytatni az k+1,... keretek küldését. Az ilyen esetben a csúszóablak mérete k kell hogy legyen. Ezt a megoldást csõvonal-nak (pipelining) hívják, utalva arra a szemléletes képre, hogy a keretek egy csõbe haladnak, sorban egymás után.
Mi van azonban akkor, ha egy keret a sorban megsérül? Két megközelítés ismert: az egyik a címben már megnevezett visszalépés n-el (go back n) protokoll. Ennél a módszernél a VEVÕ, a hibás keret utáni kereteket nyugtázatlanul eldobja, kényszerítve az ADÓ-t az ismétlésre. Ez a stratégia 1 méretû vételi ablaknak felel meg. Zajos vonalak esetén ez a megoldás nagymértékben csökkenti az adatátviteli sebességet a sok újraküldés miatt.
7. Szelektív ismétlõ protokoll
A másik, csõvonal esetén használható általános hibakezelési eljárást szelektív ismétlésnek (selective repeat) hívják, és mûködése már az elõzõek és az elnevezése alapján már kitalálható: ennél a hibás keretet követõ összes jó keret tárolásra kerül. Amikor az ADÓ felfedezi, hogy volt hibás keret (nem kap nyugtát róla), akkor csak a hibást küldi újra. Ennél a protokollnál, mind az ADÓ mind a VEVÕ fenntart ablakot, a keretsorszámoknak. Az ADÓ ablaka 0-tól sorszmax-ig növekszik. A VEVÕ ablaka rögzített méretû, a megfelelõ mûködés érdekében 1-nél nagyobb.