Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Adatkapcsolati réteg / 1

Hasonló előadás


Az előadások a következő témára: "Adatkapcsolati réteg / 1"— Előadás másolata:

1 Adatkapcsolati réteg / 1
Készítette: Schubert Tamás (BMF) Tempus S_JEP Adatkapcsolati réteg / 1

2 Adatkapcsolati réteg / 2
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 Tempus S_JEP Adatkapcsolati réteg / 2

3 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. Tempus S_JEP Adatkapcsolati réteg / 3

4 Adatkapcsolati réteg / 4
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. Tempus S_JEP Adatkapcsolati réteg / 4

5 Adatkapcsolati réteg / 5
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. Tempus S_JEP Adatkapcsolati réteg / 5

6 Adatkapcsolati réteg / 6
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. Tempus S_JEP Adatkapcsolati réteg / 6

7 Adatkapcsolati réteg / 7
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. Tempus S_JEP Adatkapcsolati réteg / 7

8 Adatkapcsolati réteg / 8
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. Tempus S_JEP Adatkapcsolati réteg / 8

9 Átviteli módok - Aszinkron átvitel
1 Start bit 7/8 adat bit Stop bit(ek) Átvitt elem Átvitel iránya lsb msb Új karakter kezdete Paritás 1 vagy 2 stop bit Tempus S_JEP Adatkapcsolati réteg / 9

10 Á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. Tempus S_JEP Adatkapcsolati réteg / 10

11 Átviteli módok - Szinkron átvitel
Átvitel iránya Keret-tartalom 1 Átvitt keret Idő Szinkron karakterek vagy byte-ok Keret-kezdet Keret-vége Tempus S_JEP Adatkapcsolati réteg / 11

12 Á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. Tempus S_JEP Adatkapcsolati réteg / 12

13 Á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: Tempus S_JEP Adatkapcsolati réteg / 13

14 Átviteli módok - Szinkron átvitel
Átviendő bit folyam Adó órajele Bipolárisan kódolt jel Vevőnél az adatból kivont órajel Vett adat Manchester kódolt jel Bipoláris kódolás Manchester kódolás Tempus S_JEP Adatkapcsolati réteg / 14

15 Á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. Tempus S_JEP Adatkapcsolati réteg / 15

16 Átviteli módok - Szinkron átvitel
Bit szinkronizáció Manchester kódolás 1 „1” bit „0” bit 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. Tempus S_JEP Adatkapcsolati réteg / 16

17 Á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. Tempus S_JEP Adatkapcsolati réteg / 17

18 Á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 ‘ ’ bit-minta (flag) határolja. A tétlen vonalon az adó a ‘ ’ 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. Tempus S_JEP Adatkapcsolati réteg / 18

19 Átviteli módok - Szinkron átvitel
Átvitel iránya Nyitó flag Keret tartalom Záró flag Tétlen vonal ‘0’ bit beszúrása Bit-orientált vezérlési séma: flag-ek használata Tempus S_JEP Adatkapcsolati réteg / 19

20 Átviteli módok - Szinkron átvitel
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ó:‘ ’. 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. Keret tartalom Preamble Keret kezdet határoló Rögzített fej Hossz byte-ok Az előző mezőben megadott számú byte láb Tempus S_JEP Adatkapcsolati réteg / 20

21 Adatkapcsolati réteg / 21
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. Tempus S_JEP Adatkapcsolati réteg / 21

22 Adatkapcsolati réteg / 22
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. Tempus S_JEP Adatkapcsolati réteg / 22

23 Adatkapcsolati réteg / 23
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. Tempus S_JEP Adatkapcsolati réteg / 23

24 Adatkapcsolati réteg / 24
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. Tempus S_JEP Adatkapcsolati réteg / 24

25 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). Tempus S_JEP Adatkapcsolati réteg / 25

26 Adatkapcsolati réteg / 26
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. Tempus S_JEP Adatkapcsolati réteg / 26

