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ó