4. fejezet: Adatkapcsolati protokollok

 

 

A protokollok feladata egy összeállított keret átvitele két csomópont között. Az adatokat a hálózati rétegtõl kapja az adatkapcsolati réteg, és az általa összeállított információcsomagokat, vagy más néven kereteket átadja a fizikai rétegnek, ami bitenként küldi át a fizikai közegen.

A keretek átvitele két csomópont között elsõ gondolatra egyszerûnek látszik, de az csak a látszat, hiszen az ADÓ és VEVÕ tulajdonságai, a keretek adatútját jelentõ csatorna minõsége, a váratlan eseményekre való felkészülés mind igényeket támaszt a protokollal szemben, ami ezért változó bonyolultságú lehet.

 

73. ábra: Információk a rétegekben

Mivel nincs olyan eljárás amely folyamatos tetszõleges bitfolyamban a hibát képes jelezni, az átküldés hibátlanságát valahogy ellenõrizni kell, ezért a bitfolyamot keretekké kell tördelni, és mindegyik keretet egy ellenõrzõ összeggel kell kiegészíteni. A keret megérkezése után ez az ellenõrzõ összeg a vételi oldalon a vett adatokból is kiszámításra kerül, és ha nem egyezik meg a küldõ által számítottal, akkor a keretet a vevõ eldobja, és a küldõnek ismételten el kell küldenie.

A bitfolyam átvitele bár bitenként történik, azonban sokszor célszerûbb a bitcsoportos átvitelt alkalmazni. A bitcsoportok bár tetszõlegesek lehetnek, de legtöbbször az ASCII kódolású karakter kódolást alkalmazzuk. Ilyenkor az átvitel során mindig a egész számú karaktert viszünk át, azaz az átvitt információ alapegysége a karakter.

Ez a karakterorientált átvitel (szöveges információ átvitele esetén nem is rossz választás.). Amennyiben a bitfolyam bitjeit bitenként értelmezzük bitorientált átvitelrõl beszélünk, ami általános információ átvitelekor rugalmasabb megoldás.

Elsõként a keretek képzésérõl, majd a hibakezelésrõl írunk, majd a különféle protokollokat mutatjuk be.

Keretek képzése

A bitfolyam keretekké tördelésére több módszer használatos:

Karakterszámláló módszer: a keret fejlécében megadjuk a keretben lévõ karakterek számát. Ez a VEVÕ oldalán meghatározhatóvá teszi a keret végét.

Kezdõ és végkarakterek alkalmazása karakterbeszúrással: az elõzõ módszernél a keret karaktereinek vételénél egy számlálót is folyamatosan kell egyesével csökkenteni (dekrementálni), amely kezdeti értékét is a keretbõl töltjük fel. Amikor a számláló értéke nulla, akkor értük el a keret végét. Jobb megoldás az ha egy speciális karaktersorozattal jelöljük a keret kezdetét és végét. Szokásos megoldás a DLE STX karakterkettõssel jelezni a keret kezdetét és DLE ETX-el a keret végét. Ezek speciális, az ASCII kódtáblában megtalálható karakterek, és keret adatrészében lévõ esetleges szövegekben nem fordulnak elõ. Más a helyzet, ha karakteralapú módszerrel bináris adatokat (pl. egy programkódot) kívánunk átvinni. Ilyenkor, mivel bármilyen bináris bitcsoport elõfordulhat, az adatmezõben megjelenhet a fenti két karakterkombináció, és ez hibás kerethatárt jelez. A megoldás: az ADÓ a kert összeállításakor az adatmezõben megjelenõ minden DLE kód után, azonnal beszúr még egy DLE karaktert. A VEVÕ pedig, ha a DLE karakter vétele után ismét DLE következik, egyszerûen a második DLE-t eldobja.

A hálózati réteg által küldött üzenet: 

I T T E Z DLE V O L T

Az ADÓ adatkapcsolati réteg keretképzése és karakter beszúrása: 

DLE STX I T T E Z DLE DLE V O L T DLE ETX