27 Adatkapcsolati réteg / 27
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. Tempus S_JEP Adatkapcsolati réteg / 27

28 Adatkapcsolati réteg / 28
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. Tempus S_JEP Adatkapcsolati réteg / 28

29 Adatkapcsolati réteg / 29
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: Tempus S_JEP Adatkapcsolati réteg / 29

30 Adatkapcsolati réteg / 30
Hiba vezérlés N N+1 N+2 N+3 N+4 I(N) I(N+1) I(N+2) I(N+3) I(N+4) I(N+5) N+5 ACK(N) ACK(N+2) ACK(N+3) ACK(N+4) ACK(N+1) Idő Primary(P) Secondary(S) A kapcsolat újra átviteli listája vételi V(S) V(R) Szelektív ismétlés Hibás keret Tempus S_JEP Adatkapcsolati réteg / 30

31 Adatkapcsolati réteg / 31
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 : Tempus S_JEP Adatkapcsolati réteg / 31

32 Adatkapcsolati réteg / 32
Hiba vezérlés N N+1 N+2 N+3 N+4 V(S) N N N+1 N N+1 N+2 N N+1 N+2 N+3 N+2 N+3 N N+3 N A kapcsolat újra átviteli listája Primary(P) I(N) I(N+1) I(N+2) I(N+3) I(N) I(N+1) ACK(N) I(N+2) ACK(N+1) I(N+3) ACK(N+2) I(N) ACK(N+3) ACK(N) Idő Secondary(S) I(N) I(N+2) I(N+3) I(N+1) N N+2 N+3 N+1 A kapcsolat vételi listája Szelektív ismétlés Hibás ACK keret N N+1 N+2 N+3 N+4 V(R) Tempus S_JEP Adatkapcsolati réteg / 32

33 Adatkapcsolati réteg / 33
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. Tempus S_JEP Adatkapcsolati réteg / 33

34 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. Tempus S_JEP Adatkapcsolati réteg / 34

35 Adatkapcsolati réteg / 35
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. Tempus S_JEP Adatkapcsolati réteg / 35

36 Adatkapcsolati réteg / 36
Adatfolyam vezérlés Szelektív ismétlés Csúszó ablak N N+1 Az átvitel sorrendje --- N+2 N+3 N+4 N+5 N+6 N+7 N+8 Ablakméret K= 3 Alsó ablak-határ Felső ablak-határ Nyugtára váró keretek Már nyugtázott keretek Elküldésre váró Az adattovábbítás megáll Tempus S_JEP Adatkapcsolati réteg / 36

37 Adatkapcsolati réteg / 37
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. Tempus S_JEP Adatkapcsolati réteg / 37

38 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 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 Tempus S_JEP Adatkapcsolati réteg / 38

39 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 Példa: Műholdas kapcsolat esetén a Tp sokkal nagyobb, mint Tix. S = 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). Tempus S_JEP Adatkapcsolati réteg / 39

40 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 Általánosan: U = 1 ha K >= 1 + 2a U = K Tix/(Tix+ 2 Tp) = K/(1 + 2a) ha K < a Tempus S_JEP Adatkapcsolati réteg / 40

41 Adatkapcsolati réteg / 41
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 = 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. Tempus S_JEP Adatkapcsolati réteg / 41

42 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. Tempus S_JEP Adatkapcsolati réteg / 42

43 Kapcsolat menedzsment - idődiagram
LS_user Adatkap-csolati réteg I-frame ACK- frame SETUP- UA- DISC Idő L_CONNECT.request L_CONNECT.confirm L_DATA. request L_DISCONNECT.request L_DISCONNECT.confirm L_CONNECT.indication L_DATA.indication L_DISCONNECT.indication V(S) := 0 stb. V(R) := 0 Forrás állomás Cél állomás Tempus S_JEP Adatkapcsolati réteg / 43

44 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. Tempus S_JEP Adatkapcsolati réteg / 44

45 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. Tempus S_JEP Adatkapcsolati réteg / 45

