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