Az VEVÕ adatkapcsolati rétege leválasztja a kettõzött beszúrt karaktert: 

DLE STX I T T E Z DLE V O L T DLE ETX

A VEVÕ hálózati rétegének átadott üzenet: 

I T T E Z DLE V O L T

 

Kezdõ és végjelzõk bitbeszúrással: ezt a módszert a rugalmasabb bitorientált átvitelnél használják. Minden keret egy speciális (a gyakorlatban legtöbbször) 01111110 bitmintával kezdõdik és végzõdik. Ha az ADÓ öt egymást követõ 1-est tartalmazó mintát talál az adatmezõben, akkor egy 0 bitet szúr be utána. A VEVÕ a másik oldalon pedig ezt a beszúrt bitet az öt egymás utáni 1-es bit érzékelése után kiveszi a bitfolyamból.

A hálózati réteg által küldött üzenet:  

11111111110111

Az ADÓ adatkapcsolati réteg keretképzése és bitbeszúrása: 

01111110 1111101111100111 01111110

Az VEVÕ adatkapcsolati rétege leválasztja a beszúrt biteket: 

01111110 11111111110111 01111110

A VEVÕ hálózati rétegének átadott üzenet: 

11111111110111

Ha a 0 és 1 bitek kódolásán kívül még létezik nem használt kód, ez a keretképzésre felhasználható. A következõ ábrán az információt egy bit átvitelének közepén lévõ átmenet (állapotváltás) hordozza. Mivel az állapotváltás hiánya nem tartozik a kódoláshoz, ezért ez felhasználható a keret kezdetének és végének a jelzésére. Speciális információ jelzésére használható még az RS232C soros szabvány brake jelzése is. Ez azt jelenti, hogy az eredetileg MARK állapotú vonalat nem csak a START bit, és azt követõ bitcsoport átvitel idejére tartjuk SPACE állapotban, hanem olyan hosszú ideig, hogy az egyértelmûen külön állapotnak legyen tekinthetõ.

 

74. ábra: Keretezés nem használt állapottal

Hibakezelés

Az adatátvitel és a kommunikáció fontos kérdése az átvitel során fellépõ hibák kezelése. A rétegfelosztást figyelembe véve ezt az alsó három rétegben kell megoldani.

Az elsõ hibakezelést a fizikai rétegben, a bitek és karakterek átvitelénél kell megoldani. A vonalakon fellépõ hibákat különbözõ fizikai jelenségek okozzák: termikus zaj, a vonalakat kapcsoló berendezések impulzus zaja, a légköri jelenségek (villámlás) okozta zajok. A zajok idõtartamából következõen lehetnek egyedi és csoportos bithibák. A gyakoribb esetben a hibák fennállási ideje általában egy bit átviteli idejének a többszöröse, ezért ezek a hibák csoportosan, hibacsomók formájában jelentkeznek. Mivel az adatátvitel blokkos (keretes) formában történik, ezért az eredmény egy-egy blokk tönkremenése.

Egyedi bithibák kezelésére a hibajavító (error correcting codes - ECC) és hibajelzõ kódok (error detecting codes) alkalmazása ad lehetõséget. Mindkét esetben az adatblokkokat redundanciával küldik, hogy a vevõ az esetleges hiba tényét felfedezhesse (hibajelzés) illetve megállapíthassa hogy minek kellett volna jönnie (hibajavítás).

A redundáns kódok alkalmazásakor a bitcsoportot alkotó eredetileg m bites kódot r darab bittel egészítik ki, így a redundáns bitcsoport aminek általános elnevezése kódszó n=m+r bitbõl fog állni.

Két tetszõleges kódszót megadva, mindig megállapítható, hogy hány bitben különböznek egymástól: a két szó kizáró vagy (XOR) kapcsolata által adott eredményben az 1-esek száma adja a különbséget, és ezt szokták a két kódszó Hamming távolságának nevezni.

Ennek az a jelentõsége, hogy ha két kódszó k Hamming távolságú, akkor az egyik a másikba k darab egyedi hibával konvertálódhat át.