46 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: Tempus S_JEP Adatkapcsolati réteg / 46

47 Adatkapcsolati protokollok - HDLC
Primary Secondary Parancsok Válaszok Pont-pont kapcsolat, egy primary, egy secondary Több-pont kapcsolat, több secondary + secondary két primary, két secondary A HDLC hálózati konfigurációi Tempus S_JEP Adatkapcsolati réteg / 47

48 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. Tempus S_JEP Adatkapcsolati réteg / 48

49 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. Tempus S_JEP Adatkapcsolati réteg / 49

50 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. Tempus S_JEP Adatkapcsolati réteg / 50

51 Adatkapcsolati protokollok - HDLC
Flag Address Control FCS Information 8 8/16 0 - N 16/32 Keret- kezdet határoló vége fejrész Információs mező Keret ellenőrző bitek száma átvitel iránya HDLC standard/kiterjesztett keret formátum Tempus S_JEP Adatkapcsolati réteg / 51

52 Adatkapcsolati protokollok - HDLC
1 0 S P/F N(R) Supervisory N(S) = Adó sorszám N(R) = Vevő sorszám P/F = Poll/Final bit N(S) Information Control Receiver ready - RR Receiver not ready - RNR Reject - REJ Selective reject - SREJ HDLC standard control mező bit-definíció Tempus S_JEP Adatkapcsolati réteg / 52

53 Adatkapcsolati protokollok - HDLC
1 1 M P/F Unnumbered Control Unnumbered parancsok Set Asynchronous Response Mode (SARM) Set Asynchronous Response Extended Mode (SARME) Set Normal Response Mode (SNRM) Set Normal Response Mode Extended (SNRME) Set Asynchronous Balanced Mode (SABM) Set Asynchronous Balanced Mode Extended (SABME) Reset (RSET) Frame Reject (FRMR) Disconnect (DISC) Unnumbered válaszok Unnumbered Acknowledge (UA) Command Reject (CDMR) Disconnect Mode (DM) HDLC standard control mező bit-definíció (folytatás) Tempus S_JEP Adatkapcsolati réteg / 53

54 Adatkapcsolati protokollok - HDLC
Control HDLC extended control mező bit-definíció Information P/F N(S) N(R) Supervisory 1 S - Unnumbered M Tempus S_JEP Adatkapcsolati réteg / 54

55 Adatkapcsolati protokollok - HDLC
A HDLC keret formátumai A flag-ek határolják a keretet, az adat tarnszparenciát ‘0’ bit beszúrással biztosítják, ahogy azt a bit-orientált szinkron átvitelnél bemutattuk. A keret ellenőrző (Frame Check Sequence) a CRC algoritmussal készül. Az cím (Address) NRM módban a primary által feladott keretben a Secondary állomás címét, csoport címet vagy broadcast címet tartalmaz, a secondary által feladott keretben pedig a secondary címét tartalmazza. ABM módban a (pont-pont kapcsolat miatt) a címet nem így használják, ez a mező a parancsok és a válaszok irányát tárolja. A P/F (poll/final) bit jelzi a vevőnek, hogy a keretet nyugtázni kell-e. Az N(S) és N(R) mezők a keret sorszámokat tárolják. A mező hossza egyben meghatározza a csúszó ablak méretét (0-7). A kiterjesztett formátumban a mezők 7 bitesek, így az ablak hossza lehet. Tempus S_JEP Adatkapcsolati réteg / 55

56 Adatkapcsolati protokollok - HDLC
A HDLC keret típusai Az Unnumbered kereteket a kapcsolat menedzsmentre (felépítés és lebontás) használják A Supervisory kereteket a secondary állomás fogadókészségének jelzésére, és nyugtázásra használják. A protokoll működése Kapcsolat menedzsment Az adattovábbítás előtt az adó és a vevő között logikai kapcsolatot kell felépíteni, az adattovábbítás befejezésekor pedig le kell bontani. Az adatátvitel Az adatátvitel a folyamatos RQ protokoll működési módját követi. Magába foglalja a hiba- és az adatfolyam vezérlést. A hiba vezérlés működhet: szelektív ismétlés kéréssel (Selective repeat) vagy visszaugrás N kerettel (Go-back-N) módon. Az adatfolyam vezérlés a csúszó ablakos mechanizmuson alapul. Tempus S_JEP Adatkapcsolati réteg / 56

