4. fejezet: Ellenõrzõ kérdések és válaszok 1 - 10
1. Mi a csomag és keret közötti különbség ?
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.
2. Milyen módszereket ismer egy bitfolyam keretekké tördelésére ?
3. Ismertesse a karakter-beszúrásos módszer lényegé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
4. Ismertesse a bitbeszúrásos módszer lényegé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
A 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õ.
Keretezés nem használt állapottal
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.
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.
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:
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.
7. Ismertesse az egyirányú "megáll és vár" protokollt !
Egyirányú "megáll és vár" protokoll blokkvázlata
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.
8. Ismertesse az egyirányú összetett protokollt !
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.
Egyirányú összetett protokoll blokkvázlata
9. Miért elõnyös a kétirányú protokollok használata ? Mi az a piggy-back technika?
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.
Kétirányú protokoll
10. Mi a csúszóablakos protokoll lényege ?
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.
Csúszóablakos protokoll
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 (recieving 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.
4. fejezet: Ellenõrzõ kérdések és válaszok 11 - 20
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
8.fejezet: A TCP/IP protokoll és az Internet