Egy teljes kódszó rendszer Hamming távolságát úgy határozzuk meg, hogy képezzük minden lehetséges kódszó pár közötti Hamming távolságot, és ezek közül a legkisebb lesz az eredmény.

A paritásvizsgálat során is olyan kódszavakat generálunk, amelyek hossza eggyel nagyobb mint az eredeti kódszó. Ezért a Hamming távolságuk 1, és egyszeres bithibák kimutatására alkalmasak.

Ha egy kódszavakból álló blokkhoz szavanként egyetlen paritásbitet adunk, akkor csoportos hiba esetén a hibajelzés valószínûsége csak 0.5 lesz (pl. a kódszóban lévõ valamelyik két bit ellentétére változik, vagy egyszerre kettõ azonos módon változik).

A hibajelzés valószínûsége olyan módon növelhetõ, hogy a blokkot n*k elemû mátrixnak tekintjük, ahol n a paritásbittel kiegészített kódszó hossza, és k a blokkban lévõ kódszavak száma. A paritásbitet oszloponként is kiszámítjuk, és a mátrix utolsó soraként azt is elküldjük. A vett blokkot a vevõ mindkét paritás szerint ellenõrzi. A módszer egyetlen n bites csoporthiba észlelésére képes, mert oszloponként 1 bit változik csak.

 

CRC - Cyclic Redundancy Check

Csoportos bithibák esetén inkább egy másik módszert használnak, Ez a hibavédelmi eljárás úgy mûködik, hogy egy keretnyi adatot egy elõre meghatározott bitsorozattal “elosztunk”, és a “maradékot” a keret részeként továbbítjuk. A vevõ oldalon ugyanezt az osztást végezzük el, és ha ez a keret részeként átküldött maradékkal egyezik, akkor hibátlannak fogadjuk el a keretet. A módszer részletezésétõl helyhiány miatt eltekintünk.

Három szabványos bitsorozat terjedt el:

CRC-12 6 bites karakterek átvitelekor használt

CRC-16 8 bites karakterek átvitelekor használt

CRC-CCITT 8 bites karakterek átvitelekor használt

Az olyan 16 bites ellenõrzõ összeg, amit a az utóbbi két módszer alapján állítunk elõ, észleli az összes egyes és kettõs hibát, az összes páratlan hibás bitet tartalmazó hibát, az összes 16 vagy ennél rövidebb csoporthibát, a 17 bites csoporthibák 99.997%-át, valamint a 18 bites és annál hosszabb csoporthibák 99.998%-át. [1]

z

 A következõkben a röviden az ADÓ és VEVÕ közti keretek segítségével megvalósított adatkapcsolati protokollokat mutatjuk be. Az adatkapcsolati réteg tördeli keretekké a bitfolyamot, és látja el fejrésszel, amelyet a VEVÕ oldali adatkapcsolati réteg távolít el, és állítja vissza a bitfolyamot. A hálózati és adatkapcsolati réteg teljes elkülönítése érdekében a hálózati rétegnek a keretekre tördelésrõl, annak fejléccel történõ ellátásáról nincs információja.

  


Ábrajegyzék

Bevezetés

1.fejezet: A hálózatok célja, alkalmazása, alapfogalmak

2.fejezet: Fizikai átviteli jellemzõk és módszerek

3.fejezet: Közeg-hozzáférési módszerek

4.fejezet: Adatkapcsolati protokollok folytatás: Korlátozás nélküli egyirányú (szimplex) protokoll, Egyirányú "megáll és vár" protokoll, Egyirányú összetett protokoll, Kétirányú protokollok, Egybites csúszóablakos protokoll, Visszalépés n-el technikájú protokoll, Szelektív ismétlõ protokoll, CCITT V.41-es ajánlása, IBM BISYNC, HDLC, Ellenõrzõ kérdések

5.fejezet: Hálózati réteg

6.fejezet: A felsõbb rétegek

7.fejezet: Lokális hálózatok

8.fejezet: A TCP/IP protokoll és az Internet

9. fejezet: Szótár

Irodalomjegyzék

Tárgymutató