57 Adatkapcsolati protokollok - HDLC
LS_user Adatkap-csolati réteg L_CONNECT.request L_CONNECT.confirm L_DATA. request L_DISCONNECT.request L_DISCONNECT.confirm L_CONNECT.indication L_DATA.indication L_DISCONNECT.indication A felhasználói- és az adatkapcsolati réteg együttműködése Forrás állomás Cél állomás I(DATA) RR SNRN/ SABM UA DISC Tempus S_JEP Adatkapcsolati réteg / 57

58 Adatkapcsolati protokollok - Logical Link Control (LLC)
Az LLC a HDLC leszármazottja, amelyet LAN-okban alkalmaznak. A két alapvető LAN típus: busz gyűrű Mindkettő osztott átviteli médiumot használ a keretek továbbítására. A közeg hozzáféréshez osztott algoritmust használnak, nincs kitüntetett számítógép, amely ezt vezérelné. DTE Gyűrű DLP Osztott busz DLP = Data Link Protocol Tempus S_JEP Adatkapcsolati réteg / 58

59 Adatkapcsolati protokollok - LLC
Logical Link Control LAN-oknál az adatkapcsolati réteg két alrétegből áll: Közeg hozzáférési alréteg (MAC = Medium Access Control) Megvalósítja az osztott közeghozzáférési algoritmust. Logikai adatkapcsolat vezérlő alréteg (LLC) Az LLC mindig a két kommunikáló végberendezés közötti adatkapcsolati funkciókat végzi (peer to peer), mivel nincs egyéb közvetítő eszköz közöttük. Szolgálatok (Services) Kapcsolat-orientált (Connection-oriented service) Az adatátvitel előtt logikai kapcsolat épül ki az állomások között, amely elvégzi a hiba- és adatfolyam vezérlést az adatátvitel ideje alatt. Kapcsolat- és nyugtázás nélküli (Unacknowledged connectionless service) Gyors működésű, hatékony, a hiba kezelést egy magasabb protokoll réteg végzi. Kapcsolat nélküli, nyugtázással (Acknowledged connectionless service) A keret megérkezését az ellenkező oldali protokoll nyugtázza anélkül, hogy logikai kapcsolat felépülne a két állomás között. Olyan idő kritikus ipari alkalmazásoknál használják, ahol a kapcsolat felépítésével járó időkésleltetés nem megengedett. Kapcsolat nélküli, válasz kérés (Obtain reply) A távoli állomástól adat kérhető anélkül, hogy kapcsolat épülne fel az állomások között. Tempus S_JEP Adatkapcsolati réteg / 59

60 Adatkapcsolati protokollok - LLC
LLC felhasználói szolgálat-primitívek (kapcsolat nélküli) Felhasználói (hálózati) réteg LLC réteg Forrás állomás Cél állomás L_DATA.request L_DATA.indication L_DATA_ACK.request L_DATA_ACK.indication L_DATA_ACK_ STATUS.indication L_REPLY_UPDATE.request L_REPLY_UPDATE_ STATUS. indication L_REPLY.request L_REPLY_ Adatküldés nyugtázás nélkül nyugtázással Adatkérés és válasz Tempus S_JEP Adatkapcsolati réteg / 60

