660 likes | 789 Views
Adatkapcsolati réteg. Készítette: Schubert Tamás (BMF). Tartalom. Adatkapcsolati réteg (Data link layer) Adatátviteli alapok Aszinkron átvitel Szinkron átvitel Hiba érzékelés Adattömörítés Hiba vezérlés (Error control) Adatfolyam vezérlés (Flow control)
E N D
Adatkapcsolati réteg Készítette: Schubert Tamás (BMF) Adatkapcsolati réteg / 1
Tartalom Adatkapcsolati réteg (Data link layer) Adatátviteli alapok Aszinkron átvitel Szinkron átvitel Hiba érzékelés Adattömörítés Hiba vezérlés (Error control) Adatfolyam vezérlés (Flow control) Kapcsolat menedzsment (Link management) Adatkapcsolati protokollok (HDLC, LLC) Irodalom Adatkapcsolati réteg / 2
Adatkapcsolati réteg (Data link layer) • Az adatkapcsolati réteg feladata adatok átvitele valamilyen soros adatkapcsolaton. • Az átviteli vonal lehet: • vezetékes pont-pont fizikai áramkör (csavart érpár, koaxiális kábel, optikai szál), • vezeték nélküli kapcsolat (mikrohullám, stb.), • fizikai vagy logikai kapcsolat valamilyen kapcsolt hálózaton keresztül. • Az átviteli mód lehet: • aszinkron, • szinkron. • Az átvitelt vezérlő protokoll lehet: • karakter-orientált, • bit-orientált. • A magasabb hálózati rétegek számára nyújtott szolgáltatás lehet: • megbízhatatlan (best-try), kapcsolat nélküli, • megbízható (reliable), kapcsolat-orientált. Adatkapcsolati réteg / 3
Adatátviteli alapok • A feladat: digitális információ átvitele két eszköz (DTE) között. • Az eszközök távolsága széles határok között változik. • Az átvinni kívánt információ: karakter lánc, numerikus adat vagy egyéb binárisan kódolt információ. • Az átvitel mindig bit-sorosan történik a két eszköz között. • Az átviendő információ mellett egyéb vezérlő adatok átvitele is szükséges, amelyek • segítik a megbízható információátvitelt: hiba felismerés, javítás, adatvesztés és többszörös átvitel kiküszöbölése, • biztosítják a két kommunikáló eszköz szinkronizálását, • áthidalják a két kommunikáló eszköz sebessége közötti különbséget. • Az átviteli hibák soha nem érzékelhetők 100%-os biztonsággal. • A cél, hogy a nem észlelt átviteli hibák előfordulásának valószínűsége a lehető legalacsonyabb legyen. Adatkapcsolati réteg / 4
Adatátviteli alapok • Karakter kódok • A legelterjedtebb karakter kódok: • Extended Binary Coded Decimal Interchange Code (EBCDIC) • American Standard Code for Information Interchange (ASCII = ISO 645) • Az alfabetikus, numerikus és egyéb karaktereken kívül mindkét kód tartalmaz vezérlő karaktereket is (line feed, carriage return, form feed, file separator, start of text, synchronous idle, stb.) • Bináris adatok • A numerikus adatokat 8, 16, 32 vagy 64 bites bináris formában ábrázolják és továbbítják. • A 8 bit hosszúságú információ (byte vagy octet) lehet egy karakter 8 bites kódja, vagy egy hosszabb bináris adat egy komponense. Adatkapcsolati réteg / 5
Adatátviteli alapok • Bit-soros átvitel • A digitális adatokat az adtaátviteli médiumokon kizárólag bit-sorosan viszik át, így csak egy érpár, illetve két optikai szál szükséges két eszköz közötti kapcsolathoz. • Kommunikációs módok • Az adatátvitel irányára és egyidejűségére vonatkozó módok lehetnek: • Szimplex • Egyirányú. Például adatgyűjtés. • Fél duplex • Az eszközök felváltva vihetnek át adatokat. Az eszközöknek képesnek kell lenniük az irányváltásra. • Duplex • Kétirányú átvitel egyszerre is lehetséges, egymástól függetlenül. Adatkapcsolati réteg / 6
Adatátviteli alapok • Átviteli módok • Byte-ok illetve karakterek sorozatát kell átvinni bit-sorosan. • Általában 2 jelszintet különböztetnek meg a bit információ jelzésére. • A vevő készüléknek a vett jelsorozatból fel kell ismernie: • A bit cellák kezdetét • Az adatelemek (karakter vagy byte) elejét és végét • A teljes üzenet (keret) elejét és végét • Ennek megfelelően: • bit (órajel), • karakter vagy byte és • blokk vagy keret • szinkronizációt kell biztosítani. Adatkapcsolati réteg / 7
Adatátviteli alapok • Átviteli módok • A szinkronizáció alapvetően kétféleképpen valósítható meg attól függően, hogy az adó és a vevő órajele független (aszinkron) vagy szinkronizált (szinkron). • Aszinkron átvitel • A byte-ok, karakterek tetszőleges időközönként követik egymást, az adó és a vevő órajelét a byte-ok kezdetén kell szinkronizálni. • Szinkron átvitel • Az egész keretet egy összefüggő bit-folyamként továbbítják, az adó és a vevő órajelét a keret átvitele alatt szinkronban kell tartani. Adatkapcsolati réteg / 8
Átvitel iránya Átvitt elem Paritás bit Start bit 7/8 adat bit Stop bit(ek) lsb msb 1 vagy 2 stop bit 1 0 0 1 0 0 1 0 0 Új karakter kezdete Aszinkron átvitel Átviteli módok - Aszinkron átvitel Adatkapcsolati réteg / 9
Átviteli módok - Aszinkron átvitel • A start és a stop bitek polaritása különböző. Ez biztosítja, hogy legalább egy 1 0 1 átmenet van az egymást követő karakterek között. • Egy nyugalmi állapot után az első 1 0 átmenet jelzi a karakter kezdetét. • A vevő az órajelét a start bit időtartama alapján szinkronizálja. • Az átviteli sebességek szabványosak. A legelterjedtebben használtak: • 110, 300, 1200, 2400, 4800, 9600, 19200 • Karakterblokkok átvitelekor a blokk elejére és végére egy-egy kitüntetett (átvitelvezérlő) karaktert illesztenek. • Aszinkron átvitelt általában akkor használnak, amikor a karakterek nem meghatározott időközönként keletkeznek, vagy a karakterek átviteli sebessége viszonylag alacsony. • Ekkor elfogadható a szinkronizálást szolgáló bitek jelenléte a karakterekben, és a viszonylag durva bit szinkronizálási módszer alkalmazása. Adatkapcsolati réteg / 10
Átvitel iránya Átvitt keret 1 0 0 1 0 0 1 0 Idő Szinkron karakterek vagy byte-ok Keret-kezdet karakterek vagy byte-ok Keret-tartalom Keret-vége karakterek vagy byte-ok Szinkron karakterek vagy byte-ok Szinkron átvitel Átviteli módok - Szinkron átvitel Adatkapcsolati réteg / 11
Átviteli módok - Szinkron átvitel • Nagy adatblokkok és magasabb átviteli sebesség esetén szinkron átviteli módot használnak. • A 8 bit-es adatelemek között nincs késleltetés. • A vevő és az adó berendezés különböző szintű szinkronizációjához • Az átvitt bit-folyamot úgy kódolják, hogy a vevő bit-szinkronban legyen tartható. • Minden keretet egy vagy több kitüntetett byte vezet be, hogy a vevő biztonsággal felismerje a byte határokat (byte szinkronizáció). • Minden keret egy kitüntetett byte-pár határol, amelyek a keret szinkronizációt biztosítják. • A szinkronizációt biztosító byte-ok nem fordulhatnak elő a keret hasznos adatterületén. Ha mégis ilyen byte-okat kell átvinni, akkor ezt speciális kódolással teszik lehetővé. • A szinkron átvitel hatékonyabb az aszinkron átvitelnél, mivel nincs szükség byte-onként járulékos bitek (start, stop) használatára. Adatkapcsolati réteg / 12
Átviteli módok - Szinkron átvitel • Bit szinkronizáció • Olyan kódolást kell alkalmazni, hogy a vevő órajele szinkronban működjön az adó órajelével. • Két módszer használatos: • Az órajel időzítése az átvitt adatba van beágyazva, így onnan folyamatosan kinyerhető. • A vevő saját órajel generátorral rendelkezik, de ezt a vett jel alapján kell szinkronizálni. • Az előbbit vizsgáljuk részletesebben: Adatkapcsolati réteg / 13
1 0 0 1 1 1 0 1 Átviendő bit folyam Bipoláris kódolás Adó órajele Bipolárisan kódolt jel Vevőnél az adatból kivont órajel Vett adat 1 0 0 1 1 1 0 1 Átviendő bit folyam Manchester kódolás Adó órajele Manchester kódolt jel Vevőnél az adatból kivont órajel Vett adat Átviteli módok - Szinkron átvitel Adatkapcsolati réteg / 14
Átviteli módok - Szinkron átvitel Bit szinkronizáció Bipoláris kódolás A logikai „1”-t pozitív impulzus, logikai „0”-t negatív impulzus képviseli. Minden bit cella egyben az órajelet is tartalmazza. Mivel minden bit jelzése után a jel visszatér 0-ra, ezt a kódolást Return-to-Zero (RZ) kódolásnak is nevezik. Adatkapcsolati réteg / 15
Bit szinkronizáció Manchester kódolás „1” bit „0” bit 1 1 0 0 A logikai „1” 0 1 átmenettel, a logikai „0” 1 0 átmenettel van jelezve. Minden bit-időben van jelátmenet, így az órajel impulzus ebből előállítható. A kódolás hátránya, hogy egy-egy bit-időben két jelátmenet is lehetséges, így az igényelt sávszélesség megkétszereződik. A Manchester kódolás előnye, hogy a vevő AC csatolással (transzformátor) kapcsolódhat a vonalra. A vevő saját áramforrását használhatja, teljesen elszigetelve az adóétól. Átviteli módok - Szinkron átvitel Adatkapcsolati réteg / 16
Átviteli módok - Szinkron átvitel • Szinkron átviteli vezérlési sémák • Karakter-orientált • Bit-orientált • A két séma közti alapvető különbség, ahogyan a karakter (byte) és a keret szinkronizációt kezelik. • A karakter orientált vezérlési sémát kevésbé használják, mivel bináris adatok átvitelére nem hatékony, ráadásul a vezérlő karakterek kódja az alkalmazott karakter kód függvénye. • Részletesen a bit-orientált vezérlési sémát tárgyaljuk. Adatkapcsolati réteg / 17
Átviteli módok - Szinkron átvitel • Bit-orientált vezérlési séma: flag-ek használata • Elsősorban pont-pont kapcsolatban használják. • A keretet a ‘01111110’ bit-minta (flag) határolja. • A tétlen vonalon az adó a ‘01111111’ bit-mintát továbbítja. • Nyitó flag után a vevő a záró flag érkezéséig a bitsorozatot adatként dolgozza fel. • Az adat transzparencia miatt a keret tartalmi részében flag-minta nem fordulhat elő. • Ezt úgy biztosítják, hogy az adó minden 5 egymás utáni ‘1’ bit után automatikusan egy ‘0’ bit-et szúr be (zero bit insertion). • A keret természetesen hiba érzékelő kódot is tartalmazhat a záró flag előtt. Adatkapcsolati réteg / 18
Bit-orientált vezérlési séma: flag-ek használata Átvitel iránya 011111110111111101111110 0111111001111111 Tétlen vonal Nyitó flag Keret tartalom Záró flag Átvitel iránya 0111111011011001111101101111100-----1101111111 ‘0’ bit beszúrása Nyitó flag Záró flag Keret tartalom Átviteli módok - Szinkron átvitel Adatkapcsolati réteg / 19
Bit-orientált vezérlési séma: keret-kezdet határoló és hossz megadása • Néhány LAN-nál használják. • A bit szinkronizációt a ‘preamble’ bit-minta biztosítja, amely ‘10’ bit párok sorozatából áll. • A keret-kezdet határoló:‘10101011’. • A rögzített fej a címzett állomás címét tartalmazza. • A 2 byte-on tárolt hossz a tartalom mező byte-jainak számát jelzi. 101010--10 10101011 Keret tartalom Preamble Keret kezdet határoló Rögzített fej Hossz byte-ok Az előző mezőben megadott számú byte Rögzített láb Átviteli módok - Szinkron átvitel Adatkapcsolati réteg / 20
Hiba érzékelés • A lehető legnagyobb valószínűséggel kell érzékelni, hogy a vett információ hibát tartalmaz. • Ha a vevő hibát észlel, szükség van valamilyen mechanizmusra, amellyel a remélhetően hibamentes információt megkapja. • Ez kétféleképpen érhető el: • Hibajavítással • Az átvitt karakter vagy keret olyan redundáns információt tartalmaz, amelyből nemcsak a hiba jelenléte észlelhető, hanem a helye is. A hibás bit-ek invertálásával a hiba javítható. • Visszacsatolásos hiba kezeléssel • Az átvitt karakter vagy keret olyan redundáns információt tartalmaz, amelyből a hiba jelenléte észlelhető. Ezután a vevő a hibás keret újra átvitelével juthat a remélhetően hibamentes információhoz. • A hálózatok világában a visszacsatolásos módszer dominál, mivel a hibajavításhoz szükséges redundáns információ jelentősen megnöveli a továbbítandó adat mennyiségét. Adatkapcsolati réteg / 21
Hiba érzékelés • Visszacsatolásos hiba kezelés két részre osztható: • a megbízható hiba érzékelésre és • az újra átvitelt bonyolító vezérlő algoritmusokra (később tárgyaljuk) • A hiba érzékelés módszerei (az információelméletből ismert módszerek, ezért csak megemlítjük ezeket): • Paritás bit (parity) használata • Karakterenként (byte-onként) képzett páros vagy páratlan paritás bit. Páratlan számú bit-hibát jelez. • Ellenőrző összeg (block sum check) • A paritás ellenőrzést egészíti ki. Az adat byte-okat összeadják és az így kapott összeget a blokk végére illesztik. A vevő szintén kiszámolja a blokk összeget és összehasonlítja az átvitt blokk összeggel. Ez a módszer csak egy bites véletlen hibák érzékelésére alkalmas. • Ciklikus redundancia ellenőrzés (Cyclic redundancy check) • A blokkosan előforduló hibák észlelésére is alkalmas módszer. • 16 vagy 32 bites ellenőrző kód készül, amelyet az adó a blokk végén helyez el. A vevő újra számolja az ellenőrző kódot, majd összehasonlítja az átvitt ellenőrző kóddal. • Az ellenőrző kód az ún. polinomikus kódra épül. Adatkapcsolati réteg / 22
Adattömörítés • Az adattömörítéssel az adatátviteli idő és az átviteli költség csökkenthető. • Az adattömörítést gyakran az alkalmazói szinten elvégzik (file tömörítés), majd továbbítják a hálózaton vagy kapcsolt telefonvonalon modemek segítségével. • A tömörítést gyakran az adatkapcsolati rétegben dinamikusan végzik el. • Többféle adattömörítő algoritmust használnak. Intelligens modemek a tömörítő algoritmust az átviendő adatok típusának megfelelően adaptív módón választják ki. • Néhány tömörítő algoritmus: • Pakolt decimális (BCD) • Numerikus adatok karakteres ábrázolásakor használható. • Karakter elnyomás • Háromnál több egymásután következő azonos karaktert a karakter kódjával és darabszámával helyettesítenek. • Huffman kódolás • Az átviendő karakterek gyakorisága különböző. Nem rögzített hosszúságú kódot alkalmaznak, hanem a gyakrabban előforduló karaktereket esetén rövidebb kóddal ábrázolják, mint a ritkábban előfordulókat. Ezt a módszert statisztikai kódolásnak is nevezik. Adatkapcsolati réteg / 23
Adattömörítés • Az átviendő karakter fűzért (file-t) először analizálják, meghatározzák az egyes karakterek gyakoriságát. A kód meghatározása egy kiegyensúlyozatlan fa (Huffman kódfa) felépítésével történik. Az adatokat a továbbítás előtt a kódfa segítségével átkódolják. • A dekódoláshoz a vételi oldalon szükség van a kódfára is, ezért az adatok előtt ezt is továbbítani kell. File-ok átvitelénél ez nem jár különösebb hátránnyal, de folyamatos adatátvitelnél ez nem használható. • Dinamikus Huffman kódolás • Az adó és a vevő az átvitel közben dinamikusan építi a kódfát. Ha a soron következő karakter benne van a kódfában, akkor eszerint átkódolva továbbítják, ellenkező esetben az eredeti alakjában továbbítják. A kódfát mindkét esetben mindkét oldalon aktualizálják, és a további karaktereket már az aktualizált kódfa alapján kódolják. • Szöveg átvitele esetén a tömörítés mértéke jelentős, ezért ezt a tömörítési módszert számos kommunikációs alkalmazásban használják, mint például a V.32 modemekben. Adatkapcsolati réteg / 24
Hiba vezérlés (Error control) A hiba érzékelés módszereit korábban megismertük. Ezek alkalmazásával egy pont-pont kapcsolatban a vevő adott valószínűséggel megállapít-hatja hiba jelenlétét az átvitt bit-folyamban (keretben). Egyetlen bit-hiba esetén is az egész keretet el kell dobni. A keret elvesztését az alkalmazói programnak (vagy valamelyik közbenső protokollnak) kell észlelnie, és gondoskodnia kell a megszerzéséről. Az ilyen átvitelt best try transmission-nak vagy connectionless mode transmission-nak (kapcsolat nélküli átviteli mód) nevezzük. Ennek alternatívája a reliable transmission vagy connection-oriented transmission (kapcsolat orientált átviteli mód). Hiba észlelése esetén a kommunikáló feleknek meghatározott vezérlő eljárások segítségével biztosítaniuk kell a hibátlan üzenet továbbítást. A hibátlan üzenettovábbításon a nagy valószínűséggel hibamentes, ismétlődésmentes és helyes sorrendben érkező üzenettovábbítást értjük. A hibát a vevő jelezi az adónak, amely újraküldi a hibás üzenetet. A hibakezelésnek ezt a módját hiba vezérlésnek (error control) nevezzük. A hiba vezérlés más vezérlő mechanizmusokkal együtt alkotja az adatkapcsolati protokollt (data link control protocol). Adatkapcsolati réteg / 25
Hiba vezérlés • A vevő állomás megvizsgálja a bejövő keretet, hogy hibátlan-e, és egy rövid válasz üzenetet (nyugta-keretet) küld a feladó állomásnak, hogy nyugtázza a keret hibátlan megérkezését, vagy kérjen egy új példányt a hibásan vett keretről. • Ezt a hiba vezérlést automatikus ismétlés kérésnek (automatic repeat request= ARQ) nevezik. • Két változata van: • Tétlen (idle RQ) módú ismétlés kéréssel • Karakter-orientált átvitelnél használják. Az adó addig nem küld újabb keretet, amíg a vevő nem nyugtázza a keret megérkezését. Gyenge a kapcsolat kihasználtsága. Csak rövid távolság és alacsony átviteli sebesség esetén használható. • (Nem tárgyaljuk részletesen.) • Folyamatos (continuous RQ) módú ismétlés kéréssel • Az adó nem vár a vevő nyugtájára a következő keret küldéséhez. Az elküldött keretek nyugtáinak beérkezéséig azonban a már elküldött kereteket egy pufferben (az újraküldési listában) tárolja az esetleges újraküldés céljából. • A nyugtázás megoldható kizárólag pozitív nyugta (positive acknowledgment = ACK) küldésével. Ekkor az adó a hibásan továbbított keretekről a hiányzó nyugtákból szerez tudomást. Adatkapcsolati réteg / 26
Hiba vezérlés • Folyamatos (continuous RQ) módú ismétlés kéréssel • A másik nyugtázási módszernél a vevő negatív nyugtával (negative acknowledgment = NAK) jelzi az adónak hibás keret érkezését. • Az ismétlés kérés is kétféleképpen működhet. • Szelektív ismétlés kérés (Selective repeat) • Csak a hibás kereteket kell újraküldeni. A vevő az újraküldött kereteket a megfelelő helyre illeszti a pufferében. Ez a módszer hatékonyabb, mint a Go-back-N módszer, de nagyobb a puffer-igénye. • Visszaugrás N kerettel (Go-back-N) • A vevő a hibás keret után küldött magasabb sorszámú kereteket eldobja, és a hibásan érkezett kerettől kezdve újra kéri a kereteket függetlenül attól, hogy az adó egyszer már továbbította azokat. • A fentiekből következően a kereteket sorszámozni kell. • Az adatkapcsolat egy másik fontos összetevője a hiba vezérlés mellett az adatfolyam vezérlés (flow control). • Ha a vevő állomás nem képes olyan ütemben feldolgozni az adatkereteket, mint ahogyan azokat az adó továbbítja, a pufferei megtelnek. A vevőnek és az adónak megfelelő vezérlési sémával kell rendelkeznie ennek megoldására. Adatkapcsolati réteg / 27
Hiba vezérlés • Folyamatos (continuous RQ) módú ismétlés kéréssel • A folyamatos RQ hiba vezérlés működéséhez kétirányú kapcsolat szükséges. • A legtöbb esetben az információs keretek is mindkét irányban áramolnak (duplex kapcsolat). Ekkor megoldható, hogy a nyugtákat az információs csomagokba ágyazzák. Ezt a megoldást piggyback acknowledgment-nek nevezik. • A fent említett működési módok közül a szelektív ismétlés pozitív nyugtázással változatot ismerjük meg részletesebben. Adatkapcsolati réteg / 28
Hiba vezérlés • Folyamatos (continuous RQ) módú ismétlés kéréssel • Szelektív ismétlés pozitív nyugtázással • A következő ábrákon a kapcsolati protokoll működésének egyik irányát mutatjuk be. • A Primary (P) állomás információ-kereteket (I) küld a Secondary (S) állomásnak, amely nyugta kereteket (ACK) küld vissza. • A P állomás újra átviteli listája és az S állomás vételi listája az adatkapcsolati protokoll belső működését szolgálja. Az adatkapcsolati réteg és a magasabb protokoll réteg közötti kommunikációt külön FIFO listák segítik. • Az adó állomás V(Send) változója a következő új kerethez rendelendő sorszámot tárolja. • A vevő állomás V(Receive) változója annak a keretnek a sorszámát tárolja, amelyet sorrendhelyesen kapnia kell. • A következő ábra azt az esetet mutatja, amikor egy információs keret (I-frame) hibásan érkezik: Adatkapcsolati réteg / 29
N N+2 N+5 N+5 N+4 N+3 N+1 V(S) N+4 A kapcsolat újra átviteli listája N+2 N+3 N+1 N+3 N+1 N+1 N+4 N+2 N+2 N+1 N N N N+1 N+3 N+1 N+4 Primary(P) I(N) I(N+1) I(N+2) I(N+3) I(N+4) I(N+1) I(N+5) I(N) I(N+3) I(N+1) I(N+2) I(N+5) I(N+1) I(N+4) ACK(N) ACK(N+2) ACK(N+4) ACK(N+3) ACK(N+1) Idő Secondary(S) I(N) I(N+2) I(N+3) I(N+4) I(N+1) I(N+5) N N+2 N+5 N+2 N+2 N+2 A kapcsolat vételi listája N+3 N+3 N+3 N+4 N+4 N+1 N N+1 N+1 N+1 N+1 N+1 N+5 V(R) Szelektív ismétlés Hibás keret Hiba vezérlés Adatkapcsolati réteg / 30
Hiba vezérlés • Folyamatos (continuous RQ) módú ismétlés kéréssel • Szelektív ismétlés pozitív nyugtázással • Tegyük fel, hogy az N+1. információs keret sérül. • S minden hibátlan keretet egy ACK kerettel nyugtáz. • S nyugtázza az N, N+1, N+2, N+3… információs keretet. • Amikor P veszi az N+2. keret nyugtáját, észleli, hogy az N+1. keret nincs nyugtázva. • P ún. ‘újra átviteli állapotba’ (retransmission state) kerül, lehetővé téve több hibás keret kezelését. • Ebben az állapotban új keretek továbbítása szünetel mindaddig, amíg az összes nyugtázatlan keretet újra nem küldi. • P eltávolítja az N+2. keretet a listából, majd újra küldi az N+1. Keretet, mielőtt az N+5. keretet küldené. • Az N+1. keret megérkezésekor S átadja a vételi listában lévő kereteket feldolgozásra a magasabb szintű protokollnak. • A következő ábra azt az esetet mutatja, amikor egy nyugta keret (ACK-frame) sérül : Adatkapcsolati réteg / 31
N N+4 N+3 N+2 N+1 N+4 V(S) N+3 N+2 N N+2 N+1 N+1 N+3 N+1 N N N N N+2 N N+3 I(N) I(N+1) I(N+2) I(N+3) I(N) I(N) I(N+2) I(N+1) I(N+3) I(N) ACK(N) ACK(N+1) ACK(N+2) ACK(N+3) ACK(N) Idő I(N) I(N+1) I(N+2) I(N+3) I(N) N N+1 N+2 N+3 V(R) N N+1 N+2 N+3 N+4 N+4 Hiba vezérlés A kapcsolat újra átviteli listája Primary(P) Secondary(S) A kapcsolat vételi listája Szelektív ismétlés Hibás ACK keret Adatkapcsolati réteg / 32
Hiba vezérlés • Folyamatos (continuous RQ) módú ismétlés kéréssel • Szelektív ismétlés pozitív nyugtázással • Tegyük fel, hogy az N. nyugta keret (ACK) sérül. • P az N+1. ACK keret vételekor észleli, hogy az N. keret még nyugtázásra vár, ezért újra elküldi. • Az újra küldött N. keret megérkezésekor S a V(R) változóból megállapítja, hogy ez a keret egyszer már hibátlanul megérkezett. • S elveti a keretet, de küld egy nyugta keretet róla informálva P-t, hogy eltávolíthatja az N. keretet az újra küldési listából. Adatkapcsolati réteg / 33
Adatfolyam vezérlés (Flow control) • A folyamatos (continuous RQ) módú ismétlés kéréssel • A vevő állomás pufferei megtelhetnek, és ekkor nem képes több keret befogadására. • Az okok lehetnek: • hibás keret érkezik, és a később küldött keretek nem dolgozhatók fel, amíg az újraküldött keret nem érkezik meg, • túl kis méretű puffer, • a vevő számítógép nem képes olyan ütemben feldolgozni a kereteket, mint amilyen ütemben érkeznek. • Gondoskodni kell valamilyen vezérlő mechanizmusról, amellyel a keret küldés leállítható, ha a vevő puffere megtelik. • Ezt a mechanizmust adatfolyam vezérlésnek (flow control) nevezzük. • A folyamatos RQ protokoll esetén a csúszó ablakos (sliding window) megoldást használják. • Lényege, hogy az adó nyugta érkezéséig csak korlátozott (K) számú keretet küldhet el. Ha a vevő puffere megtelik, leállítja a nyugták küldését. Az adó közben elküldi a számára megengedett maximális számú keretet, majd leállítja a keretek továbbítását. Ha egy nyugta beérkezik, akkor újraindítja a keret továbbítást. Adatkapcsolati réteg / 34
Adatfolyam vezérlés • A folyamatos (continuous RQ) módú ismétlés kéréssel • Az ablak lényegében az adó újraküldési listájának azon része, amely az elküldött, de még nem nyugtázott kereteket tartalmazza. Az ablak elejét és végét egy-egy mutató (alsó és felső ablakhatár) jelzi. • Ha egy nyugta érkezik, az alsó ablakhatár lép tovább, ha egy adatkeret kimegy, a felső ablakhatár lép tovább. Ezért nevezik csúszó ablakos megoldásnak. • Az ablak mérete nem növekedhet a protokollban rögzített méret fölé. • Az ablak maximális mérete jelentős hatással van az átviteli csatorna kihasználására. • Mérete függ • a maximális keret mérettől, • a rendelkezésre álló puffer méretétől, • a kapcsolat késleltetésétől és • az adatátviteli sebességtől. Adatkapcsolati réteg / 35
Az adattovábbítás megáll Nyugtára váró keretek Elküldésre váró keretek Már nyugtázott keretek Az átvitel sorrendje --- N N+1 N+2 N+3 N+4 N+5 N+6 N+7 N+8 Alsó ablak-határ Felső ablak-határ Ablakméret K= 3 Szelektív ismétlés Csúszó ablak Adatfolyam vezérlés Adatkapcsolati réteg / 36
Adatfolyam vezérlés • A folyamatos (continuous RQ) módú ismétlés kéréssel • Keretsorszámok • A nyugtázás és az újraküldés bonyolításához a kereteket sorszámozni kell. • A keretsorszámokat minden információs- és nyugtakeret tartalmazza. • A keretsorszám számára fenntartott mező a lehető legrövidebb legyen. • Maximális keretsorszám >= 2 K (2 x ablakméret) • Ennek magyarázata, hogy abban a legrosszabb esetben is, amikor az adó K számú keretet küldött és mindegyik nyugtakeret hibás, a vevőnek tudnia kell, hogy a következő K számú keretből melyik keret új. • A következő keret sorszáma: • modulo-2K (i+1), • ahol i az utoljára elküldött keret sorszáma. Adatkapcsolati réteg / 37
Adatfolyam vezérlés • A folyamatos (continuous RQ) módú ismétlés kéréssel • A kapcsolat kihasználtsága • Jelölések: • U a kapcsolat kihasználtsága • K a csúszó ablak mérete • Tix a keret továbbításának ideje (N/R) • Tp a kapcsolat késleltetése (S/V) • a Tp / Tix • S adó - vevő távolsága • V jel terjedési sebesség • R átviteli sebesség • N kerethossz Adatkapcsolati réteg / 38
Adatfolyam vezérlés • A folyamatos (continuous RQ) módú ismétlés kéréssel • A kapcsolat kihasználtsága • Példa: • Műholdas kapcsolat esetén a Tp sokkal nagyobb, mint Tix. • S = 50 000 km • V = 2 x 108 m/s • N = 1000 bit • R = 1 Mbps • Tix= 1 ms (N/R) • Tp = 250 ms (S/V) • a = 250 (Tp / Tix) • Elméletileg akár 250 keret is úton lehet az adó és a vevő között. • 100%-os kihasználtsághoz K = 500 szükséges, mivel az első keret nyugtája nem érkezik meg előbb, mint 500 ms (2 Tp). Adatkapcsolati réteg / 39
Adatfolyam vezérlés • A folyamatos (continuous RQ) módú ismétlés kéréssel • A kapcsolat kihasználtsága • Általánosan: • U = 1ha K >= 1 + 2a • U = K Tix/(Tix+ 2 Tp) = K/(1 + 2a) ha K < 1 + 2a Adatkapcsolati réteg / 40
Adatfolyam vezérlés • A folyamatos (continuous RQ) módú ismétlés kéréssel • A kapcsolat kihasználtsága • Példa • N = 1000 bit • Protokoll: folyamatos RQ • V = 2 x 108 m/s • Hiba arány elhanyagolható • S = 1 km, • R = 1 Mbps, • K = 2 • Tp = 5 x 10-6 s • Tix = 10-3 s • a = 5 x 10-3 • U = 1, mivel K > (1+2a) • S = 10 km, • R = 200 Mbps, • K = 7 • Tp = 5 x 10-5 s • Tix = 5 x 10-6 s • a = 10 • U = K/(1 + 2a) = 0.33, • mivel K < (1+2a) • S = 50 000 km (műhold), • R = 2 Mbps, • K = 127 • Tp = 0.25 s • Tix = 5 x 10-4 s • a = 500 • U = K/(1 + 2a) = 0.127, • mivel K < (1+2a) A példából is látható, hogy a csúszó ablak (K) méretének megválasztása jelentős hatással van a kapcsolat kihasználtságára. Adatkapcsolati réteg / 41
Kapcsolat menedzsment (Link management) • A hiba- és az adatfolyam vezérlés csak a kertek helyes továbbításával foglalkozik nem tökéletes kommunikációs vonalon. • A hibamentes kommunikációhoz azonban a kommunikáló feleket megfelelően inicializálni kell. Például azonos keret sorszámról kell indulniuk. Ezt az inicializáló fázist kapcsolat felépítésnek (link setup) nevezzük. A kommunikáció befejezésekor a kapcsolatot meg kell szüntetni. Ezt a kapcsolat lebontásának (link disconnect) nevezzük. E két fázis együttes neve a kapcsolat menedzsment (Link management). • A kapcsolat akkor épül fel, amikor a két fél adatkapcsolati protokollja bizonyos egyezményes vezérlő (control vagy supervisory) keretek cseréjével ebben megállapodik. • A kapcsolat felépítését természetesen valamilyen alkalmazói program vagy magasabb szintű protokoll kezdeményezi. • Az egyes rétegek szolgáltatásait (szolgálatait) a felette álló réteg a megfelelő szolgálati primitív meghívásával veszi igénybe, illetve egy szolgáltatás réteg a szolgáltatás eredményét egy megfelelő szolgálati primitív meghívásával adja át a felette álló rétegnek. Adatkapcsolati réteg / 42
Forrás állomás Cél állomás LS_user LS_user Adatkap-csolati réteg Adatkap-csolati réteg L_CONNECT.request SETUP- frame DISC frame V(R) := 0 stb. V(S) := 0 stb. L_CONNECT.indication UA- frame UA- frame L_CONNECT.confirm L_DATA. request I-frame L_DATA.indication ACK- frame L_DISCONNECT.request L_DISCONNECT.indication L_DISCONNECT.confirm Idő Kapcsolat menedzsment - idődiagram Adatkapcsolati réteg / 43
Kapcsolat menedzsment • A LS_user (réteg) először egy L_CONNECT.request szolgáltatás primitívet küld a kapcsolati rétegnek. Ez egy visszaigazolt művelet, mivel amikor a forrás állomás kapcsolati protokollja a cél állomás kapcsolati protokolljával létrehozza a kapcsolatot, egy L_CONNECT.confirm primitívet küld a forrás LS_user-ének. Ez csak annyit jelent, hogy a két adatkapcsolati protokoll felépítette a kapcsolatot, de ez nem jelent kapcsolatot a két alkalmazói program vagy két magasabb szintű protokoll között. • Egy L_CONNECT.request érkezésekor a forrás inicializálja az állapotváltozóit, átküld egy kapcsolat-SETUP keretet a cél állomásnak. A cél állomás inicializálja a saját állapotváltozóit, küld egy L_CONNECT.indication primitívet a cél LS_user rétegének, majd visszaküld egy nyugta keretet a forrás állomásnak. • A nyugta keretek nincsenek számozva, ezért unnumbered acknowledgment (UA-frame) keretnek nevezzük. • A nyugta keret vételekor a forrás protokoll egy L_CONNECT.confirm primitív küldésével jelzi a forrás LS_user rétegnek, hogy a kapcsolat felépült, indulhat a kommunikáció (L_DATA.szolgáltatás). • A kommunikáció befejeztével a kapcsolat lebontása az L_DISCONNECT szolgáltatással történik, amely a kapcsolat felépítéséhez hasonlóan szintén egy visszaigazolt szolgáltatás. Adatkapcsolati réteg / 44
Adatkapcsolati protokollok (HDLC, LLC) • A szabványos adatkapcsolati protokollok széles választéka áll a különböző alkalmazások rendelkezésére. • Az egyes protokollok • az átvitel módjában, • az átvitel vezérlésében és • a szolgáltatás minőségében • különböznek. Adatkapcsolati réteg / 45
Adatkapcsolati protokollok - High Level Data Link Control • High Level Data Link Control (HDLC) • Általános célú ISO protokoll, amely az IBM SDLC protokolljából fejlődött ki. • Pont-pont, pont-több pont kapcsolatokban és hálózatokban egyaránt használják. • Bit-orientált, szinkron protokoll, amely kapcsolat nélküli, és kapcsolat-orientált duplex átvitelt is lehetővé tesz. • Számos leszármazottja létezik, amelyeket különböző alkalmazási környezetben használnak: • Link access procedure, balanced (LAPB), amelyet az X.25 csomagkapcsolt hálózatban, • Link access procedure D channel (LAPD), amelyet az ISDN hálózatban, • Logical Link Control (LLC), amelyet LAN-okban • használnak. • A HDLC-t az alábbi hálózati konfigurációkban használják: Adatkapcsolati réteg / 46
Pont-pont kapcsolat, egy primary, egy secondary Parancsok Parancsok Parancsok Parancsok Primary Secondary Válaszok Válaszok Válaszok Primary Több-pont kapcsolat, egy primary, több secondary Válaszok Válaszok Secondary Secondary Pont-pont kapcsolat, két primary, két secondary Primary + secondary Primary + secondary A HDLC hálózati konfigurációi Adatkapcsolati protokollok - HDLC Adatkapcsolati réteg / 47
Adatkapcsolati protokollok - HDLC A primary állomás által küldött kereteket parancsoknak (command), a secondary állomás által küldött kereteket pedig válaszoknak (response) nevezik. Az egyetlen primary és egy vagy több secondary állomással rendelkező hálózatokat kiegyensúlyozatlan (unbalanced) konfigurációknak, míg a két primary állomással bíró hálózatokat kiegyensúlyozott (balanced) konfigurációknak nevezik. Adatkapcsolati réteg / 48
Adatkapcsolati protokollok - HDLC • A HDLC működési módjai • Normal response mode (NRM) • Kiegyensúlyozatlan konfigurációkban használják. • A másodlagos állomások csak akkor továbbíthatnak keretet, ha az elsődleges állomás erre felszólítja őket. • A kapcsolat lehet pont-pont vagy több pont. • Asynchronous response mode (ARM) • A másodlagos állomások is kezdeményezhetnek átvitelt anélkül, hogy erre az elsődleges állomástól engedélyt kapnának. • Pont-pont konfigurációkban és duplex kapcsolatokban alkalmazzák. • Asynchronous balanced mode (ABM) • Duplex pont-pont kapcsolatokban, elsősorban számítógép-számítógép, vagy számítógép- csomagkapcsolt hálózat kommunikációra használják. • Minden állomás egyenlő státusszal rendelkezik, és mindegyik megvalósítja mind a primary mind a secondary funkcióit. Adatkapcsolati réteg / 49
Adatkapcsolati protokollok - HDLC • A HDLC keret formátumai • A keretek három osztálya létezik: • Számozatlan keret (Unnumbered farame) • A kapcsolat felépítésében és lebontásában játszik szerepet. Nem tartalmaz nyugtázási információt. • Információs keret (Information frame) • A tényleges információt hordozza (I-keret). ABM és ARM módban az I-keretek az ellenkező irányban áramló I-keretek nyugtáit is továbbítják (piggyback acknowledgment). • Felügyelői keret (Supervisory frame) • Hiba- és adatfolyam vezérlésre használják, ezért keret sorszámokat is hordoznak. Adatkapcsolati réteg / 50