3. Zabezpečení dat při přenosech
Problém při komunikaci v reálné síti:
-------------------------------------
-ztrácení a poškozování paketů
-duplikace a změna pořadí paketů v sítích s alternativními cestami
Nutnost zavedení zpětné vazby do přenosu:
potvrzovací - zpět ACK/NAK
detekční - zpět CRC
informační - zpět celý rámec
Poznámka: mohou se ztrácet nejen informační pakety, ale i potvrzení.
Protokol - soubor syntaktických a sémantických pravidel (včetně definice
časových poměrů) pro komunikaci.
Potvrzovací schémata
Problém tří armád: teoreticky nemožné ověřit správnost doručení potvrzení
ze strany přijímače
Pozitivní potvrzování, negativní potvrzování, kombinované potvrzování
Potvrzování a timeouty - volba vhodného timeoutu, řeší problém deadlocku
při ztrátě potvrzení,
komplikuje formální popis protokolu (nutnost zavedení
časového kontextu).
Problém volby velikosti timeoutu: efektivita při nutnosti retransmise
vs. předčasné retransmise
* stop-and-wait: vysílač vyšle jediný rámec a čeká na potvrzení.
Na kanálech s velkým zpožděním velmi neefektivní
* skupinové potvrzování (pipelining): efektivní pro spoje s velkou dobou
zpoždění
Continuous ARQ (Automatic Retransmission Request): na full-duplex kanálu,
efektivita až 100%
Protokoly využívající metody klouzavého okénka (sliding window)
...............................................................
Stanice smí vyslat i více rámců (počet dán šířkou vysílacího okna).
Při odeslání se pro každý rámec nastartuje časovač pro potvrzení.
ACK se posílá od každého přijatého rámce, popř. do časového limitu od času
příchodu prvního dosud nepotvrzeného rámce
Pro vyloučení duplikace při retransmisi jsou jednotlivé rámce číslovány
sekvenčními čísly.
* vysílací okno - buffer s vyslanými rámci, které dosud nebyly potvrzeny
a možná budou muset být vyslány znovu
* přijímací okno - buffer na přijímané rámce, které ještě nemohly být
doručeny vyšší vrstvě přijímače, protože dosud chybí
některý z předchozích rámců v řadě
Obě okénka "kloužkou" po sekvenčních číslech
Vysílač:
Seq# ------------------------------------------------->
+-------------+---------------------+-----------------+
| vyslané a | vyslané, ale | budoucí rámce |
| potvrzené | dosud nepotvrzené | od vyšší |
| rámce | rámce | vrstvy |
+-------------+---------------------+-----------------+
Znázornění protokolu sliding window
Používají se dvě varianty sliding window protokolu:
1) Go-back-N: šířka okna přijímače 1 rámec
Chování při poškození rámce:
a) chyba v rámci i:
- přijímač pošle NAK nebo mlčí (převod na ztrátu rámce v síti)
- vysílač při příjmu NAK opakuje všechny rámce vysílacího okna od i znovu
b) rámec se ztratí:
- přijímač očekává rámec i-1, ten se ztratil, ale přišel jeho
následník i. Přijímač odešle NAK i
(nebo mlčí, čímž se převede na ztrátu rámce)
c) rámec i se ztratí a další se nevysílají:
- vysílač vytimeoutuje a rámec i pošle znovu
Chování při poškození potvrzení:
- pokud se ztratí ACK i, může jej nahradit ACK s vyšším číslem,
pokud příjde před timeoutem vysílače pro rámec i. Pokud se to nestihne,
vyšle vysílač rámec i a zbytek vysílacího okna znovu
- Poškozený/ztracený NAK i: vysílač vytimeoutuje a vyšle všechny rámce
svého okna znovu od i včetně
Pozn.: Šířka okna musí být aspoň o jednu menší než počet seq. čísel
(nerozlišili bychom ztrátu ztrátu všech rámců okna)
2) Selective repeat: šířka okna přijímače více než jeden rámec
- retransmise jen těch rámců, které vytimeoutují nebo jsou přijímačem
explicitně odmítnuty (NAK).
- přijímač musí obsahovat buffery na rámce, které příjdou za chybovým
a uchovávat je do doplnění celé sekvence (a jejího poskytnutí aplikaci).
Pozn.: Maximální šířka okna: polovina sekvenčních čísel
(z důvodu překrývání vysílacího a přijímacího okna).
Pozn.: Negativní potvrzování se často nepoužívá, řeší se timeouty
na straně vysílače. Může však urychlit opravu chyb.
Srovnání go-back-N a selective repeat
Poznámka: Maximální šířka přijímacího okna může být stanovena pevně.
Inzerování aktuální šířky přijímacího okna v povrzeních však můžeme
protokol současně použít pro řízení toku dat od vysílače
(flow control)-využito v TCP. Vysílací okno se pak dynamicky
upravuje tak, aby nepřesahovalo šířku přijímacího okna.
Poznámka: piggybacking - připojování potvrzení k informačním rámcům
ve druhém směru.
Poznámka: Sliding window se obvykle aplikuje na spojové/síťové vrstvě
modelu OSI-RM.
Spojová vrstva
-přenos mezi sousedními systémy
-přenášená informace seskupována do rámců (frame):
křídlová značka,hlavička,tělo,kontrolní součet,křídlová značka
hlavička: adresy (cíl,zdroj), řídící bity
Znakově a bitově orientované protokoly
--------------------------------------
> Bajtově(znakově) orintované protokoly - závislé na použité znakové sadě
(ASCII/EBCDIC/...). Řídící znaky vyhrazeny, ne na fixních pozicích.
Použití v terminálových a řídících systémech s asynchronními linkami.
> Bitově orientované protokoly
- rámce dohodnutého formátu ohraničené křídlovýmu
značkami (flag, 01111110).
Pro přenos tohoto vzoru v datech se používá bit stuffing,
při vysílání 01111110 vysílač vkládá dodatečnou nulu před šestou
jedničku - přijímač tuto vloženou nulu z dat odstraní.
- rámce lze oddělit i vhodným kódováním (např. porušení pravidel
střídání polarity u kódu AMI).
Používané protokoly spojové vrstvy
==================================
* Znakově orientované protokoly
BSC: Binary Synchronous Control (bisync)
----------------------------------------
IBM, kolem 1965
- half duplex
- point to point i multipoint
- definovaná sada řídících znaků (SYN,STX,ETX,DLE,...)
* Bitově orientované protokoly:
HDLC (ISO) - High-level Data Link Control
-----------------------------------------
Historie:
- odvozen z protokolu SDLC (Synchronous Data Link Control) - z IBM SNA,
přijato ANSI a pak ISO 3309, 4335, 7478, 7776, 7809
- původně pro komunikaci mainframe s terminály
- CCITT přijalo a modifikovalo jako LAP (Link Access Procedure) pro X.25,
později opět modifikace CCITT jako LAPB (kompatibilnější s pozdější
verzí HDLC)
- synchronní plně duplexní komunikace v konfiguraci dvoubodové i vícebodové
- stále používán (nebo jeho mutace LAP, LAPB, LAPD, LAPM, LAPF, ...),
v ISDN, Frame Relay, X.25, jako enkapsulace na sériových linkách ve WAN,
mezi modemy, ...
Přenosové režimy:
> Normal Response Mode, NRM: primární řídící stanice a řada podřízených
sekundárních
> Asynchronous Response Mode, ARM: sekundární stanice smí samovolně začít
komunikovat s primární
> Asynchronous Balanced Mode, ABM: stanice současně primární i sekundární,
každá smí samovolně zahájit vysílání
Typy rámců:
> I (Information): uživatelská data ve spojově orientovaném režimu
> U (Unnumbered): nečíslované rámce, uživatelská data nebo řídící funkce
> S (Supervisory): bez uživatelské informace, číslované, použití pro
navazování a rušení spojení, informace o stavu, potvrzování
Formát rámce:
01111110, adresa, control, data, checksum, 01111110
Na prázdné linkce neustálý tok křídlových značek.
adresa - použita na linkach s více terminály; na point-to-point linkách
někdy použita pro rozlišeni příkazu a odpovědi, obvykle nevyužito
control - seq #, potvrzování, ...
I: 0,Seq#(3),P/F(1),Next#(3)
S: 10,Type(2),P/F(1),Next#(3)
Type:
0: ack frame (RECEIVER READY,RR) - pokud není do čeho piggybackovat
1: NAK (REJECT) - indikace chyby přenosu (pole Next# udává první
špatně přijatý rámec)
2: RECEIVER NOT READY: jako typ 0 (potvrzuje přijetí, ale pozastavení
vysílače, přijímač má dočasné problémy, komunikace
se obnoví po RR, REJECT,...)
3: SELECTIVE REJECT: žádost o retransmisi specifikovaného rámce,
v SDLC a LAPB není použit (tam pouze režim go-back-N)
U: 11,Type(2),P/F(1),Modifier(3)
- pro řízení nebo nespolehlivou nespojovanou službu, v různych mutacích
protokolu rozdílné použití (příkazy):
DISC (Disconnect) - informace o vypínáni stanice
SNRM (Set Normal Response Mode) - po přihlášení stanice na linku, vynucení
seq # na 0, režim master-slave, pro terminály.
SABM (Set Asynchronous Balanced Mode) - reset linky, oba partneři
na stejné úrovni.
SNRME/SABME: jako SNRM/SABM, ale "extended" frame format, 7-bitová seq #
(užitečné zejména na linkách s velkým zpožděním,
např. družicové spoje).
FRMR (Frame Reject) - indikuje, ze přišel rámec s nesprávnou sémantikou.
UA (Unnumbered Acknowledgement) - potvrzování řídících příkazů v U rámcich
Sekvenení čísla nepotřebná, protože v jedne chvíli může být
vyslán jen jeden (nepotvrzený) příkaz
Bit P/~F (Poll/Final):
Význam poll: výzva terminálu k vysíláni (řízení řídícím počítačem).
Význam final: při vysílání nastavuje terminál ve všech rámcích, mimo
posledního, bit na P (tedy not Final).
Jiné použití: vynucení Next# (ACK) od protistanice v S rámci
(namísto čekání na piggybacked informaci)
Protokol sliding window, 3/7-bitova sekvenční čísla.
.........................................................................
Z HDLC je odvozena řada protokolů, liší se délkou rámce a formátem
pole adresy a řídícího pole v rámci. Zpravidla je povolená podmnožina příkazu
HDLC, odpovídající režimu SABME.
LAPB: Link Access Procedure Balanced
------------------------------------
- podmnožina HDLC, pouze SABM režim,
jiný formát řídícího pole, adresa využita pro specifikaci povelu
- pouze na linkách bod-bod
- povolené povely podmnožinou HDLC: RR,RNR,REJ,SABM,DISC,DM,UA,FRMR
- číslování rámců modulo 8
- používán v sítích X.25 (v tomto doporučení také specifikován)
LAPD: Link Access Procedure on D-Channel
----------------------------------------
- mutace HDLC, použití v ISDN na 2.vrstvě u D-kanálu
- pouze SABME režim, jinak odpovídá LAPB
- řídící pole odpovídá extended režimu HDLC, 8 bitů pro seq. čísla
- adresové pole 1-2 oktety:
SAPI - Service Access Point Identifier
C/R - Command/Response
TEI - Terminal Equipment Identifier
LAPF: Link Access Procedure on Frame Relay
------------------------------------------
- rámce 5-8189 B
- nemá řídící pole, spojeno s adresovým polem:
DLCI: Data Link Connection Identifier
C/R - Command/Response
DE - Discard Eligible - nastavuje stanice pro explicitní označení
provozu s nižší prioritou nebo frame handler při překročení CIR
(Commited Information Rate, dohodnutá rámcová rychlost)
FECN - Forward Explicit Congestion Notification - síť oznamuje příjemci
stav přetížení
BECN - Backward Explicit Congestion Notification - síť nebo příjemce, který
obdržel FECN oznamuje odesílateli stav přetížení
LAPM: Použití v modemech
------------------------
Logical Link Control - IEEE 802.2
---------------------------------
Podle ISO 8802 se linková vrstva OSI dělí na podvrstvy MAC (Media Access
Control) a LLC (Logical Link Control). Informace a formáty rámců LLC jsou
nezávislé na typu použité sítě. LLC vrstva přidává hlavičku LLC, vychází z HDLC.
Funkce vrsvy LLC
- error-control, flow-control
- zakrývá rozdíly mezi sítěmi projektu 802, společný formát a rozhraní
k síťové vrstvě
Typy služeb:
1) nespojovaná služba nepotvrzovaná - nejrozšířenější, není flow control
a error control, detekci chyb a zahazování chybných rámců řeší MAC vrstva
2) spojovaná služba - služba s navazováním logického spojení, korekce chyb,
flow control, sekvencování rámců. Režim odpovída Extended Asynchronous
Balanced Mode v HDLC.
3) nespojovaná služba s potvrzováním - nejméně využívaná
Formát rámce LLC:
DSAP, SSAP, řízení, data
(umístěn v datové části MAC rámce)
DSAP-Destination Service Access Point, SSAP-Source Service Access Point
- identifikují komunikující procesy na cílovém a zdrojovém počítači
V poli řízení podmnožina příkazů z HDLC.
Pozn.: Enkapsulace SNAP:
Je-li DSAP=AAh, řízení=AAh: jde o tzv. SNAP enkapsulaci. V tomto případě
za polem řízení následuje identifikace výrobce (03h) a 2-bajtový kód protokolu
(odpovídající EtherType z MAC rámce 802.3). Lokální sítě podporující
enkapsulaci LLC musí podporovat i enkapsulaci SNAP.
Serial Line IP (SLIP)
---------------------
- RFC-1055.
- pro provoz na dvoubodových asynchronních sériových linkách
- definuje velmi jednoduchý formát rámce, přímo vkládá IP-pakety:
vyhrazuje znaky END (0300) a ESC (0333).
* END ukončuje rámec, někdy se používá i před začátkem paketu, aby přijímač
zahodil případná přijatá data, která na lince vznikla vlivem rušení
* místo znaku END v datech se pošle ESC 0334, místo ESC se pošle ESC 0335
Délka rámců (podle implementace BSD) 1006 B.
- nezabezpečuje detekci chyb při přenosu
Pozn.: IP-protokol má kontrolní součet pouze ze záhlaví a kontrolní součet
v protokolu UDP je nepovinný).
- rámec protokolu SLIP nenese informaci o přenášeném protokolu síťové vrstvy,
není tedy na jedné lince možné přenášet více protokolů současně
- jednoduchý, minimální konfigurace (IP adresy obou stran),
žádné SW dohadování parametrů mezi konci linky
Compressed SLIP (CSLIP), RFC-1144:
- komprese hlaviček IP, stavový - na jedné lince lze současně komprimovat
max. 255 spojení => nevhodné pro propojování páteřních směrovačů.
Point to Point Protocol (PPP)
-----------------------------
- RFC 1661, 1662
- rámce podobné HDLC (U-rámce)
- na synchronních i asynchronních linkách
- dvoubodový spoj
- detekce chyb v rámci
- možnost přenosu více protokolů na lince současně
- možnost autentizace (PAP,CHAP)
- dohoda mezi konci linky na parametrech přenosu
Pomocné protokoly:
Link Control Protocol (LCP) - navazování spojení, autentikace, testování
spojení, ...
Network Control Protocols (NCP) - skupina protokolů, specifických pro
jednotlivé přenášení síťové protokoly, slouží pro dohadování parametrů
specifických pro jednotlivé síťové protokoly. Např. IPCP je pro protokol
IP, IPXCP pro IPX atd. Každý takový protokol je popsán ve zvláštním RFC.
Možnosti autentikace uživatelů:
- terminálový dialog: zadání jména a hesla ještě před spuštěním protokolu PPP
- Protokol Password Authentication Protocol (PAP): Jméno uživatele a heslo
zasíláno jako cleartext
- Challenge Handshake Authentication Protocol (CHAP):
Oba konce sdílí stejný šifrovací klíč (symetrické šifrování). Stanice,
která autentizaci inicializujei, vygeneruje náhodný řetězec jako
dotaz, který odešle druhé straně. Druhá strana tento řetězec zašifruje
pomocí sdíleného klíče a odešle zpět, příjemce zašifruje původní řetězec
svým heslem a porovná s přijatým. Heslo tedy nikdy neputuje linkou
v čisté podobě.