61 Adatkapcsolati protokollok - LLC
LLC felhasználói szolgálat-primitívek (kapcsolat-orientált) Felhasználói (hálózati) réteg LLC réteg Forrás állomás Cél állomás L_FLOWCONTROL.request L_ FLOWCONTROL.indication L_CONNECT.request L_CONNECT.indication L_ CONNECT.confirm Kiegészítő szolgálatok L_DATA_CONNECT.request L_DATA_CONNECT.indication L_ DATA_CONNECT.confirm L_DISCONNECT.request L_DISCONNECT.indication L_ DISCONNECT.confirm L_RESET.request L_RESET.indication L_ RESET.confirm Alapvető szolgálatok Kapcsolat felépítés Adat- átvitel lebontás Tempus S_JEP Adatkapcsolati réteg / 61

62 Adatkapcsolati protokollok - LLC
A RESET és FLOWCONTROL primitívek segítségével a felhasználó befolyásolhatja az adatfolyam vezérlést. A RESET arra való, hogy megszakítsa a kapcsolatot, ha a magasabb réteg sorrenden kívül érkező adatokat észlel. Az L_FLOWCONTROL.request primitívvel a felhasználó az általa fogadható adatok mennyiségét jelzi a helyi LLC protokollnak. Az L_FLOWCONTROL.indication primitívvel az LLC protokoll adja meg a felhasználónak, hogy mennyi adatot képes fogadni. Ha a megadott adatmennyiség 0, az adatok átvitele felfüggesztődik. A protokoll működése Az LLC keret formátum alább látható. A címek csak az LLC szerviz elérési pontokra (SAP = Service Access Point) vonatkoznak. A fizikai eszközök címeit majd a MAC keretek tartalmazzák, amelyek információ mezője hordozza a teljes LLC keretet. Az LLC keret nem tartalmaz hiba ellenőrző kódot. Tehát a hálózati eszközök címzését és az hiba detektálását a MAC réteg végzi el. Az LLC kapcsolat-orientált szolgáltatása nagyon hasonlít a HDLC protokoll működéséhez, kivéve, hogy a fizikai keret képzése és a hiba érzékelés a MAC alrétegbe lett áthelyezve. Tempus S_JEP Adatkapcsolati réteg / 62

63 Adatkapcsolati protokollok - LLC
LLC protokoll mező definíciók Destination Address Source Control Information 1 Byte M Bitek N(S), N(R) = Adó és vevő sorszámok S = Supervisory funkció definíció M = Módosító funkció definíció P/F = Poll/Final bit P/F S N(R) N(S) Information frame Supervisory frame Unnumbered frame Keret formátum Control mező bit definíció Tempus S_JEP Adatkapcsolati réteg / 63

64 Adatkapcsolati protokollok - LLC
A MAC alréteg szolgáltatása A MAC alréteg működése a fizikai hálózat működésének függvénye. Ettől függetlenül az LLC protokoll egy standard szolgálat készlettel veheti igénybe a MAC alréteg szolgáltatását. A service primitívek: MA_UNIDATA.request MA_UNIDATA.indication MA_UNIDATA.confirmation A LAN működésétől függően a MAC réteg visszajelezheti az átviendő adat sikeres útba indítását, vagy az adat sikeres kézbesítését. Tempus S_JEP Adatkapcsolati réteg / 64

65 Adatkapcsolati protokollok - LLC
MAC alréteg szolgálat-primitívek MAC réteg Forrás állomás Cél állomás MA_UNIDATA.request MA_UNIDATA.indication MA_UNIDATA.confirm LLC réteg Helyi visszaigazolás Távoli visszaigazolás Tempus S_JEP Adatkapcsolati réteg / 65

66 Adatkapcsolati réteg / 66
Irodalom Stallings W. Data and Computer Communications, Fifth Edition. Prentice-Hall, Inc Fred Halsall. Data Communications, Computer Networks and Open Systems, Fourth Edition. Addison-Wesley Publishers Ltd Andrew S. Tanenbaum. Számítógép-hálózatok, Panem Könyvkiadó Kft Tempus S_JEP Adatkapcsolati réteg / 66


Letölteni ppt "Adatkapcsolati réteg / 1"

Hasonló előadás


Google Hirdetések