Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
Sieci komputerowe
Autor: Andrew S. Tanenbaum
Tumaczenie: Andrzej Grayski, Adam Jarczyk
ISBN: 83-7361-557-1
Tytu oryginau: Computer Networks, 4th Edition
Format: B5, stron: 804
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treci
O Autorze...............................................................................................................13
Przedmowa.............................................................................................................15
1.
Wprowadzenie .......................................................................................................19
1.1. Zastosowania sieci komputerowych..........................................................................................................20
1.1.1. Zastosowania w biznesie ................................................................................................................20
1.1.2. Zastosowania domowe....................................................................................................................23
1.1.3. Uytkownicy mobilni .....................................................................................................................26
1.1.4. Kwestie spoeczne ..........................................................................................................................28
1.2. Sprzt sieciowy .........................................................................................................................................30
1.2.1. Sieci lokalne ...................................................................................................................................32
1.2.2. Sieci miejskie..................................................................................................................................33
1.2.3. Sieci rozlege ..................................................................................................................................33
1.2.4. Sieci bezprzewodowe .....................................................................................................................36
1.2.5. Sieci domowe .................................................................................................................................38
1.2.6. Sieci zoone...................................................................................................................................39
1.3. Oprogramowanie sieciowe........................................................................................................................40
1.3.1. Hierarchie protokow ....................................................................................................................40
1.3.2. Zagadnienia projektowania warstw ................................................................................................44
1.3.3. Usugi poczeniowe i bezpoczeniowe ........................................................................................45
1.3.4. Funkcje podstawowe usug.............................................................................................................47
1.3.5. Zwizki usug z protokoami ..........................................................................................................48
1.4. Modele odniesienia ...................................................................................................................................49
1.4.1. Model odniesienia OSI ...................................................................................................................49
1.4.2. Model odniesienia TCP/IP..............................................................................................................52
1.4.3. Porwnanie modeli odniesienia OSI i TCP/IP................................................................................55
1.4.4. Krytyka modelu i protokow OSI .................................................................................................56
1.4.5. Krytyka modelu odniesienia TCP/IP ..............................................................................................58
1.5. Przykady sieci ..........................................................................................................................................59
1.5.1. Internet ...........................................................................................................................................59
1.5.2. Sieci poczeniowe: X.25, Frame Relay i ATM .............................................................................67
SPIS TRECI
2.
Warstwa fizyczna...................................................................................................87
2.1. Teoretyczne podstawy transmisji danych..................................................................................................87
2.1.1. Analiza Fouriera .............................................................................................................................87
2.1.2. Sygnay z ograniczonym pasmem ..................................................................................................88
2.1.3. Maksymalna przepywno kanau .................................................................................................91
2.2. Kierowane noniki transmisji....................................................................................................................91
2.2.1. Noniki magnetyczne......................................................................................................................92
2.2.2. Skrtka............................................................................................................................................92
2.2.3. Kabel koncentryczny ......................................................................................................................93
2.2.4. wiatowody ...................................................................................................................................94
2.3. Transmisja bezprzewodowa ....................................................................................................................100
2.3.1. Widmo elektromagnetyczne .........................................................................................................100
2.3.2. Transmisja radiowa.......................................................................................................................102
2.3.3. Transmisja mikrofalowa ...............................................................................................................103
2.3.4. Fale milimetrowe i podczerwie...................................................................................................106
2.3.5. Transmisja wietlna ......................................................................................................................106
2.4. Satelity telekomunikacyjne .....................................................................................................................107
2.4.1. Satelity geostacjonarne .................................................................................................................108
2.4.2. Satelity na orbitach rednich.........................................................................................................111
2.4.3. Satelity na orbitach niskich...........................................................................................................111
2.4.4. Satelity kontra wiatowd ...........................................................................................................114
2.5. Publiczna komutowana sie telefoniczna................................................................................................115
2.5.1. Struktura systemu telefonicznego .................................................................................................115
2.5.2. Ptla lokalna: modemy, ADSL i ptle bezprzewodowe................................................................118
2.5.3. cza dalekosine i multipleksowanie........................................................................................128
2.5.4. Komutacja.....................................................................................................................................136
2.6. Systemy telefonii mobilnej .....................................................................................................................140
2.6.1. Telefony mobilne pierwszej generacji gosowe analogowe .....................................................142
2.6.2. Telefony mobilne drugiej generacji gosowe cyfrowe .............................................................145
2.6.3. Telefony mobilne trzeciej generacji cyfrowy gos i dane ........................................................152
2.7. Telewizja kablowa ..................................................................................................................................154
2.7.1 Telewizja i anteny zbiorcze ...........................................................................................................155
2.7.2. Internet w kablwce......................................................................................................................155
2.7.3. Przydziay pasma..........................................................................................................................157
2.7.4. Modemy kablowe .........................................................................................................................158
2.7.5. ADSL czy kabel?..........................................................................................................................160
2.8. Podsumowanie ........................................................................................................................................161
SPIS TRECI
3.
Warstwa cza danych..........................................................................................167
3.1. Problemy projektowe warstwy cza danych ..........................................................................................167
3.1.1. Usugi wiadczone dla warstwy sieciowej....................................................................................168
3.1.2. Ramkowanie .................................................................................................................................170
3.1.3. Kontrola bdw ...........................................................................................................................173
3.1.4. Sterowanie przepywem................................................................................................................174
3.2. Wykrywanie i korekcja bdw...............................................................................................................175
3.2.1. Kody korekcyjne...........................................................................................................................175
3.2.2. Kody detekcyjne ...........................................................................................................................177
3.3. Podstawowe protokoy cza danych.......................................................................................................181
3.3.1. Nieograniczony protok simpleksowy ........................................................................................184
3.3.2. Simpleksowy protok stop-and-wait ...........................................................................................186
3.3.3. Protok simpleksowy dla kanau z zakceniami ........................................................................187
3.4. Protokoy z oknem przesuwnym .............................................................................................................190
3.4.1. Protok z jednobitowym oknem przesuwnym.............................................................................193
3.4.2. Protok uywajcy techniki wr do n ....................................................................................194
3.4.3. Protok uywajcy powtrze selektywnych ..............................................................................200
3.5. Weryfikacja protokow..........................................................................................................................205
3.5.1. Modele oparte na automatach skoczonych .................................................................................206
3.5.2. Modele sieci Petriego ...................................................................................................................208
3.6. Przykadowe protokoy cza danych......................................................................................................210
3.6.1. Protok HDLC ............................................................................................................................210
3.6.2. Warstwa cza danych w Internecie..............................................................................................213
3.7. Podsumowanie ........................................................................................................................................217
4.
Podwarstwa kontroli dostpu do nonika ............................................................221
4.1. Problem przydzielania kanau .................................................................................................................221
4.1.1. Statyczne przydzielanie kanaw w sieciach LAN i MAN ...........................................................222
4.1.2. Dynamiczne przydzielanie kanau w sieciach LAN i MAN .........................................................223
4.2. Protokoy dostpu wielokrotnego............................................................................................................224
4.2.1. ALOHA ........................................................................................................................................224
4.2.2. Protokoy dostpu wielokrotnego z wykrywaniem nonej............................................................228
4.2.3. Protokoy bezkolizyjne .................................................................................................................230
4.2.4. Protokoy z ograniczon rywalizacj ............................................................................................232
4.2.5. Protokoy dostpu wielokrotnego z podziaem dugoci fal..........................................................235
4.2.6. Protokoy bezprzewodowych sieci LAN ......................................................................................237
4.3. Ethernet...................................................................................................................................................240
4.3.1. Okablowanie sieci Ethernet ..........................................................................................................241
4.3.2. Kodowanie Manchester ................................................................................................................243
4.3.3. Protok podwarstwy MAC w sieciach Ethernet ..........................................................................244
4.3.4. Algorytm binarnego odczekiwania wykadniczego ......................................................................246
4.3.5. Wydajno sieci Ethernet .............................................................................................................247
4.3.6. Przeczany Ethernet ....................................................................................................................249
4.3.7. Fast Ethernet.................................................................................................................................250
4.3.8. Gigabit Ethernet............................................................................................................................253
4.3.9. IEEE 802.2: sterowanie czem fizycznym ..................................................................................256
4.3.10. Ethernet z perspektywy czasu.....................................................................................................257
SPIS TRECI
5.
Warstwa sieciowa ................................................................................................299
5.1. Problemy projektowe warstwy sieciowej ................................................................................................299
5.1.1. Komutacja pakietw z buforowaniem ..........................................................................................299
5.1.2. Usugi wiadczone na rzecz warstwy transportowej.....................................................................300
5.1.3. Implementacja usugi bezpoczeniowej ......................................................................................301
5.1.4. Implementacja usugi poczeniowej ............................................................................................302
5.1.5. Porwnanie podsieci obwodw wirtualnych i datagramowych ....................................................303
5.2. Algorytmy routingu.................................................................................................................................304
5.2.1. Zasada optymalnoci ....................................................................................................................306
5.2.2. Routing z wyborem najkrtszej cieki ........................................................................................307
5.2.3. Routing rozpywowy ....................................................................................................................310
5.2.4. Routing z uyciem wektorw odlegoci ......................................................................................310
5.2.5. Routing z uyciem stanw pocze.............................................................................................313
5.2.6. Routing hierarchiczny...................................................................................................................318
5.2.7. Routing rozgoszeniowy ...............................................................................................................319
5.2.8. Routing rozsyania grupowego .....................................................................................................321
5.2.9. Routing dla hostw mobilnych .....................................................................................................323
5.2.10. Routing w sieciach ad hoc ..........................................................................................................325
5.2.11. Wyszukiwanie wzw w sieciach rwnorzdnych ....................................................................329
5.3. Algorytmy kontroli przecie................................................................................................................333
5.3.1. Oglne zasady kontroli przecie ...............................................................................................334
5.3.2. Zasady zapobiegania przecieniom.............................................................................................336
5.3.3. Kontrola przecie w podsieciach obwodw wirtualnych ..........................................................337
SPIS TRECI
6.
Warstwa transportowa .........................................................................................413
6.1. Usuga transportowa ...............................................................................................................................413
6.1.1. Usugi wiadczone na rzecz wyszych warstw .............................................................................413
6.1.2. Prymitywy usug transportowych .................................................................................................415
6.1.3. Gniazda Berkeley Sockets ............................................................................................................418
6.1.4. Przykad programowania internetowy serwer plikw..............................................................419
6.2. Elementy protokow transportowych ....................................................................................................424
6.2.1. Adresowanie .................................................................................................................................425
6.2.2. Ustanawianie poczenia ..............................................................................................................428
6.2.3. Zwalnianie poczenia ..................................................................................................................433
6.2.4. Sterowanie przepywem i buforowanie.........................................................................................437
6.2.5. Multipleksowanie .........................................................................................................................441
6.2.6. Odtwarzanie po awarii..................................................................................................................442
6.3. Prosty protok transportowy ..................................................................................................................444
6.3.1. Przykadowe prymitywy usug .....................................................................................................444
6.3.2. Przykadowa jednostka transportowa............................................................................................445
6.3.3. Protok jako automat skoczony.................................................................................................453
6.4. Internetowe protokoy transportowe UDP..........................................................................................456
6.4.1. Wprowadzenie do protokou UDP................................................................................................456
6.4.2. Zdalne wywoania procedur .........................................................................................................457
6.4.3. Protok transportowy czasu rzeczywistego .................................................................................460
6.5. Internetowe protokoy transportowe TCP ..........................................................................................463
6.5.1. Wprowadzenie do TCP.................................................................................................................464
6.5.2. Model usugi TCP.........................................................................................................................464
10
SPIS TRECI
7.
Warstwa aplikacji.................................................................................................507
7.1. DNS system nazw domen ..................................................................................................................507
7.1.1. Przestrze nazw DNS ...................................................................................................................508
7.1.2. Rekordy zasobw .........................................................................................................................511
7.1.3. Serwery nazw ...............................................................................................................................514
7.2. Poczta elektroniczna ...............................................................................................................................516
7.2.1. Architektura i usugi .....................................................................................................................517
7.2.2. Agent uytkownika.......................................................................................................................519
7.2.3. Formaty wiadomoci ....................................................................................................................521
7.2.4. Transfer wiadomoci ....................................................................................................................529
7.2.5. Protokoy dostarczania kocowego ..............................................................................................532
7.3. WWW .....................................................................................................................................................538
7.3.1. Przegld architektury WWW........................................................................................................539
7.3.2. Statyczne dokumenty WWW........................................................................................................554
7.3.3. Dynamiczne dokumenty WWW ...................................................................................................568
7.3.4. HTTP protok przesyu hipertekstu........................................................................................576
7.3.5. Poprawianie wydajnoci ...............................................................................................................581
7.3.6. Bezprzewodowa sie WWW ........................................................................................................587
7.4. Multimedia..............................................................................................................................................597
7.4.1. Wprowadzenie do cyfrowego audio .............................................................................................597
7.4.2. Kompresja audio...........................................................................................................................600
7.4.3. Strumieniowe audio......................................................................................................................602
7.4.4. Radio internetowe.........................................................................................................................605
7.4.5. VoIP telefonia internetowa ......................................................................................................607
7.4.6. Wprowadzenie do wideo ..............................................................................................................614
7.4.7. Kompresja wideo..........................................................................................................................617
7.4.8. Wideo na yczenie........................................................................................................................624
7.4.9. MBone magistrala multiemisyjna ............................................................................................631
7.5. Podsumowanie ........................................................................................................................................634
SPIS TRECI
11
8.
Bezpieczestwo w sieciach komputerowych.......................................................641
8.1. Kryptografia............................................................................................................................................643
8.1.1. Wprowadzenie do kryptografii .....................................................................................................644
8.1.2. Szyfry podstawieniowe.................................................................................................................646
8.1.3. Szyfry przestawieniowe................................................................................................................648
8.1.4. Systemy kluczy jednokrotnych .....................................................................................................649
8.1.5. Dwie fundamentalne zasady kryptografii .....................................................................................653
8.2. Algorytmy szyfrowania z kluczami symetrycznymi ...............................................................................655
8.2.1. DES ..............................................................................................................................................656
8.2.2. AES ..............................................................................................................................................659
8.2.3. Tryby szyfrowania ........................................................................................................................662
8.2.4. Inne przykady szyfrw ................................................................................................................667
8.2.5. Kryptoanaliza ...............................................................................................................................668
8.3. Algorytmy z kluczami publicznymi ........................................................................................................668
8.3.1. RSA ..............................................................................................................................................669
8.3.2. Inne algorytmy szyfrowania z kluczem publicznym.....................................................................671
8.4. Podpis cyfrowy .......................................................................................................................................672
8.4.1. Podpisy oparte na kluczach symetrycznych..................................................................................672
8.4.2. Podpisy oparte na kluczach publicznych ......................................................................................673
8.4.3. Skrty komunikatw.....................................................................................................................675
8.4.4. Atak urodzinowy ..........................................................................................................................678
8.5. Zarzdzanie kluczami publicznymi.........................................................................................................680
8.5.1. Certyfikaty....................................................................................................................................681
8.5.2. X.509 ............................................................................................................................................682
8.5.3. Infrastruktura kluczy publicznych ................................................................................................683
8.6. Bezpieczestwo komunikacji..................................................................................................................686
8.6.1. IPsec .............................................................................................................................................686
8.6.2. Zapory sieciowe............................................................................................................................689
8.6.3. Prywatne sieci wirtualne...............................................................................................................692
8.6.4. Bezpieczestwo w sieciach bezprzewodowych ............................................................................693
8.7. Protokoy uwierzytelniania .....................................................................................................................698
8.7.1. Uwierzytelnianie w oparciu o wspdzielony tajny klucz.............................................................699
8.7.2. Ustanawianie dzielonego klucza: metoda Diffiego-Hellmana wymiany kluczy...........................702
8.7.3. Uwierzytelnianie z udziaem centrum dystrybucji kluczy ............................................................704
8.7.4. Uwierzytelnianie w oparciu o Kerberos........................................................................................707
8.7.5. Uwierzytelnianie z uyciem kluczy publicznych..........................................................................709
8.8. Bezpieczestwo poczty elektronicznej....................................................................................................709
8.8.1. PGP...............................................................................................................................................710
8.8.2. PEM..............................................................................................................................................713
8.8.3. S/MIME........................................................................................................................................714
8.9. Bezpieczestwo WWW ..........................................................................................................................715
8.9.1. Zagroenia ....................................................................................................................................715
8.9.2. Bezpieczne nazewnictwo..............................................................................................................716
8.9.3. SSL ...............................................................................................................................................722
8.9.4. Bezpieczestwo ruchomego kodu.................................................................................................725
8.10. Spoeczne aspekty sieci komputerowych ..............................................................................................727
8.10.1. Ochrona prywatnoci ..................................................................................................................728
8.10.2. Wolno sowa............................................................................................................................730
8.10.3. Prawa autorskie...........................................................................................................................733
8.11. Podsumowanie ......................................................................................................................................735
12
SPIS TRECI
9.
Bibliografia i literatura uzupeniajca..................................................................741
9.1. Zalecana literatura uzupeniajca ............................................................................................................741
9.1.1. Wprowadzenie i zagadnienia oglne ............................................................................................742
9.1.2. Warstwa fizyczna .........................................................................................................................743
9.1.3. Warstwa cza danych ..................................................................................................................745
9.1.4. Podwarstwa sterowania dostpem do nonika ..............................................................................745
9.1.5. Warstwa sieciowa .........................................................................................................................746
9.1.6. Warstwa transportowa ..................................................................................................................748
9.1.7. Warstwa aplikacji .........................................................................................................................748
9.1.8. Bezpieczestwo sieciowe .............................................................................................................749
9.2. Bibliografia w ukadzie alfabetycznym...................................................................................................751
Skorowidz ............................................................................................................769
W niniejszym rozdziale poznamy zasady projektowania warstwy 2. warstwy cza danych. Zajmiemy si algorytmami zapewniajcymi niezawodn, skuteczn komunikacj pomidzy dwoma
ssiadujcymi komputerami na poziomie tej warstwy. Przez ssiadujce rozumiemy dwa komputery
poczone kanaem komunikacyjnym, ktry zachowuje si jak przewd (np. kabel koncentryczny,
linia telefoniczna lub dwupunktowy kana bezprzewodowy). Istotn waciwoci, ktra powoduje,
e kana zachowuje si jak kabel, jest to, e bity s dorczane w dokadnie tej samej kolejnoci,
w ktrej byy wysane.
Na pierwszy rzut oka ten problem moe si wydawa tak trywialny, e nie trzeba adnego
oprogramowania, z ktrym musielibymy si zapozna komputer A po prostu wysya bity kablem,
a komputer B je odbiera. Niestety, w kanaach komunikacyjnych wystpuj od czasu do czasu bdy.
Co wicej, kady kana ma skoczon przepywno i niezerowe opnienie propagacji pomidzy
chwil wysania a chwil odbioru bitu. Te ograniczenia maj znaczcy wpyw na wydajno przesyu
danych. Protokoy uywane do komunikacji musz uwzgldnia wszystkie te czynniki. Wanie te
protokoy s tematem niniejszego rozdziau.
Po wprowadzeniu do podstawowych problemw projektowych warstwy cza danych zaczniemy
analiz jej protokow od poznania charakteru bdw, ich przyczyn i sposobw, w jakie mog by
wykrywane i korygowane. Nastpnie przestudiujemy kilka protokow o rosncej zoonoci, z ktrych
kady rozwizuje coraz wicej problemw wystpujcych w tej warstwie. Zakoczymy opisem
modelowania i poprawnoci protokow oraz podamy kilka przykadw protokow cza danych.
168
RYSUNEK 3.1.
Relacje pomidzy
pakietami i ramkami
Wprawdzie niniejszy rozdzia jest powicony warstwie cza danych i protokoom cza danych, lecz wiele zasad, ktre tu poznamy, takich jak kontrola bdw i sterowanie przepywem,
spotkamy rwnie w protokoach transportowych i innych. W rzeczy samej w wielu sieciach funkcje
te s obecne tylko w wyszych warstwach, a nie w warstwie cza danych. Jednake niezalenie
od ich pooenia zasady s praktycznie takie same, wic tak naprawd nie jest istotne, kiedy si
nimi zajmiemy. W warstwie cza danych czsto pojawiaj si one w najprostszych i najczystszych formach, dlatego te jest to dobre miejsce, by przyjrze im si dokadnie.
169
Nastpnym poziomem (w sensie niezawodnoci) jest usuga bezpoczeniowa z potwierdzeniami. Gdy usuga ta jest oferowana, nadal nie stosuje si logicznych pocze, lecz kada wysana
ramka jest indywidualnie potwierdzania. Dziki temu nadawca wie, czy ramka dotara bez bdw.
Jeli ramka nie dotrze w ustalonym czasie, mona j nada ponownie. Ta usuga jest przydatna dla
zawodnych kanaw, takich jak systemy bezprzewodowe.
Warto moe podkreli, e udostpnienie potwierdze w warstwie cza danych jest jedynie
optymalizacj, a nigdy wymogiem. Warstwa sieciowa zawsze moe wysa pakiet i czeka na jego
potwierdzenie. Jeli potwierdzenie nie wrci przed upywem okrelonego czasu, nadajnik moe
wysa jeszcze raz cay komunikat. Problem z t strategi polega na fakcie, e ramki maj zwykle
cile okrelon maksymaln dugo narzucon przez sprzt, a pakiety warstwy sieciowej nie. Jeli
przecitny pakiet podzielimy np. na 10 ramek, a 20% wszystkich ramek bdzie traconych, to moe
potrwa bardzo dugo, zanim cay pakiet zostanie przesany. Gdy potwierdzane i nadawane ponownie s pojedyncze ramki, cae pakiety przechodz znacznie szybciej. W niezawodnych kanaach, takich jak wiatowodowe, dodatkowe obcienie wprowadzane przez opasy protok cza danych
moe by niepotrzebne, lecz w kanaach bezprzewodowych, ktre z natury s zawodne, jest to
warte swojej ceny.
Wracajc do usug, najbardziej zaawansowan, jak moe udostpni warstwa cza danych
warstwie sieciowej, jest usuga poczeniowa. W takiej usudze komputery rdowy i docelowy
nawizuj poczenie przed przesaniem jakichkolwiek danych. Kada ramka wysana takim poczeniem ma swj numer, a warstwa cza danych gwarantuje, e kada wysana ramka zostanie
faktycznie odebrana. Co wicej, gwarantuje, e kada ramka zostanie odebrana raz i tylko raz oraz e
wszystkie ramki zostan odebrane we waciwej kolejnoci. W przeciwiestwie do tego w usudze
bezpoczeniowej moe si zdarzy, e utracone potwierdzenie spowoduje wysanie i odebranie
jednego pakietu kilka razy. Usuga poczeniowa daje procesom warstwy sieciowej odpowiednik
niezawodnego strumienia bitw.
Przy uyciu usugi poczeniowej transfer ma trzy wyrane fazy. W pierwszej zostaje nawizane poczenie przez inicjalizacj przez obie strony zmiennych i licznikw, potrzebnych do ledzenia
na bieco, ktre ramki zostay odebrane, a ktre nie. W drugiej fazie zostaje faktycznie przesana
jedna lub wicej ramek. W trzeciej i ostatniej fazie poczenie zostaje zakoczone, zwalniajc
zmienne, bufory i inne zasoby uywane do utrzymywania poczenia.
170
Spjrzmy na typowy przykad: podsie WAN skadajc si z routerw poczonych dwupunktowymi liniami telefonicznymi. Gdy ramka dociera do routera, sprzt sprawdza, czy nie zawiera
ona bdw (z uyciem technik, ktre poznamy w dalszej czci rozdziau), a nastpnie przekazuje
ramk do oprogramowania warstwy cza danych (ktre moe by wbudowane w ukad scalony na
karcie interfejsu sieciowego). Oprogramowanie warstwy cza danych sprawdza, czy to jest oczekiwana ramka, a jeli tak, przekazuje do oprogramowania rotingu pakiet zawarty w polu adunku.
Oprogramowanie rutingu wybiera nastpnie lini wyjciow i przekazuje pakiet z powrotem w d
do oprogramowania warstwy cza danych, ktre wysya pakiet. Rysunek 3.3 przedstawia przebieg
danych przez dwa routery.
Kod rutingu czsto wymaga, eby transmisja zostaa przeprowadzona poprawnie, czyli za pomoc niezawodnych, uporzdkowanych pocze na obu kocach czy dwupunktowych. Nie lubi
on, gdy po drodze gubi si zbyt wiele pakietw. Uczynienie z zawodnych linii komunikacyjnych
czy wygldajcych na idealne (a przynajmniej przyzwoite) jest zadaniem protokou cza danych
przedstawionego w prostokcie lini przerywan. Tak na marginesie, chocia pokazalimy w kadym routerze dwie kopie oprogramowania warstwy cza danych, to naprawd jedna kopia obsuguje wszystkie linie, przy czym dla kadej linii uywa innych tablic i struktur danych.
3.1.2. Ramkowanie
Aby wiadczy usugi na rzecz warstwy sieciowej, warstwa cza danych musi uywa usug, ktre
udostpnia jej warstwa fizyczna. Ta przyjmuje surowy strumie bitw i prbuje dorczy go do
miejsca przeznaczenia. Nie ma gwarancji, e ten strumie bitw bdzie pozbawiony bdw. Liczba
bitw odebranych moe by mniejsza, rwna lub wiksza od liczby bitw nadanych, a poszczeglne bity mog mie rne wartoci. Wykrywanie i w razie koniecznoci naprawa bdw naley
do warstwy czy danych.
Zazwyczaj robi si to tak, e warstwa cza danych dzieli strumie bitw na dyskretne ramki i oblicza sum kontroln dla kadej ramki (algorytmy sum kontrolnych omwimy w dalszej czci
rozdziau). Gdy ramka dociera do miejsca przeznaczenia, suma kontrolna jest obliczana ponownie.
171
Jeli wyliczona suma kontrolna rni si od tej zawartej w ramce, warstwa cza danych rozpoznaje, e wystpi bd, i podejmuje odpowiednie kroki (np. odrzuca bdn ramk i, ewentualnie,
odsya z powrotem informacj o bdzie).
Podzia strumienia bitw na ramki jest trudniejszy, ni si na pierwszy rzut oka wydaje. Jednym
ze sposobw ramkowania moe by wstawianie przerw czasowych pomidzy ramki, podobnie jak
wstawia si spacje pomidzy sowa w zwykym tekcie. Jednake sieci rzadko kiedy gwarantuj
utrzymanie zalenoci czasowych, wic moe zdarzy si, e te przerwy zostan cinite do zera
lub podczas transmisji zostan wprowadzone nowe przerwy.
Poniewa liczenie na zalenoci czasowe do oznaczania pocztku kadej ramki jest ryzykowne,
zostay opracowane inne metody. W niniejszym punkcie przyjrzymy si czterem metodom:
(1)
(2)
(3)
(4)
Zliczanie znakw.
Bajty znacznikowe z napenianiem bajtami.
Znaczniki pocztku i koca z napenianiem bitami.
Zmiany kodowania w warstwie fizycznej.
Pierwsza metoda ramkowania uywa pola w nagwku do oznaczenia liczby znakw w ramce.
Gdy warstwa cza danych w urzdzeniu docelowym widzi zliczenie znakw, to wie, jak wiele
znakw bdzie nastpowa w ramce, a wic rwnie gdzie skoczy si ramka. Rysunek 3.4 (a)
przedstawia t technik dla czterech ramek o dugoci kolejno 5, 5, 8 i 8 znakw.
RYSUNEK 3.4. Strumie znakw: (a) bez bdw, (b) z jednym bdem
Problem z tym algorytmem polega na tym, e liczba moe zosta przekamana przez bd
transmisji. Na przykad, jeli zliczenie znakw rwne 5 w drugiej ramce z rysunku 3.4 (b) stanie
si rwne 7, to odbiornik utraci synchronizacj i nie bdzie mg zlokalizowa nastpnej ramki.
Nawet jeli suma kontrolna bdzie niewaciwa, przez co odbiornik wykryje bd, nadal nie bdzie
mg ustali, gdzie zaczyna si nastpna ramka. Odesanie ramki do rda z daniem retransmisji
te nie pomoe, poniewa odbiornik nie wie, ile znakw musi pomin, aby wrci do pocztku
retransmisji. Z tego powodu metoda ze zliczaniem znakw jest ju uywana bardzo rzadko.
Druga metoda rozwizuje problem ponownej synchronizacji po bdzie przez rozpoczynanie i koczenie kadej ramki specjalnymi bajtami. W przeszoci bajty pocztku i koca byy rne, lecz
w ostatnich latach wikszo protokow uywa tego samego bajta, zwanego bajtem znacznikowym (ang. flag byte), jako separatora pocztkowego i kocowego oznaczonego na rysunku 3.5 (a)
172
RYSUNEK 3.5.
(a) Ramka
ograniczona bajtami
znacznikowymi.
(b) Cztery przykady
sekwencji bajtw
przed i po napenianiu
bajtami
jako . W ten sposb, jeli odbiorca kiedykolwiek utraci synchronizacj, to wystarczy e poszuka
bajta znacznikowego, aby znale koniec biecej ramki. Dwa kolejne bajty znacznikowe wskazuj koniec jednej ramki i pocztek nastpnej.
Powany problem pojawia si w tej metodzie przy transmisji danych binarnych, na przykad
programw wynikowych i liczb zmiennoprzecinkowych. Moe si z atwoci zdarzy, e wzorzec
bajta znacznikowego wystpi w danych. Ta sytuacja zwykle zakca ramkowanie. Jednym z rozwiza problemu jest wstawianie przez warstw cza danych u nadawcy specjalnego bajta unikowego (ESC) przed kady przypadkowy bajt znacznikowy w danych. Warstwa cza danych po
stronie odbierajcej usuwa bajt unikowy przed przekazaniem danych do warstwy sieciowej. Ta technika nosi nazw napeniania bajtami (byte stuffing) lub napeniania znakami (character stuffing).
Dziki niej bajt znacznikowy na kocu ramki moe zosta odrniony od takiego samego bajta
danych przez obecno lub nieobecno bajta unikowego przed sob.
Oczywicie nastpne pytanie brzmi: co si stanie, gdy bajt unikowy wystpi w rodku danych?
Odpowied: rwnie zostanie uzupeniony o bajt unikowy. Wobec tego dowolny pojedynczy bajt
unikowy jest elementem sekwencji unikowej, a dwa pod rzd oznaczaj, e pojedynczy bajt unikowy wystpi w danych w sposb naturalny. Kilka przykadw przedstawia rysunek 3.5 (b). W kadym przypadku sekwencja bajtw po usuniciu wypenienia jest dokadnie taka sama jak oryginalna.
Schemat napeniania bajtami pokazany na rysunku 3.5 jest nieco uproszczon wersj schematu
uywanego w protokole PPP, ktrego wikszo komputerw domowych uywa do komunikacji
ze swoim dostawc usug internetowych. PPP omwimy w dalszej czci rozdziau.
Powan wad tej metody ramkowania jest cisy zwizek ze stosowaniem 8-bitowych znakw. Nie wszystkie metody kodowania uywaj 8-bitowych znakw. Na przykad w UNICODE
znaki maj 16 bitw. W miar rozwoju sieci wady stosowania dugoci kodu znaku w mechanizmach
ramkowania zaczy by coraz bardziej oczywiste, wic trzeba byo opracowa now technik
pozwalajc na uywanie znakw o dowolnej dugoci.
Ta nowa technika pozwala umieszcza w ramce dowoln liczb bitw i stosowa kody znakw
o dowolnej liczbie bitw na znak. Metoda dziaa tak: kada ramka zaczyna si i koczy specjalnym
wzorcem bitw, 01111110 (w rzeczy samej to jest bajt znacznikowy). Zawsze, gdy warstwa cza
danych nadawcy napotyka w danych pi jedynek pod rzd, automatycznie wstawia po nich 0
do wychodzcego strumienia bitw. To napenianie bitami (ang. bit stuffing) przypomina napenianie bajtami, w ktrym do wyjciowego strumienia znakw przed kadym bajtem znacznikowym
wystpujcym w danych by wstawiany bajt unikowy.
173
174
175
176
Liczba pozycji, na ktrych rni si sowa kodowe, nosi nazw odlegoci Hamminga (Hamming, 1950). Jej znaczenie polega na tym, e jeli dwa sowa kodowe s odlege o d bitw, to bd
wymaga d jednobitowych bdw, aby przeksztaci jedno w drugie.
W wikszoci zastosowa transmisji danych wszystkie 2m moliwe wersje komunikatu danych
s legalne, lecz z uwagi na sposb, w jaki obliczane s bity kontrolne, nie wszystkie moliwe sowa kodowe (w liczbie 2n) s uywane. Na podstawie algorytmu obliczania bitw kontrolnych moemy teoretycznie zbudowa pen list legalnych sw kodowych, a na tej licie znale par
sw kodowych, dla ktrej odlego Hamminga bdzie minimalna. Bdzie ona odlegoci Hamminga kompletnego kodu.
Zdolnoci wykrywania i korekty bdw przez kod zale od jego odlegoci Hamminga. Aby
wykry d bdw, potrzebujemy kodu o odlegoci d + 1, poniewa w takim kodzie d jednobitowych
bdw nie bdzie mogo w aden sposb przeksztaci poprawnego sowa kodowego w inne poprawne
sowo kodowe. Gdy odbiornik otrzyma niepoprawne sowo kodowe, to bdzie mg stwierdzi wystpienie bdu transmisji. Analogicznie, aby naprawi d bdw, potrzebujemy kodu o odlegoci 2d + 1,
poniewa dziki temu legalne sowa kodowe bd od siebie na tyle odlege, e nawet po d zmian
oryginalne sowo kodowe bdzie bliej otrzymanego ni ktrekolwiek inne, co pozwoli je jednoznacznie zidentyfikowa.
Jako prosty przykad kodu detekcyjnego rozwamy kod, w ktrym do danych doczany jest
pojedynczy bit parzystoci. Ten bit jest wybierany tak, e liczba jedynek w sowie kodowym jest
parzysta (lub nieparzysta). Na przykad, przy wysyaniu 1011010 z bitem parzystoci, na koniec
dodawany jest bit dajcy w sumie cig 10110100. Z bitem nieparzystoci z 1011010 otrzymamy
10110101. Kod z jednym bitem parzystoci ma odlego 2, poniewa dowolny pojedynczy bd
da sowo kluczowe z niewaciw parzystoci. Ten kod pozwala wykrywa pojedyncze bdy.
Jako prosty przykad kodu korekcyjnego rozwamy kod majcy tylko cztery poprawne sowa:
0000000000, 0000011111, 1111100000 i 1111111111
Odlego dla tego kodu wynosi 5, co oznacza, e moe on naprawia podwjne bdy. Jeli zostanie
odebrane sowo kodowe 0000000111, odbiornik rozpozna, e oryginaem musi by 0000011111.
Jeli jednak potrjny bd zmieni 0000000000 na 0000000111, ten bd nie zostanie poprawnie
skorygowany.
Wyobramy sobie, e chcemy zaprojektowa kod z m bitw komunikatu i r bitw kontrolnych
pozwalajcy na korekt wszystkich pojedynczych bdw. Kady z 2m legalnych komunikatw ma
n nielegalnych sw kodowych w odlegoci 1. Otrzymujemy je przez systematyczne negowanie
kadego z n bitw w n-bitowym sowie kodowym utworzonym z komunikatu. Wobec tego kady
z 2m legalnych komunikatw wymaga powicenia mu n + 1 wzorcw bitw. Poniewa cakowita
liczba wzorcw wynosi 2n, musimy mie (n + 1)2m 2n. Uywajc n = m + r otrzymujemy wymg
(m + r + 1) 2r. Znajc m, moemy ustali minimaln liczb bitw kontrolnych niezbdn do korekty pojedynczych bdw.
Ten teoretyczny dolny limit jest w rzeczy samej do osignicia za pomoc metody autorstwa
Hamminga (1950). Bity sowa kluczowego s numerowane kolejno, zaczynajc od 1 na lewym
kocu, 2 zaraz po nim i tak dalej. Pozycje stanowice potg liczby 2 (1, 2, 4, 8, 16 itd.) s bitami
kontrolnymi. Pozostae (3, 5, 6, 7, 9 itd.) s wypeniane m bitw danych. Kady bit kontrolny wymusza parzysto (lub nieparzysto) pewnego zbioru bitw wraz z sob. Bit moe by zawarty w kilku
obliczeniach parzystoci. Aby zobaczy, w ktrych bitach kontrolnych uczestniczy bit na pozycji k,
moemy rozoy k na sum potg liczby 2. Na przykad, 11 = 1 + 2 + 8, a 29 = 1 + 4 + 8 + 16. Bit
jest sprawdzany tylko przez te bity kontrolne, ktre wystpuj w tym rozwiniciu (np. bit 11 jest
kontrolowany przez bity 1, 2 i 8).
Gdy zostaje odebrane sowo kluczowe, odbiornik zeruje licznik. Nastpnie sprawdza wszystkie
bity kontrolne k (k = 1, 2, 4, 8), czy maj poprawn parzysto. Jeli nie, odbiornik dodaje k do
licznika. Jeli po sprawdzeniu wszystkich bitw kontrolnych warto w liczniku wynosi zero (tzn.
177
jeli wszystkie byy poprawne), to sowo kodowe jest przyjmowane jako poprawne. Jeli licznik
jest niezerowy, to zawiera numer bdnego bitu. Na przykad, jeli bity kontrolne 1, 2 i 8 s bdne,
to zanegowanym bitem jest nr 11, poniewa jest to jedyny bit sprawdzany przez bity 1, 2 i 8. Rysunek 3.7 przedstawia kilka znakw ASCII zakodowanych jako 11-bitowe sowa kodowe z uyciem kodu Hamminga. Prosz pamita, e dane znajduj si na pozycjach 3, 5, 6, 7, 9, 10 i 11.
RYSUNEK 3.7.
Korekta bdw
za pomoc kodu
Hamminga
Kody Hamminga mog korygowa tylko pojedyncze bdy. Jest jednak sztuczka, ktra pozwala
na korekt przez te kody paczek bdw. Sekwencja k kolejnych sw kodowych jest ukadana w postaci tablicy, po jednym sowie kodowym na wiersz. Standardowo dane byyby wysyane jedno sowo
kodowe po drugim, z lewej do prawej. Aby korygowa bdy wystpujce w seriach, dane wysya si
kolumna po kolumnie, zaczynajc od pierwszej kolumny z lewej. Po wysaniu wszystkich k bitw zostaje wysana nastpna kolumna i tak dalej, jak na rysunku 3.7. Gdy ramka dociera do odbiornika,
macierz jest rekonstruowana kolumna po kolumnie. Jeli wystpi paczka bdw o dugoci k, to
wpynie to najwyej na 1 bit w kadym sowie kodowym. Poniewa kod Hamminga potrafi korygowa jeden bd w sowie kluczowym, to bdzie mona przywrci cay blok. Ta metoda stosuje kr
bitw kontrolnych, aby uniewraliwi blok km bitw danych na pojedyncz paczk bdw o dugoci k lub mniejszej.
178
Jeli do bloku dodany jest pojedynczy bit parzystoci, a blok zostanie powanie uszkodzony
przez dug paczk bdw, to prawdopodobiestwo wykrycia bdw wyniesie tylko 0,5, co jest raczej nie do przyjcia. Szans t moemy znaczco poprawi, jeli kady blok przeznaczony do wysania uznamy za tablic o szerokoci n i wysokoci k bitw, jak w poprzednim punkcie. Dla kadej
kolumny obliczymy osobny bit parzystoci i doczymy do tablicy jako ostatni wiersz. Nastpnie tablica zostanie wysana wiersz po wierszu. Gdy blok dotrze na miejsce, odbiornik sprawdzi wszystkie
bity parzystoci. Jeli ktrykolwiek z nich bdzie niewaciwy, odbiornik zada ponownej transmisji caego bloku. dania dodatkowych retransmisji s zgaszane w miar potrzeb, dopki cay
blok nie zostanie odebrany bez adnych bdw parzystoci.
Ta metoda pozwala wykry pojedyncz paczk bdw o dugoci n, poniewa tylko 1 bit na
kolumn ulegnie zmianie. Paczka o dugoci n + 1 przejdzie jednak niewykryta, jeli pierwszy bit
zostanie zanegowany, ostatni zanegowany, a wszystkie pozostae bd poprawne (wystpienie
paczki bdw nie oznacza, e wszystkie bity s przekamane; oznacza jedynie, e bdne s pierwszy i ostatni bit). Jeli blok zostanie powanie uszkodzony przez jedn dug paczk bdw lub
przez kilka krtszych, prawdopodobiestwo, e dla dowolnej z n kolumn parzysto bdzie przypadkowo poprawna, wynosi 0,5, wic prawdopodobiestwo zaakceptowania uszkodzonego bloku
jako poprawnego wynosi 2n.
Wprawdzie powyszy schemat moe by czasem wystarczajcy, lecz w praktyce powszechnie
stosuje si inn metod: kod wielomianowy, znany rwnie pod nazw CRC (Cyclic Redundancy Check kontrola redundancji cyklicznej). Kody wielomianowe opieraj si na traktowaniu
acuchw bitw jako reprezentacji wielomianw ze wspczynnikami wynoszcymi tylko 0 lub 1.
Ramka o dugoci k bitw jest traktowana jak lista wspczynnikw dla k-skadnikowego wielomianu w zakresie od xk1 do x0. Mwimy, e taki wielomian jest stopnia n 1. Najbardziej znaczcy
bit (pierwszy z lewej) jest wspczynnikiem dla xk1; nastpny wspczynnikiem dla xk2 i tak dalej.
Na przykad 110001 ma sze bitw, wic reprezentuje szecioskadnikowy wielomian ze wspczynnikami 1, 1, 0, 0, 0 i 1: x5 + x4 + x0.
Arytmetyka wielomianw jest przeprowadzana modulo 2, zgodnie z reguami teorii cia algebraicznych. Nie ma adnych przeniesie do dodania ani poyczek do odjcia. Zarwno dodawanie,
jak i odejmowanie jest identyczne jak XOR. Na przykad:
Dzielenie przez liczby wielocyfrowe przeprowadza si tak samo jak w systemie binarnym, z tym
wyjtkiem, e odejmowanie odbywa si modulo 2, jak powyej. Mwimy, e dzielnik mieci si
w dzielnej, jeli dzielna ma przynajmniej tyle bitw co dzielnik.
Gdy stosowana jest metoda kodw wielomianowych, nadajnik i odbiornik musz z gry
uzgodni midzy sob wielomian generujcy G(x). Zarwno bardziej, jak i mniej znaczce bity tego
wielomianu musz mie warto 1. Aby obliczy sum kontroln dla jakiej ramki o dugoci m
bitw odpowiadajcej wielomianowi M(x), ramka musi by dusza od wielomianu generujcego.
Cay pomys polega na doczeniu sumy kontrolnej do koca ramki w ten sposb, e wielomian
reprezentowany przez ramk z sum kontroln jest podzielny przez G(x). Gdy odbiornik otrzymuje
tak ramk z sum kontroln, to prbuje j podzieli przez G(x). Jeli pozostanie reszta, oznacza to,
e wystpi bd transmisji.
Algorytm obliczania sumy kontrolnej jest nastpujcy:
(1) Niech r bdzie stopniem wielomianu G(x). Docz r zerowych bitw do mniej znaczcego
koca ramki tak, e bdzie zawiera m + r bitw i odpowiada wielomianowi xrM(x).
179
(2) Podziel acuch bitw odpowiadajcy G(x) przez acuch xrM(x), uywajc dzielenia modulo 2.
(3) Odejmij reszt (ktra ma zawsze r lub mniej bitw) od acucha bitw xrM(x), uywajc
odejmowania modulo 2. Wynikiem jest ramka z sum kontroln przeznaczona do wysania.
Nazwijmy j wielomianem T(x).
Rysunek 3.8 ilustruje obliczenia dla ramki 1101011011 z uyciem wielomianu generujcego G(x) =
x4 + x + 1.
RYSUNEK 3.8.
Obliczanie sumy
kontrolnej w kodzie
wielomianowym
Powinno by jasne, e wielomian T(x) jest podzielny (modulo 2) przez G(x). W kadym problemie
dzielenia, jeli zmniejszymy dzieln o reszt, to pozostao bdzie podzielna przez dzielnik. Na
przykad, jeli w systemie dziesitnym podzielimy 210 278 przez 10 941, pozostanie reszta rwna
2399. Gdy odejmiemy 2399 od 210 278, to pozostao (207 879) bdzie podzielna przez 10 941.
180
Przeanalizujmy teraz moliwoci tej metody. Jakiego typu bdy zostan wykryte? Zamy,
e wystpi bd transmisji, przez ktry zamiast cigu bitw T(x) zostanie odebrany T(x) + E(x).
Kady bit rwny 1 w E(x) odpowiada bitowi, ktry zosta zanegowany w oryginale. Jeli E(x) zawiera k jedynek, to wystpio k jednobitowych bdw. Pojedyncza paczka bdw jest identyfikowana
przez 1 na pocztku, a kombinacj zer i jedynek i jedynk na kocu; pozostae bity s rwne zero.
Po odebraniu ramki z sum kontroln odbiornik dzieli j przez G(x); inaczej mwic, oblicza
[T(x) + E(x)]/G(x). T(x)/G(x) jest rwne 0, wic wynikiem obliczenia jest po prostu E(x)/G(x). Bdy,
ktre odpowiadaj wielomianowi zawierajcemu G(x) jako czynnik przelizgn si; wszystkie pozostae zostan wychwycone.
Jeli wystpi bd na jednym bicie, to E(x) = xi, gdzie i okrela, ktry bit jest bdny. Jeli G(x)
zawiera dwa lub wicej skadnikw, to nigdy nie podzieli E(x), wic wszystkie jednobitowe bdy
zostan wykryte.
Jeli wystpi dwa odizolowane bdy jednobitowe, to E(x) = xi + xj, gdzie i > j. Alternatywnie mona to zapisa w postaci to E(x) = xj(xi j + 1). Jeli zaoymy, e G(x) nie jest podzielny przez x, to wystarczajcym warunkiem do wykrycia wszystkich bdw jest to, e G(x) nie bdzie dzieli xk + 1
dla kadego k a do maksymalnej wartoci i j (tzn. a do maksymalnej dugoci ramki). Znane s proste wielomiany niskiego stopnia, ktre zapewniaj ochron dugich ramek. Na przykad, x15 + x14 + 1
nie podzieli xk + 1 dla adnej wartoci k poniej 32 768.
Jeli bdna jest nieparzysta liczba bitw, E(x) zawiera nieparzyst liczb skadnikw (np. x5 + x2 + 1,
lecz nie x2 +1). Co ciekawe, aden wielomian z nieparzyst liczb skadnikw nie zawiera w systemie
modulo 2 czynnika x + 1. Wybierajc x + 1 jako czynnik G(x), moemy wyapa wszystkie bdy
skadajce si z nieparzystej liczby zanegowanych bitw.
Aby udowodni, e aden wielomian z nieparzyst liczb skadnikw nie jest podzielny przez
x + 1, zamy, e E(x) ma nieparzyst liczb skadnikw i jest podzielny przez x + 1. Rozmy
E(x) na (x + 1)Q(x). Teraz obliczmy E(1) = (1+1)Q(1). Poniewa 1 + 1 = 0 (w modulo 2), to E(1)
musi rwna si zero. Jeli E(x) ma nieparzyst liczb skadnikw, to zastpienie wszdzie x wartoci 1 zawsze zwrci w wyniku 1. Wobec tego aden wielomian z nieparzyst liczb skadnikw
nie jest podzielny przez x + 1.
Na koniec, co najwaniejsze, kod wielomianowy z r bitw kontrolnych wykrywa kad paczk
bdw o dugoci mniejszej lub rwnej r. Paczk bdw moemy przedstawi w postaci xi(xk 1 + ... + 1),
gdzie i okrela, jak daleko od prawego koca odebranej ramki mieci si paczka bdw. Jeli G(x)
zawiera skadnik x0, to nie bdzie mia czynnika xi, jeli wic stopie wyraenia w nawiasach jest
mniejszy od stopnia G(x), to reszta nigdy nie bdzie rwna zero.
Jeli paczka ma dugo r + 1, to reszta z dzielenia przez G(x) bdzie rwna zero wtedy i tylko wtedy, gdy paczka bdzie identyczna z G(x). Z definicji pierwszy i ostatni bit paczki musz by rwne 1,
wic dopasowanie zaley od r 1 porednich bitw. Jeli uznamy wszystkie kombinacje za jednakowo
prawdopodobne, to prawdopodobiestwo uznania takiej bdnej ramki za poprawn bdzie wynosi (1/2)r 1.
Mona te pokaza, e gdy wystpi paczka bdw dusza ni r + 1 bitw lub gdy wystpi kilka
krtszych paczek, to prawdopodobiestwo przejcia niezauwaonej bdniej ramki wyniesie (1/2)r,
zakadajc, e wszystkie wzorce bitw maj takie samo prawdopodobiestwo.
Niektre wielomiany stay si midzynarodowymi standardami. W IEEE 802 uywany jest:
x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x1 + 1
Poza innymi podanymi waciwociami wykrywa wszystkie paczki bdw o dugoci 32 i mniej
bitw oraz wszystkie paczki zmieniajce nieparzyst liczb bitw.
Wprawdzie obliczenia wymagane do uzyskania sumy kontrolnej mog wydawa si skomplikowane, to Peterson i Brown (1961) pokazali, e mona sprztowo skonstruowa prosty ukad rejestru przesuwnego do obliczania i weryfikacji sum kontrolnych. W praktyce niemal zawsze stosuje
si takie urzdzenie: praktycznie we wszystkich sieciach LAN i w niektrych przypadkach na liniach dwupunktowych.
181
Przez dziesitki lat zakadano, e ramki przeznaczone do objcia sum kontroln zawieraj losowe bity. Wszystkie analizy algorytmw sum kontrolnych przeprowadzano z takim zaoeniem. Badania rzeczywistych danych pokazay, e jest ono cakowicie mylne. Na skutek tego w pewnych warunkach niewykryte bdy wystpuj znacznie czciej, ni uprzednio sdzono (Partridge i in., 1995).
182
Gdy ramka dociera do odbiornika, sprzt oblicza sum kontroln. Jeli suma kontrolna jest
bdna (tzn. wystpi bd transmisji), zostaje o tym poinformowana warstwa cza danych
( =
). Jeli przychodzca ramka dotara bez uszkodze, rwnie informowana jest
warstwa cza danych ( =
), aby moga pobra ramk do analizy za pomoc
. Warstwa cza danych w odbiorniku zaraz po otrzymaniu nieuszkodzonej
ramki sprawdza informacje sterujce w jej nagwku, i jeli wszystko jest w porzdku, przesya
zawarty w niej pakiet do warstwy sieciowej. Nagwek ramki absolutnie nigdy nie jest przekazywany do warstwy sieciowej.
Istnieje dobry powd, dla ktrego warstwa sieciowa nie moe nigdy otrzyma jakiejkolwiek
czci nagwka ramki aby utrzyma cakowit separacj protokow sieciowych i cza danych.
Dopki warstwa sieciowa nie wie nic o protokole cza danych i o formacie ramki, mona je zmienia bez koniecznoci zmian w oprogramowaniu warstwy sieciowej. Ustalenie sztywnego interfejsu pomidzy warstwami sieciow i cza danych ogromnie upraszcza tworzenie oprogramowania,
poniewa protokoy komunikacyjne w rnych warstwach mog ewoluowa niezalenie od siebie.
Listing 3.1 przedstawia kilka deklaracji (w jzyku C), wsplnych dla wielu protokow, ktre
omwimy pniej. Zostao tu zdefiniowanych pi struktur danych: !, "
,
,
# i . ! jest typem wyliczeniowym i moe przyjmowa wartoci i . "
jest ma liczb cakowit (small integer) suc do numerowania ramek, co pozwoli je odrni
od siebie. Te numery sekwencyjne maj wartoci od 0 do maksymalnej $%
&'(, ktra jest zdefiniowana w kadym potrzebujcym tego protokole.
jest jednostk informacji wymienian
pomidzy warstw sieciow i warstw cza danych w tym samym komputerze lub pomidzy
rwnolegymi warstwami sieciowymi. W naszym modelu pakiet zawsze ma $%
)*+ bajtw, lecz
bardziej realistyczna byaby zmienna dugo.
LISTING 3.1.
Definicje potrzebne w protokoach opisanych w dalszej czci rozdziau.
Definicje te mieszcz si w pliku protocol.h
,#$%
)*+-./0 12
!30/
# 45 6!7/0
!0/
# 8#"
7/09 3 !0/
# 4 8##:$%
)*+;76
7/0#3
0/
# 4#556
#7/0#3
#0/
# 4/0<3=
>>0/
##7/0>
?0/
"
"7/0 30/
"
7/0
#>0/
7/0
30/
67
/0@>3>#>7>A238
B0/
#
07
/0)!>>3
#
>CCB0/
#
0
7
/0DE>3>
>#>=3#3B0/
#
0
7
183
Ramka () skada si z czterech pl: #, ", i , z ktrych trzy pierwsze zawieraj
informacje kontrolne, a ostatnie moe zawiera faktyczne dane do przesania. Pola kontrolne cznie
nosz nazw nagwka ramki.
Pole # informuje, czy ramka zawiera jakie dane, poniewa niektre protokoy odrniaj
ramki zawierajce tylko informacje sterujce od ramek, ktre zawieraj te dane. Pola " i
mieszcz odpowiednio numery sekwencyjne i potwierdzenia; ich zastosowanie opiszemy bardziej
szczegowo pniej. Pole ramki danych zawiera jeden pakiet; w ramce sterujcej nie jest uywane. Bardziej realistyczna implementacja uywaaby pola o zmiennej dugoci, pomijajc je
cakowicie w ramkach sterujcych.
Ponownie musimy zda sobie spraw z relacji pomidzy pakietem i ramk. Warstwa sieciowa
buduje pakiet, biorc wiadomo z warstwy transportowej i dodajc do niej nagwek warstwy sieciowej. Ten pakiet jest przesyany do warstwy cza danych w celu zawarcia w polu wysyanej
ramki. Gdy ramka dociera do miejsca przeznaczenia, warstwa cza danych wydobywa pakiet z ramki i przekazuje go do warstwy sieciowej. W ten sposb warstwa sieciowa moe dziaa tak, jakby
komputery mogy bezporednio przesya pomidzy sob ramki.
Listing 3.1 wymienia rwnie szereg procedur. S to procedury biblioteczne, ktrych szczegy
zale od implementacji, a ich wewntrzne funkcjonowanie nie bdzie nas tu wicej zajmowa.
Procedura
czeka w ciasnej ptli na jakie zdarzenie, jak ju wspomnielimy. Procedury
i
s uywane przez warstw cza danych odpowiednio do przekazywania pakietw do warstwy sieciowej i przyjmowania pakietw z tej warstwy. Prosz zwrci uwag, e
i
przekazuj ramki pomidzy warstwami
fizyczn i cza danych. Z drugiej strony procedury
i
przekazuj pakiety pomidzy warstwami cza danych i sieciow. Inaczej mwic,
i
s zwizane z interfejsem pomidzy warstwami 2. i 3., a
i
pomidzy warstwami 1. i 2.
184
W wikszoci protokow zakadamy, e kana nie jest niezawodny i od czasu do czasu traci
cae ramki. Aby mc przywrci czno po takich katastrofach, nadajca warstwa cza danych
musi uruchomi wewntrzny czasomierz lub zegar za kadym razem, gdy wysya ramk. Jeli w okrelonym z gry czasie nie zostanie odebrana odpowied, upynie interwa odliczany przez zegar i warstwa cza danych odbierze sygna przerwania.
W naszych protokoach jest to obsugiwane przez zezwolenie procedurze
na
zwrcenie L . Procedury
i
odpowiednio wczaj i wyczaj
czasomierz. Upynicie czasu oczekiwania jest moliwe tylko wtedy, gdy czasomierz jest uruchomiony; takie wywoanie po prostu zeruje zegar, aby nastpne upynicie czasu oczekiwania nastpio
po penym interwale czasomierza (o ile nie zostanie w tym czasie wyzerowany lub wyczony).
Procedury
i
steruj czasomierzem pomocniczym, ktry suy
do generowania potwierdze w okrelonych warunkach.
Procedury !
i #!
s uywane w bardziej wyrafinowanych protokoach, w ktrych nie zakadamy ju, e warstwa sieciowa zawsze ma pakiety do wysania. Gdy warstwa cza danych aktywuje warstw sieciow, wtedy warstwa sieciowa ma prawo wysa przerwanie, jeli ma pakiet do wysania. Wskazujemy to przez L
#.
Gdy warstwa sieciowa jest nieaktywna, nie moe powodowa takich zdarze. Warstwa cza danych
przez odpowiednie wczanie i wyczanie swojej warstwy sieciowej moe chroni przed zalaniem
ze strony warstwy sieciowej pakietami, na ktre nie ma miejsca w buforach.
Numery sekwencyjne ramek zawsze mieszcz si w przedziale od 0 do $%
&'( (wcznie),
gdzie $%
&'( moe mie rne wartoci dla rnych protokow. Czsto konieczne jest zwikszanie
numeru sekwencyjnego o 1 cyklicznie (tzn. po $%
&'( nastpuje 0). Inkrementacj przeprowadza
makro . Operacja ta zostaa zdefiniowana jako makro, poniewa jest wstawiana do cieki
krytycznej. Jak zobaczymy pniej, czynnikiem ograniczajcym wydajno sieci jest czsto przetwarzanie protokou, wic definiowanie prostych operacji jak ta w postaci makr nie pogarsza czytelnoci
kodu, lecz poprawia wydajno. Ponadto, poniewa $%
&'( ma rne wartoci w rnych protokoach, to w postaci makra operacj moemy wczy do wszystkich protokow w tym samym programie binarnym bez konfliktu. Ta zdolno jest przydatna w symulatorze.
Deklaracje z listingu 3.1 nale do wszystkich opisanych poniej protokow. Aby zaoszczdzi
miejsca i udostpni praktyczne odniesienie, zostay one wydobyte i zgrupowane razem, lecz ideowo
powinny by scalone z samymi protokoami. W C takie scalanie odbywa si przez umieszczenie
definicji w specjalnym pliku nagwkowym, w naszym przypadku protocol.h, i uycie , # z preprocesora C w celu zawarcia ich w plikach protokow.
185
Protok ten skada si z dwch odrbnych procedur: nadajnika i odbiornika. Nadajnik dziaa
w warstwie cza danych komputera rdowego, a odbiornik w warstwie cza danych komputera
docelowego. Nie s tu uywane adne numery sekwencyjne, wic nie potrzeba $%
&'(. Jedynym
moliwym typem zdarzenia jest
(tzn. nadejcie nieuszkodzonej ramki).
Nadajnik pracuje w nieskoczonej ptli, po prostu wysyajc dane w lini tak szybko, jak potrafi. Na tre ptli skadaj si trzy czynnoci: pobranie pakietu z warstwy sieciowej (zawsze gotowej do tego), skonstruowanie wychodzcej ramki z uyciem zmiennej s i wysanie ramki w drog.
Ten protok wykorzystuje tylko pole ramki, poniewa pozostae pola s zwizane z kontrol
bdw i sterowaniem przepywem, a w naszym modelu nie wystpuj bdy i nie ma ogranicze
przepywu.
Odbiornik jest rwnie prosty. Na pocztku czeka na jakie zdarzenie; jedyn moliwoci jest
przybycie nieuszkodzonej ramki. W kocu ramka dociera, co powoduje wyjcie z procedury
powoduje pobranie nadesanej ramki z bufora sprztowego i umieszczenie jej w zmiennej ,
skd moe pobra ramk kod odbiornika. Na koniec sekcja danych jest przekazywana do warstwy
sieciowej, a warstwa cza danych wraca do oczekiwania na nastpn ramk, praktycznie zawieszajc si a do nadejcia ramki.
186
187
188
Na pierwszy rzut oka moe wydawa si, e wystarczy nam modyfikacja protokou 2. przez dodanie czasomierza. Nadajnik moe wysa ramk, lecz odbiornik wyle potwierdzenie tylko wtedy,
gdy otrzyma poprawne dane. Jeli do odbiornika dotrze uszkodzona ramka, to zostanie odrzucona.
Po jakim czasie upynie okres oczekiwania i nadajnik wyle ramk jeszcze raz. Taki proces byby
powtarzany a do momentu, gdy ramka w kocu dotrze nieuszkodzona.
Powyszy schemat zawiera powany bd. Prosz pomyle i sprbowa znale problem
przed kontynuowaniem lektury.
Aby zorientowa si, co moe pj nie tak, przypomnijmy sobie, e zadaniem warstwy cza
danych jest zapewnienie wolnej od bdw i przezroczystej komunikacji pomidzy procesami warstwy sieciowej. Warstwa sieciowa w komputerze A przekazuje seri pakietw do swojej warstwy
cza danych, ktra musi zagwarantowa dorczenie identycznej serii pakietw do warstwy sieciowej komputera B poprzez jego warstw cza danych. Przede wszystkim warstwa sieciowa w B
nie ma sposobu na rozpoznanie, czy pakiet nie zosta utracony lub powielony, wic warstwa cza
danych musi zagwarantowa, e adna kombinacja bdw transmisji, nawet najmniej prawdopodobna, nie spowoduje dorczenia duplikatu pakietu do warstwy sieciowej.
Rozwamy taki scenariusz:
(1) Warstwa sieciowa w A przekazuje pakiet nr 1 do swojej warstwy cza danych. Pakiet zostaje
poprawnie odebrany w B i przekazany do warstwy sieciowej w B. Komputer B odsya ramk
potwierdzajc do A.
(2) Ramka potwierdzajca zostaje cakowicie utracona w ogle nie dociera do A. ycie byoby
o wiele prostsze, gdyby kana przekamywa i traci tylko ramki danych, a nie sterujce, lecz
musimy z przykroci stwierdzi, e kana nie jest specjalnie wybirczy pod tym wzgldem.
(3) W warstwie cza danych w A w kocu upywa czas oczekiwania. Poniewa potwierdzenie nie
dotaro, warstwa zakada (bdnie), e jej ramka danych zostaa utracona lub uszkodzona i wysya ponownie ramk zawierajc pakiet nr 1.
(4) Powielona ramka rwnie dociera do warstwy cza danych w B bez problemw i zostaje niewiadomie przekazana do warstwy sieciowej. Jeli A wysya plik do B, cz pliku bdzie
zdublowana, czyli kopia pliku utworzona w B bdzie bdna, a bd ten nie zostanie wykryty.
Inaczej mwic, protok zawiedzie.
Najwyraniej potrzeba tu jakiej metody pozwalajcej odbiornikowi odrni ramk, ktr
otrzymuje po raz pierwszy, od retransmisji. Oczywistym sposobem na to jest umieszczenie przez nadajnik numeru sekwencyjnego w kadej wysyanej przez siebie ramce. Odbiornik bdzie mg
skontrolowa numer kadej otrzymywanej ramki, aby sprawdzi, czy jest to nowa ramka czy duplikat, ktry powinien odrzuci.
Poniewa podany jest jak najmniejszy rozmiar nagwka, powstaje pytanie: jaka minimalna
liczba bitw jest potrzebna na numer sekwencyjny? Jedyna niejednoznaczno w naszym protokole wystpuje pomidzy ramk (m) i jej nastpc (m + 1). Jeli ramka m zostanie utracona lub
uszkodzona, odbiornik nie potwierdzi jej, wic nadajnik bdzie j nadawa jeszcze raz. Po otrzymaniu poprawnej ramki odbiornik wyle potwierdzenie do nadajnika. Tutaj pojawia si potencjalny
problem. W zalenoci od tego, czy ramka potwierdzajca dotrze do nadajnika czy nie, nadajnik
moe prbowa nada ramk m lub m + 1.
Zdarzeniem, ktre wyzwala wysanie przez nadajnik ramki m + 2, jest nadejcie potwierdzenia
dla ramki m + 1. Lecz to implikuje, e ramka m zostaa poprawnie odebrana, a poza tym potwierdzenie rwnie dotaro do nadajnika (w przeciwnym razie nadajnik nie zaczby nadawa m + 1, o m + 2
ju nie wspominajc). W konsekwencji jedyna niejasno wystpuje pomidzy ramk i jej bezporednim poprzednikiem lub nastpc, a nie pomidzy poprzednikiem i nastpc.
Wystarczy wic jednobitowy numer sekwencyjny (0 lub 1). W kadej chwili odbiornik spodziewa si otrzymania konkretnego numeru sekwencyjnego. Kada otrzymana ramka z bdnym
189
numerem sekwencyjnym jest odrzucana jako duplikat. Gdy przychodzi ramka zawierajca poprawny numer sekwencyjny, zostaje zaakceptowana i przekazana do warstwy sieciowej. Nastpnie
spodziewany numer sekwencyjny jest inkrementowany modulo 2 (tzn. 0 staje si 1, a 1 staje si 0).
Przykad protokou tego typu przedstawia listing 3.4. Protokoy, w ktrych nadajnik czeka na
pozytywne potwierdzenie przed przejciem do nastpnej jednostki danych, czsto nazywane s
PAR (Positive Acknowledgement with Retransmission potwierdzenia pozytywne z retransmisj) lub ARQ (Automatic Repeat reQuest automatyczne danie ponownego przesania).
Podobnie jak protok 2., ten rwnie przesya dane tylko w jednym kierunku.
LISTING 3.4.
Protok potwierdze pozytywnych z retransmisj
/0)ACRB
F3#
>
C#>#CB0/
,#$%
&'(/0 !2#
C RB0/
# 4
5
5 6
7
, #M
BM
##R#
4
"
S
#7/03E
3#>=30/
7/0>>#0/
! 7/0! ##>=8
0/
7
S
#L7/03 3#>= 30/
! 7/0
!>
>
0/
4
BL! 7/0>! # 3E#30/
B"LS
#7/03#0/
7/013#8E0/
B"7/08##
#N>#C 8#5 0/
7/0
5
5 0/
LL
4
7/0
!>
#>0/
BLLS
#4
B7/0C=>>>0/
! 7/0
!>E
#C0/
S
#7/0>8 3S
#0/
6
6
6
6
#R#
4
"
S
#7
57
7
S
#L7
4
7/0F1J
5
0/
190
LL
4/0#C
0/
7/0#N
!2#!=C1E0/
B"LL
S
#4/0>10/
B7/0
>F##30/
S
#7/0E
>> 3# 88 B0/
6
BLO
S
#7/0
#>5A3
#>0/
7/013
#>0/
6
6
6
Protok 3. rni si od swoich poprzednikw tym, e zarwno nadajnik, jak i odbiornik maj
zmienn, ktrej warto jest pamitana w stanie oczekiwania warstwy cza danych. Nadajnik pamita numer sekwencyjny nastpnej ramki, ktr ma wysa, w S
#; odbiornik
pamita numer sekwencyjny oczekiwanej ramki w
S
#. Kady protok ma krtk faz
inicjalizacji przed wejciem do ptli nieskoczonej.
Po wysaniu ramki nadajnik uruchamia czasomierz. Jeli czasomierz ju dziaa, to zostaje wyzerowany, aby odmierzy kolejny peny interwa. Interwa czasu powinien by tak dobrany, by wystarczy
na dotarcie ramki do odbiornika, przetworzenie tej ramki przez odbiornik w najbardziej niekorzystnych
warunkach i propagacj ramki potwierdzajcej z powrotem do nadawcy. Dopiero po upyniciu tego
czasu nadajnik moe bezpiecznie zaoy, e albo ramka danych, albo potwierdzajca zostaa utracona, i wysa duplikat. Jeli interwa czasomierza bdzie zbyt krtki, nadajnik bdzie wysya niepotrzebne ramki. Wprawdzie nie wpyn one na poprawno protokou, lecz zaszkodz wydajnoci.
Po wysaniu ramki i uruchomieniu czasomierza nadajnik czeka na jakie ekscytujce zdarzenie.
Istniej tylko trzy moliwoci: przyjdzie nieuszkodzona ramka potwierdzajca, doczoga si uszkodzona ramka potwierdzajca albo upynie czas oczekiwania. Jeli dotrze poprawne potwierdzenie,
nadajnik pobierze nastpny pakiet z warstwy sieciowej i umieci go w buforze, zamazujc poprzedni
pakiet, oraz zwikszy numer sekwencyjny. Jeli dotrze uszkodzona ramka lub nie dotrze adna,
ani zawarto bufora, ani numer sekwencyjny nie zostan zmienione, co pozwoli wysa duplikat.
Gdy do odbiornika dociera poprawna ramka, jej numer sekwencyjny jest sprawdzany, aby
upewni si, czy ramka nie jest duplikatem. Jeli nie, to zostaje zaakceptowana, przekazana do
warstwy sieciowej i generowane jest potwierdzenie. Duplikaty i ramki uszkodzone nie s przekazywane do warstwy sieciowej.
191
Wprawdzie przeplatanie ramek danych i ramek kontrolnych w tym samym obwodzie jest postpem w stosunku do koniecznoci uywania dwch odrbnych obwodw fizycznych, lecz moliwe
jest jeszcze dalsze udoskonalenie. Gdy przychodzi ramka danych, zamiast natychmiast odesa
odrbn ramk potwierdzajc, nadajnik powstrzymuje si od tego i czeka na kolejny pakiet otrzymany z warstwy sieciowej. Potwierdzenie zostaje doczone do wychodzcej ramki danych (poprzez uycie pola w nagwku ramki). W wyniku potwierdzenie wiezie si za darmo w nastpnej wychodzcej ramce danych. Ta technika czasowego opnienia wychodzcych potwierdze
tak, by mogy zosta podpite do nastpnej wychodzcej ramki danych, nosi nazw piggybacking
(jazda na barana).
Podstawow zalet tej metody wzgldem osobnych ramek potwierdzajcych jest lepsze wykorzystanie dostpnego pasma kanau. Pole w nagwku ramki kosztuje tylko kilka bitw, podczas gdy osobna ramka wymagaaby nagwka, potwierdzenia i sumy kontrolnej. Oprcz tego mniejsza liczba wysanych ramek oznacza mniej przerwa przybycie ramki, i by moe mniej buforw
w odbiorniku, zalenie od organizacji oprogramowania odbiornika. W nastpnym protokole, ktrym
si zajmiemy, metoda na barana bdzie kosztowa tylko 1 bit w nagwku ramki. Rzadko wymaga wicej ni kilku bitw.
Jednake technika ta wprowadza komplikacj niewystpujc przy odrbnych potwierdzeniach. Jak dugo warstwa cza danych powinna czeka na pakiet, na ktrym moe przewie potwierdzenie? Jeli warstwa cza danych bdzie czeka duej ni wynosi okres oczekiwania nadajnika,
ramka zostanie nadana ponownie, negujc ca ide korzystania z potwierdze. Gdyby warstwa cza
danych bya wyroczni i moga przepowiada przyszo, to wiedziaaby, kiedy pojawi si nastpny pakiet z warstwy sieciowej, co pozwolioby zdecydowa, czy czeka na niego, czy te wysa
osobne potwierdzenie, zalenie od spodziewanego czasu oczekiwania. Oczywicie warstwa cza
danych nie potrafi przepowiada przyszoci, wic musi skorzysta z jakiego doranego schematu, na
przykad czeka ustalon liczb milisekund. Jeli nowy pakiet pojawi si szybko, potwierdzenie zostanie przewiezione na nim; w przeciwnym razie, jeli do koca ustalonego czasu oczekiwania nie pojawi si aden nowy pakiet, warstwa cza danych po prostu wyle odrbn ramk potwierdzajc.
Nastpne trzy protokoy s dwukierunkowe i nale do klasy tzw. protokow z oknem
przesuwnym (ang. sliding window). Te trzy przykady rni si wydajnoci, zoonoci i zapotrzebowaniem na bufory, co omwimy pniej. W nich, podobnie jak we wszystkich protokoach
z oknem przesuwnym, kada wysyana ramka zawiera numer sekwencyjny mieszczcy si w zakresie
od 0 do jakiego maksimum. Maksimum zwykle wynosi 2n 1, wic numer sekwencyjny mieci
si dokadnie w n-bitowym polu. Protok z oknem przesuwnym typu stop-and-wait uywa n = 1,
co ogranicza numery sekwencyjne do 0 i 1, lecz bardziej wyrafinowane wersje mog uywa dowolnych wartoci n.
Kwintesencj wszelkich protokow z oknem przesuwnym jest to, e w kadej chwili nadajnik
pamita zbir numerw sekwencyjnych odpowiadajcych ramkom, ktre ma prawo wysa. Mwimy, e ramki te mieszcz si w oknie nadawczym. Podobnie odbiornik utrzymuje okno odbiorcze
odpowiadajce zbiorowi ramek, ktre ma prawo przyj. Okna nadajnika i odbiornika nie musz
mie tych samych granic grnych i dolnych, a nawet takiej samej wielkoci. W niektrych protokoach maj stay rozmiar, lecz w innych mog z czasem zwiksza lub zmniejsza wielko w miar
wysyania i odbierania ramek.
Wprawdzie protokoy te daj warstwie cza danych wiksz swobod kolejnoci, w ktrej moe
odbiera i nadawa ramki, lecz zdecydowanie nie zarzucilimy wymogu, e protok musi dorczy pakiety do docelowej warstwy sieciowej w tej samej kolejnoci, w jakiej zostay przekazane do
warstwy cza danych w komputerze nadajcym dane. Zmienilimy teraz wymg liniowoci kanau komunikacyjnego, to znaczy tego, e musi dorczy wszystkie ramki w kolejnoci wysania.
192
Numery sekwencyjne w obrbie okna nadawczego reprezentuj ramki, ktre zostay wysane
lub mog zosta wysane, lecz nie zostay jeszcze potwierdzone. Za kadym razem, gdy nowy pakiet
przychodzi z warstwy sieciowej, otrzymuje najwyszy kolejny numer sekwencyjny, a grna krawd
okna jest zwikszana o jeden. Gdy przychodzi potwierdzenie, dolna krawd jest zwikszana o jeden. W ten sposb okno nieustannie utrzymuje list niepotwierdzonych ramek. Przykad przedstawia
rysunek 3.9.
RYSUNEK 3.9. Okno przesuwne o rozmiarze 1 z 3-bitowym numerem sekwencyjnym: (a) stan pocztkowy,
(b) po wysaniu pierwszej ramki, (c) po odebraniu pierwszej ramki, (d) po odebraniu potwierdzenia
pierwszej ramki
Poniewa ramki znajdujce si aktualnie w oknie nadajnika mog zosta utracone lub uszkodzone
podczas transmisji, nadajnik musi przechowywa wszystkie te ramki w pamici na wypadek potrzeby retransmisji. Wobec tego, jeli maksymalna wielko okna wynosi n, nadajnik potrzebuje n
buforw do przechowania niepotwierdzonych ramek. Jeli okno kiedykolwiek zwikszy swj rozmiar do maksymalnego, warstwa cza danych nadajnika musi si zablokowa warstw sieciow,
dopki nie zwolni si kolejny bufor.
Okno warstwy cza danych odbiornika odpowiada ramkom, ktre moe przyj. Kada ramka
spoza okna jest odrzucana bez komentarza. Gdy zostanie odebrana ramka, ktrej numer sekwencyjny jest rwny dolnej krawdzi okna przesuwnego, ramka zostaje przekazana do warstwy sieciowej, zostaje wygenerowane potwierdzenie i okno jest przekrcane o jeden. Inaczej ni w oknie
nadajnika okno odbiornika zawsze zachowuje pocztkow wielko. Prosz zwrci uwag, e
okno o rozmiarze 1 oznacza, i warstwa cza danych przyjmuje ramki tylko po kolei, lecz dla
wikszych okien tak nie jest. Z kolei warstwa sieciowa zawsze otrzymuje dane we waciwym porzdku, niezalenie od rozmiaru okna warstwy cza danych.
Rysunek 3.9 pokazuje przykad z maksymalnym rozmiarem okna rwnym 1. Na pocztku nie
oczekuj adne ramki, wic grna i dolna krawd okna s sobie rwne, lecz z upywem czasu
sytuacja zmienia si jak na rysunku.
193
194
W normalnych warunkach jedna z dwch warstw cza danych jako pierwsza wysya pierwsz
ramk. Inaczej mwic, tylko jeden z dwch programw warstwy cza danych powinien zawiera
wywoania procedur
i
na zewntrz ptli gwnej. W przypadku
gdy obie warstwy cza danych startuj jednoczenie, pojawia si osobliwa sytuacja, ktr omwimy
pniej. Komputer rozpoczynajcy pobiera pierwszy pakiet z warstwy sieciowej, buduje z niego
ramk i wysya j. Gdy ta (lub dowolna) ramka dotrze, warstwa cza danych odbiornika sprawdza,
czy nie jest duplikatem, tak jak w protokole 3. Jeli jest to spodziewana ramka, zostaje ona przekazana do warstwy sieciowej i okno odbiornika przesuwa si w gr.
Pole potwierdzenia zawiera numer ostatniej bezbdnie odebranej ramki Jeli ten numer zgadza si z numerem ramki, ktr nadajnik prbuje wysa, to dla nadajnika oznacza to, e skoczy
przetwarza ramk zapisan w zmiennej ! i moe pobra kolejn ramk ze swojej warstwy
sieciowej. Jeli numer sekwencyjny jest niezgodny, nadajnik musi ponawia prb wysania tej
samej ramki. Zawsze, gdy zostaje odebrana ramka, jest rwnie odsyana inna ramka.
Przeanalizujmy teraz protok 4., aby zobaczy, jak jest odporny na patologiczne scenariusze. Zamy, e komputer A chce wysa swoj ramk 0 do komputera B, a B prbuje wysa ramk 0 do A.
Zamy, e A wysya ramk do B, lecz interwa oczekiwania A jest troch za krtki. Wobec tego w A
moe raz za razem upywa czas oczekiwania, przez co A bdzie wysya seri identycznych ramek
z " = 0 i = 1.
Gdy pierwsza poprawna ramka dotrze do komputera B, zostanie przyjta i
S
#
przyjmie warto 1. Wszystkie kolejne ramki zostan odrzucone, poniewa B spodziewa si teraz ramki
o numerze sekwencyjnym 1, a nie 0. Co wicej, poniewa wszystkie duplikaty bd miay = 1,
a B nadal czeka na potwierdzenie 0, B nie pobierze nowego pakietu ze swojej warstwy sieciowej.
Po przyjciu kadego odrzuconego duplikatu B wysya do A ramk zawierajc " = 0 i = 0.
W kocu jedna z nich dotrze poprawnie do A, co spowoduje, e A zacznie nadawa kolejn ramk. adna
kombinacja utraconych ramek i zbyt krtkich limitw czasowych nie moe spowodowa, e protok
dorczy dwukrotnie pakiet do dowolnej warstwy sieciowej, pominie pakiet lub si zakleszczy.
Jednake pojawia si osobliwa sytuacja, gdy obie strony jednoczenie wysyaj pierwszy pakiet.
Ten problem z synchronizacj przedstawia rysunek 3.10. Cz (a) pokazuje normalne dziaanie
protokou. Cz (b) ilustruje wspomnian osobliwo. Jeli B czeka na pierwsz ramk A przed
wysaniem wasnej, to sekwencja wyglda jak w (a) i wszystkie ramki zostaj zaakceptowane. Jeli jednak A i B jednoczenie zainicjuj komunikacj, ich pierwsze ramki dotr na miejsce, a nastpnie warstwy cza danych dojd do sytuacji (b). W (a) kade nadejcie ramki przynosi nowy pakiet
dla warstwy sieciowej i nie ma duplikatw. W (b) poowa ramek zawiera duplikaty mimo to, e nie
wystpuj bdy transmisji. Podobna sytuacja moe wystpi na skutek zbyt krtkich limitw czasowych, nawet gdy jedna strona ewidentnie zacznie jako pierwsza. W rzeczy samej kilkakrotne wystpienie zbyt krtkich limitw czasowych moe spowodowa wysanie ramki trzy lub wicej razy.
195
RYSUNEK 3.10. Dwa scenariusze dla protokou 4.: (a) standardowy, (b) nietypowy. W nawiasach zapisane
s kolejno (seq, ack, nr pakietu). Gwiazdka oznacza miejsce przyjcia pakietu przez warstw sieciow
to, e nadajnik by zablokowany przez 500/520 = 96% czasu. Inaczej mwic, tylko 4 procent dostpnego pasma zostao wykorzystane. Wida wyranie, e poczenie dugiego czasu przejcia,
wysokiej przepustowoci i maej dugoci ramek jest katastrofalne, gdy idzie o wydajno.
Opisany powyej problem moemy uzna za konsekwencj reguy, ktra da od nadajnika
czekania na ramk potwierdzajc przed wysaniem kolejnej. Jeli zagodzimy to ograniczenie,
bdzie mona osign znacznie wysz wydajno. Rozwizanie polega zasadniczo na zezwoleniu
nadajnikowi na wysanie maksymalnie w ramek przed zablokowaniem transmisji zamiast tylko
jednej ramki. Odpowiednio dobrana warto w pozwoli nadajnikowi wysya ramki jedna za drug
przez czas rwny czasowi przejcia w obie strony bez zapenienia okna. W powyszym przykadzie warto w powinna wynosi przynajmniej 26. Nadajnik zaczyna od wysania ramki 0, jak
powyej. Do chwili zakoczenia wysyania 26 ramek, w chwili t = 520, powinna wanie wrci
ramka potwierdzajca dla ramki 0. Nastpne potwierdzenia bd dociera co 20 ms, wic nadajnik
zawsze bdzie mia pozwolenie na wysanie kolejnej ramki, gdy bdzie tego potrzebowa. Przez
cay czas 25 lub 26 ramek bdzie oczekiwa na potwierdzenie. Inaczej mwic, maksymalny rozmiar okna nadajnika wynosi 26.
Potrzeba wikszego okna po stronie nadajcej wystpuje zawsze, gdy iloczyn pasma i czasu
podry w obie strony jest wysoki. Gdy pasmo jest wysokie, nawet przy umiarkowanych opnieniach nadajnik wyczerpie swoje okno do szybko, chyba e dysponuje duym oknem. Jeli opnienie
jest wysokie (jak w kanaach satelitw geostacjonarnych), nadajnik wyczerpie swoje okno nawet
przy umiarkowanym pamie. Iloczyn tych dwch elementw zasadniczo decyduje o objtoci rurocigu, a nadajnik musi by w stanie wypeni rur bez zatrzymywania si, aby pracowa z najwysz wydajnoci.
Ta technika nosi nazw pracy potokowej (ang. pipelining). Jeli przepustowo kanau wynosi
b bitw na sekund, wielko ramki l bitw, a czas propagacji w obie strony R sekund, to czas
wymagany na wysanie jednej ramki wynosi l/b sekund. Po wysaniu ostatniego bitu ramki danych
wystpuje opnienie R/2, zanim bit dotrze do odbiornika, oraz opnienie rwne przynajmniej
R/2, zanim potwierdzenie wrci do nadajnika, co daje czne opnienie R. W technice stop-andwait linia jest zajta przez l/b i bezczynna przez czas R, co daje:
wykorzystanie linii = l/(l + bR)
196
Jeli l < bR, to wydajno bdzie nisza od 50% Poniewa zawsze wystpuje niezerowe opnienie propagacji potwierdzenia, praca potokowa moe w zasadzie posuy do zajcia linii w tym
okresie, lecz jeli okres ten jest krtki, dodatkowa zoono nie jest warta zachodu.
Potokowe przesyanie ramek zawodnym kanaem komunikacyjnym jest przyczyn pewnych
powanych problemw. Po pierwsze, co stanie si, gdy ramka w rodku dugiego strumienia zostanie
uszkodzona lub utracona? Do odbiornika dotrze dua liczba pniejszych ramek, zanim nadajnik
dowie si o problemie. Gdy uszkodzona ramka dociera do odbiornika, powinna oczywicie zosta
odrzucona, lecz co powinien zrobi odbiornik z wszystkimi poprawnymi ramkami nastpujcymi
po niej? Prosz pamita, e warstwa cza danych w odbiorniku jest zobowizana dorcza pakiety
do warstwy sieciowej we waciwej kolejnoci. Rysunek 3.11 przedstawia wpyw pracy potokowej
na usuwanie bdw. Przyjrzymy si temu bardziej szczegowo.
RYSUNEK 3.11. Praca potokowa i usuwanie bdw. Wpyw bdu, gdy (a) rozmiar okna odbiornika wynosi 1,
oraz (b), gdy rozmiar okna odbiornika jest duy
Dostpne s dwie podstawowe metody radzenia sobie z bdami w pracy potokowej. Jedna z nich,
o nazwie go back n (wr do n), polega na tym, e odbiornik po prostu odrzuca wszystkie kolejne
ramki, nie wysyajc potwierdze dla odrzuconych ramek. Ta strategia odpowiada oknu odbioru o rozmiarze 1. Inaczej mwic, warstwa cza danych odmawia przyjcia jakiejkolwiek ramki poza
nastpn, ktr musi przekaza do warstwy sieciowej. Jeli okno nadajnika wypeni si przed upyniciem dopuszczalnego czasu oczekiwania, potok zacznie si oprnia. W kocu upynie czas oczekiwania i nadajnik ponownie wyle wszystkie niepotwierdzone ramki we waciwej kolejnoci,
zaczynajc od ramki uszkodzonej lub utraconej. Takie podejcie moe zmarnowa mnstwo pasma,
jeli stopa bdw jest wysoka.
197
Na rysunku 3.11 (a) widzimy przypadek, gdy okno odbiornika jest due. Ramki 0 i 1 zostay
poprawnie odebrane i potwierdzone. Jednake ramka 2 zostaa uszkodzona lub zgubiona. Nadajnik,
nie wiedzc o tym problemie, wysya ramki dalej, pki nie upynie czas oczekiwania dla ramki 2.
Nastpnie wraca do ramki 2 i zaczyna od nowa nadawa 2, 3, 4 itd.
Druga oglna strategia obsugi bdw przy potokowym przesyaniu ramek nosi nazw powtrze selektywnych (ang. selective repeat). Gdy uywana jest ta technika, odebrana bdna ramka
zostaje odrzucona, lecz dobre ramki odebrane po niej s buforowane. Gdy koczy si czas oczekiwania nadajnika, zostaje ponownie przesana tylko najstarsza niepotwierdzona ramka. Jeli ta ramka
dotrze bez bdw, odbiornik bdzie mg dorczy do warstwy sieciowej kolejno wszystkie ramki,
ktre buforowa. Powtrzenia selektywne s czsto czone z koniecznoci wysania przez odbiornik potwierdzenia negatywnego (NAK) po wykryciu bdu, na przykad bdnej sumy kontrolnej
lub ramki poza kolejnoci. Potwierdzenia negatywne stymuluj retransmisje przed upyniciem
czasu oczekiwania, przez co poprawiaj wydajno.
Na rysunku 3.11 (b) ramki 0 i 1 rwnie zostay poprawnie odebrane i potwierdzone, a ramka
2 zostaa stracona. Gdy do odbiornika dotara ramka 3, jego warstwa cza danych zauwaya brak
ramki, wic wysaa NAK dla ramki 2, lecz zapisaa ramk 3 w buforze. Gdy dotary ramki 4 i 5,
te rwnie byy buforowane przez warstw cza danych, zamiast zosta przekazane do warstwy sieciowej. W kocu NAK ramki 2 dotaro do nadajnika, ktry natychmiast wysa ponownie t ramk.
Gdy ta dotara do odbiornika, warstwa cza danych otrzymaa ramki 2, 3, 4 oraz 5 i moga przesa je wszystkie do warstwy sieciowej we waciwej kolejnoci. Moga te potwierdzi wszystkie
ramki a do 5 wcznie, jak na rysunku. Gdyby NAK zostao utracone, w kocu w nadajniku upynby czas oczekiwania na potwierdzenie ramki 2 i nadajnik sam z siebie wysaby j (lecz tylko
j), aczkolwiek by moe znacznie pniej. Wobec tego negatywne potwierdzenie przyspieszyo
retransmisj tej konkretnie ramki.
Powtrzenia selektywne odpowiadaj oknu odbiorczemu wikszemu ni 1. Kada ramka w obrbie tego okna moe zosta przyjta i buforowana, dopki wszystkie poprzednie nie zostan przekazane do warstwy sieciowej. Takie podejcie moe wymaga sporo pamici dla warstwy cza danych,
jeli okno jest due.
Te dwie alternatywy stanowi kompromisy pomidzy przepustowoci a wielkoci buforw
warstwy cza danych. W zalenoci od tego, ktrego zasobu bardziej brakuje, moe zosta uyta
pierwsza lub druga. Listing 3.6 przedstawia protok potokowy, w ktrym odbiorcza warstwa cza
danych akceptuje tylko ramki we waciwej kolejnoci; ramki nadesane po bdzie s odrzucane.
W tym protokole po raz pierwszy zrezygnowalimy z zaoenia, e warstwa sieciowa zawsze ma
nieskoczon liczb pakietw do wysania. Gdy warstwa sieciowa chce wysa pakiet, moe spowodowa wystpienie zdarzenia
#. Aby jednak wymusi zasad sterowania przepywem mwic, e w kadej chwili nie moe by wicej ni $%
&'( zalegych ramek, warstwa cza
danych musi by zdolna do powstrzymania warstwy sieciowej przed obcianiem jej dodatkow
prac. Do tego su procedury biblioteczne !
i #!
.
LISTING 3.6.
Protok z oknem przesuwnym uywajcy techniki wr do n
/0)ACTB8!
>>83=B9#3FC2
$%
&'(!>>
#>BU
A>85>3F
>#
C5>C#5F>>8
BH8
# 3>#>
#58#
#CB0/
,#$%
&'(V/0
!2-WO0/
# 4
5
5 5
#6
7
198
199
B"LL
S
#4
/0[=
#>
B0/
B7/0
>F
#30/
S
#7/0
#1#=E#N#!0/
6
/0
3O5O-#B&
#NB0/
!
S
#5B5S
#4
/0!C F#>
#>0/
! #L! #O7/03#=E! =30/
S
#7/0#CU*7>>3>>0/
S
#7/0HEN#30/
6
!7
J!7/0
8 3>C0/
J/0
!7 3>>8C0/
S
#L
S
#7/0>>33E=#0/
L7KL! #74
#
#S
#5
S
#5! 7/0#3E
3>>>0/
S
#7/0
>8 3E
=#C0/
6
6
! #K$%
&'(
!
7
#!
7
6
6
Pytanie brzmi nastpujco: Czy wszystkich osiem ramek nalecych do drugiej porcji dotaro pomylnie, czy te wszystkich osiem zostao utraconych (liczc ramki odrzucone z powodu bdu
jako utracone)? W obu przypadkach odbiornik wysaby ramk 7 jako potwierdzenie. Nadajnik nie
jest w stanie tego rozrni. Z tego powodu maksymalna liczba zalegych ramek musi by ograniczona do $%
&'(.
Wprawdzie protok 5. nie buforuje ramek docierajcych po bdzie, lecz nie unika cakowicie
problemu buforowania. Poniewa nadajnik moe by zmuszony do pniejszej retransmisji wszystkich niepotwierdzonych ramek, to musi przechowywa wszystkie wysane ramki, dopki nie uzyska
pewnoci, e zostay przyjte przez odbiornik. Gdy przychodzi potwierdzenie dla ramki n, to ramki
200
n 1, n 2 itd. rwnie zostaj automatycznie potwierdzone. Ta waciwo jest szczeglnie wana, gdy jakie poprzednie ramki potwierdzajce zostay utracone lub znieksztacone. Zawsze, gdy
przychodzi potwierdzenie, warstwa cza danych sprawdza, czy moe teraz zwolni jakie bufory.
Jeli tak (tzn. w oknie jest wolne miejsce), uprzednio zablokowana warstwa sieciowa otrzyma zezwolenie na wygenerowanie kolejnych zdarze
#.
Dla tego protokou zakadamy, e zawsze wystpuje ruch w drug stron, na ktrym mona
podwie potwierdzenia. Jeli tak nie jest, potwierdze nie bdzie mona wysa. Protok 4. nie
czyni tego zaoenia, poniewa za kadym razem, gdy otrzyma ramk, nawet uprzednio otrzyman, odsya jedn ramk. W nastpnym protokole w elegancki sposb rozwiemy problem z ruchem jednokierunkowym.
Poniewa w protokole 5. wystpuje wicej ni jedna zalega ramka, to logicznie potrzebnych
jest wicej czasomierzy, po jednym na zaleg ramk. Dla kadej ramki czas oczekiwania odliczany
jest niezalenie od wszystkich pozostaych. Wszystkie te czasomierze mona z atwoci zasymulowa programowo z uyciem jednego zegara sprztowego, ktry okresowo powoduje przerwania.
Odliczane aktualnie czasy oczekiwania tworz list powizan, ktrej kady wze podaje liczb
taktw zegara do upynicia czasu oczekiwania, ramk, dla ktrej czas jest odliczany i wskanik
na nastpny wze.
Jako ilustracj tego, jak mona zaimplementowa te czasomierze, rozwamy przykad z rysunku 3.12 (a). Zamy, e zegar odlicza takty co 100 ms. Pocztkowy czas rzeczywisty to
10:00:00,0; trzy limity czasu kocz si o 10:00:00,5, 10:00:01,3 i 10:00:01,9. Przy kadym takcie
zegara sprztowego aktualizowany jest czas rzeczywisty, a licznik taktw na pocztku listy jest
dekrementowany. Gdy ten licznik wskae zero, powoduje upynicie czasu oczekiwania i wze
zostaje usunity z listy, jak na rysunku 3.12 (b). Wprawdzie taka organizacja wymaga skanowania
listy przy wywoaniu
lub
, lecz nie wymaga zbyt wiele pracy po kadym takcie.
W protokole 5. obie te procedury otrzymay parametr wskazujcy, dla ktrej ramki ma by mierzony czas.
201
W tym protokole zarwno nadajnik, jak i odbiornik utrzymuj okno dopuszczalnych numerw
sekwencyjnych. Okno nadajnika zaczyna si od 0 i ronie do jakiego wstpnie zdefiniowanego maksimum, $%
&'(. W przeciwiestwie do niego okno odbiornika ma stay rozmiar rwny $%
&'(.
W odbiorniku zarezerwowane s bufory dla wszystkich numerw sekwencyjnych w obrbie tego
staego okna. Z kadym buforem skojarzony jest bit # informujcy, czy bufor jest peny czy
pusty. Zawsze, gdy przychodzi ramka, jej numer sekwencyjny jest sprawdzany przez funkcj !
pod ktem tego, czy mieci si w obrbie okna. Jeli tak i jeli nie ramka nie zostaa wczeniej
odebrana, to zostaje zaakceptowana i zapamitana. Ta czynno jest podejmowana niezalenie do
tego, czy ramka zawiera kolejny pakiet oczekiwany przez warstw sieciow czy nie. Oczywicie musi zosta zatrzymana w warstwie cza danych, a nie przekazana do warstwy sieciowej, dopki
wszystkie poprzedzajce j ramki nie zostan dostarczone we waciwej kolejnoci do warstwy
sieciowej. Protok uywajcy tego algorytmu przedstawia listing 3.7.
LISTING 3.7.
Protok z oknem przesuwnym uywajcy powtrze selektywnych
/0)AC\B>
A>
>3 3
>31=5>
>> 3
#3C1331BHF#=>8C==
3>3>>B#
C>>5
>C3
#5>>8C53
TB0/
,#$%
&'(V/0
!2-WO0/
,#9[
]G&$%
&'(/-
# 4
5
5 5
#5
6
7
, #M
BM
!
L 7/0F#9*>C3>>C0/
"
#
L$%
&'(7/012
>=3# 0/
!!"
5"
!5"
4
/0+!
TB5>A>3
>3>B0/
KL!!KXXKKL!XX!KK7
6
##
#5"
5"
S
#5
! :;
4
/0H! # 313E#5@* !9*B0/
7/0>>0/
B#L7/0#LL#5 !0/
LL#BL! :
Y9[
]G&;7
B"L
7/0>>##0/
BL
S
#$%
&'(Y$%
&'(7
LL
L7/0
>E3#9*E0/
7/013E0/
LL#
Y9[
]G&7
7/0!
#>3=
>!0/
6
#
\#
4
"
S
#7/0#E#N#30/
"
S
#7/08AE#N#30/
"
S
#7/0#E#N#!0/
202
"
7/08AE#N#!0/
7/0##
! A0/
7/0>>0/
! :9[
]G&;7/0! # #>=80/
! :9[
]G&;7/0! # #>=80/
!#:9[
]G&;7/0#>0/
"
! #7/0! A F 0/
7
!
7/03> 30/
S
#L7/0E
#>
#>
>#>=0/
S
#L7/0E
3#>=30/
S
#L7
L9[
]G&7
! #L7/0
>= F#
3! 0/
L7K9[
]G&7#:;L7
4
7/0
E2F1J
>
F30/
4
#J/0>
35>
>13=E0/
! #L! #7/0>>>0/
! :S
#Y9[
]G&;7/0
!>
0/
#
#5S
#5
S
#5
! 7/013
E0/
S
#7/0
#18A=8E0/
!7
J/0#C# ! 3=0/
7/0
!>E
>#>==>>>30/
B#LL#4
/0DC >#>B0/
B"^L
S
#
#
55
S
#5
! 7
7
!
S
#5B"5
#:B"Y9[
]G&;LL
4
/0[8=!2
>3#331B0/
#:B"Y9[
]G&;L 7/0>>! 3
C0/
! :B"Y9[
]G&;LB7/0
#N##! 0/
#:
S
#Y9[
]G&;4
/0
>F
> IB0/
! :
S
#Y9[
]G&;7
L 7
#:
S
#Y9[
]G&;L7
S
#7/0
#1#=E#N#!0/
7/0
#18A=E#N#!0/
7/0>
>!!
#>0/
6
6
6
203
B#LL
!
S
#5BY$%
&'(5S
#
#
#5BY$%
&'(5
S
#5
! 7
!
S
#5B5S
#4
! #L! #O7/0!C F#>
#>0/
S
#Y9[
]G&7/0#C >0/
S
#7/0
#1#=E#N#30/
6
!7
J
#
55
S
#5
! 7/0 >#>
0/
!7
J
#
#5#
5
S
#5
! 7/0
C=C>
>>0/
!7
J
#
55
S
#5
! 7/08C>>7
13
#>0/
6
! #K9[
]G&!
7#!
7
6
6
Odbieranie ramek poza kolejnoci wprowadza pewne problemy nieobecne w protokoach, w ktrych ramki s przyjmowane tylko we waciwej kolejnoci. Najatwiej bdzie zilustrowa ten problem
na przykadzie. Zamy, e mamy 3-bitowy numer sekwencyjny, wic nadajnik ma prawo wysa
do siedmiu ramek, zanim zostanie zmuszony do zatrzymania si i czekania na potwierdzenie. Pocztkowe okna nadawcze i odbiorcze wygldaj jak na rysunku 3.13 (a). Nadajnik wysya teraz ramki
o numerach od 0 do 6. Okno odbiornika pozwala mu przyj kad ramk o numerze sekwencyjnym
od 0 do 6 wcznie. Wszystkie siedem ramek dociera poprawnie, wic odbiornik potwierdza je i przesuwa okno, aby pozwoli na przyjcie ramki o numerze 7, 0, 1, 2, 3, 4 lub 5, jak na rysunku 3.13 (b).
Wszystkie siedem buforw jest oznaczonych jako puste.
RYSUNEK 3.13. (a) Pocztkowa sytuacja z oknem o rozmiarze 7. (b) Sytuacja po wysaniu i odebraniu
siedmiu ramek, lecz przed ich potwierdzeniem. (c) Pocztkowa sytuacja z oknem o rozmiarze 4.
(d) Sytuacja po wysaniu i odebraniu czterech ramek, lecz przed ich potwierdzeniem
204
W tym momencie nastpuje katastrofa w postaci pioruna trafiajcego w sup telefoniczny i niszczcego wszystkie potwierdzenia. W kocu upywa czas oczekiwania i nadajnik ponownie wysya
ramk 0. Gdy ta dociera do odbiornika, przeprowadzana jest kontrola, czy mieci si w oknie odbiornika. Niestety, na rysunku 3.13 (b) ramka 0 mieci si w nowym oknie, wic zostanie przyjta.
Odbiornik odsya na barana potwierdzenie ramki 6, poniewa ramki od 0 do 6 zostay odebrane.
Nadajnik dowiaduje si z przyjemnoci, e wszystkie wysane ramki dotary poprawnie,
wic przesuwa swoje okno i natychmiast wysya ramki nr 7, 0, 1, 2, 3, 4 i 5. Ramka 7 zostanie
przyjta przez odbiornik i jej pakiet zostanie przekazany bezporednio do warstwy sieciowej. Bezporednio po tym warstwa cza danych odbiornika sprawdzi, czy ma ju poprawn ramk 0, odkryje, e tak, i przekae zawarty w niej pakiet do warstwy sieciowej. Wobec tego warstwa sieciowa otrzyma niepoprawny pakiet i protok zawiedzie.
Sedno problemu tkwi w tym, e po przesuniciu w gr okna przez odbiornik nowy zakres poprawnych numerw sekwencyjnych naoy si na stary. Wobec tego nastpna porcja ramek moe
zawiera albo duplikaty (jeli wszystkie potwierdzenia zostan utracone), albo nowe ramki (jeli
potwierdzenia zostay odebrane). Biedny odbiornik nie ma jak rozrni tych dwch przypadkw.
Rozwizanie polega na zapewnieniu, e po przesuniciu okna w gr przez odbiornik nie bdzie pokrycia z poprzednim oknem. Aby to zagwarantowa, maksymalny rozmiar okna powinien
obejmowa najwyej poow numerw sekwencyjnych, jak na rysunku 3.13 (c) i (d). Na przykad,
jeli na numery sekwencyjne uywane s 4 bity, to numery bd mieci si w zakresie od 0 do 15.
W kadej chwili powinno zalega najwyej osiem niepotwierdzonych ramek. W ten sposb, jeli
odbiornik wanie przyj ramki od 0 do 7 i przesun okno tak, by zezwoli na przyjcie ramek od
8 do 15, to bdzie mg jednoznacznie odrni przychodzce retransmisje (0 do 7) od nowych ramek (8 do 15). Oglnie mwic, rozmiar okna dla protokou 6. powinien wynosi ($%
&'( + 1)/2.
Wobec tego dla 3-bitowych numerw sekwencyjnych rozmiar okna wynosi 4.
Ciekawe moe by pytanie, ile buforw musi mie odbiornik? Pod adnym warunkiem nie
bdzie akceptowa ramek o numerach sekwencyjnych poniej dolnej lub powyej grnej krawdzi
okna. Wobec tego liczba potrzebnych buforw jest rwna rozmiarowi okna, a nie zakresowi numerw sekwencyjnych. W powyszym przykadzie z 4-bitowym numerem sekwencyjnym potrzebnych jest osiem buforw o numerach od 0 do 7. Gdy przychodzi ramka o numerze i, zostaje umieszczona w buforze (i mod 8). Prosz zwrci uwag, e chocia i oraz [(i + 8) mod 8] konkuruj o ten
sam bufor, to nigdy jednoczenie nie znajduj si w oknie, poniewa to wymagaoby okna o rozmiarze przynajmniej 9.
Z tego samego powodu liczba potrzebnych czasomierzy jest rwna liczbie buforw, a nie
liczbie numerw sekwencyjnych. W rzeczywistoci z kadym buforem jest skojarzony czasomierz.
Gdy upywa czas oczekiwania, zawarto bufora zostaje wysana ponownie.
W protokole 5. zostao poczynione niejawne zaoenie, e kana jest mocno obciony. Gdy
przybywa ramka, potwierdzenie nie jest wysyane natychmiast, lecz doczane na barana do nastpnej wychodzcej ramki danych. W razie niewielkiego ruchu w drug stron potwierdzenia bd
wstrzymywane na dugi czas. Jeli w jednym kierunku odbywa si intensywny ruch, a w drugim
nie ma adnego, zostanie wysanych tylko $%
&'( pakietw, a nastpnie protok zablokuje si,
dlatego te musielimy zaoy, e w drug stron odbywa si jaki ruch.
Ten problem zosta rozwizany w protokole 6. Po przybyciu ramki danych zgodnie z sekwencj
zostaje uruchomiony pomocniczy czasomierz przez
. Jeli nie pojawi si adna
transmisja w drug stron przed upyniciem jego czasu, zostanie wysana odrbna ramka potwierdzajca. Przerwanie spowodowane przez czasomierz pomocniczy nosi nazw zdarzenia
.
Przy takiej konfiguracji moliwy jest ruch danych w jednym kierunku, poniewa brak ramek
zwrotnych, na ktrych mog si podwie potwierdzenia, nie stanowi ju problemu. Istnieje tylko
jeden pomocniczy czasomierz, a jeli procedura
zostanie wywoana w trakcie
dziaania czasomierza, to zostanie on zresetowany do penego interwau potwierdzenia.
205
206
207
Kady stan jest oznaczany trzema literami, SRC, gdzie S jest rwne 0 lub 1 zalenie od ramki,
ktr nadajnik prbuje wysa; R rwnie jest rwne 0 lub 1 i odpowiada ramce oczekiwanej przez odbiornik, a C ma warto 0, 1, A lub pust () odpowiadajc stanowi kanau. W powyszym przykadzie wybralimy stan pocztkowy (000) inaczej mwic, nadajnik wysa wanie ramk 0,
odbiornik oczekuje ramki 0 i w kanale znajduje si ramka 0.
Na rysunku 3.14 wida dziewi typw przej. Przejcie 0 zawiera utrat zawartoci przez kana.
Przejcie 1 zawiera poprawne dorczenie pakietu 0 do odbiornika, po ktrym odbiornik zmienia
swj stan na oczekiwanie ramki 1 i wysya potwierdzenie. Przejcie 1 odpowiada te dorczeniu
przez odbiornik pakietu 0 do warstwy sieciowej. Pozostae przejcia przedstawia rysunek 3.14 (b).
Przyjcie ramki z bdem sumy kontrolnej nie zostao pokazane, poniewa nie zmienia stanu (w protokole 3.).
Podczas normalnego dziaania przejcia 1, 2, 3 i 4 s kolejno powtarzane raz za razem. W kadym cyklu zostaj dorczone dwa pakiety, przywracajc nadajnik do pierwotnego stanu prby wysania nowej ramki z numerem sekwencyjnym 0. Jeli kana utraci ramk 0, przechodzi ze stanu (000)
do (00). W kocu upywa czas oczekiwania nadajnika (przejcie 7), i system wraca do (000).
Utrata potwierdzenia jest bardziej skomplikowana i do naprawy szkody wymaga dwch przej, 7
i 5 lub 8 i 6.
Jedn z waciwoci, jak musi mie protok z 1-bitowym numerem sekwencyjnym, jest ta,
e niezalenie od sekwencji zdarze, jaka moe wystpi, nadajnik nigdy nie moe dorczy
dwch parzystych pakietw pod rzd bez rozdzielenia ich nieparzystym i vice versa. Z grafu na
rysunku 3.14 widzimy, e to stwierdzenie mona bardziej formalnie sformuowa tak: nie moe
208
istnie adna cieka ze stanu pocztkowego, na ktrej wystpuj dwa wystpienia przejcia 1 bez
wystpienia pomidzy nimi przejcia 3 lub vice versa. Z rysunku wida, e pod tym wzgldem
protok jest poprawny.
Jest jeszcze inny podobny wymg, e nie moe istnie adna cieka, na ktrej stan nadajnika
zmienia si dwukrotnie (np. z 0 na 1 i z powrotem na 0), podczas gdy stan odbiornika pozostaje
stay. Gdyby taka cieka istniaa, to w odpowiadajcej jej sekwencji ramek dwie ramki zostayby
nieodwracalnie utracone bez zauwaenia tego przez odbiornik. Dorczona sekwencja pakietw
zawieraaby niewykryt luk o dugoci dwch pakietw.
Jeszcze jedn wan waciwoci protokou jest brak zakleszcze. Zakleszczenie (ang. deadlock)
oznacza sytuacj, w ktrej protok nie moe pj dalej (np. dorcza pakietw do warstwy sieciowej),
niezalenie od tego, jaka sekwencja zdarze wystpi. W modelu grafu zakleszczenie charakteryzuje
si obecnoci podzbioru stanw osigalnego ze stanu pocztkowego i majcego dwie waciwoci:
(1) Nie istnieje przejcie wychodzce z podzbioru.
(2) Nie istniej przejcia w podzbiorze powodujce postp w przd.
Po wejciu do stanu zakleszczenia protok pozostaje w nim na zawsze. Ponownie atwo zobaczy
z naszego grafu, e w protokole 3. nie wystpuj zakleszczenia.
Przejcie jest aktywne, jeli w kadym z jego miejsc wejciowych znajduje si przynajmniej
jeden eton wejciowy. Aktywne przejcie moe odpali w dowolnej chwili, usuwajc jeden eton
z kadego miejsca wejciowego i umieszczajc eton w kadym miejscu wyjciowym. Jeli liczba
ukw wyjciowych rni si od liczby ukw wejciowych, etony nie s zachowywane. Jeli
aktywne s dwa przejcia lub wicej, odpali moe dowolne z nich. Wybr przejcia do odpalenia
jest nieokrelony, dlatego te sieci Petriego s przydatne do modelowania protokow. Sie Petriego
z rysunku 3.15 jest deterministyczna i moe suy do modelowania dowolnego dwufazowego
procesu (np. zachowania noworodka: jedz, pij, jedz, pij, jedz, pij i tak dalej). Podobnie jak w kadym narzdziu modelujcym niepotrzebne szczegy zostay tu pominite.
Rysunek 3.16 przedstawia model sieci Petriego dla listingu 3.4. W przeciwiestwie do modelu
z automatami skoczonymi nie ma w nim stanw zoonych: stany nadajnika, kanau i odbiornika s
209
BD AC
AA
AD BE
BB
210
5:
6:
7:
8:
9:
10:
11:
C
D
E
CF DF
EG DG
CF DF
EF DG
To ciekawe, jak udao nam si zredukowa zoony protok do 11 regu gramatycznych atwych
do manipulowania przez programy komputerowe.
Biecy stan sieci Petriego jest reprezentowany jako nieuporzdkowany zbir miejsc, z ktrych
kade miejsce jest tyle razy reprezentowane w zbiorze, ile ma etonw. Kada regua, dla ktrej
obecne s wszystkie miejsca po lewej, moe zosta odpalona, co powoduje usunicie tych miejsc
ze stanu biecego i dodanie ich miejsc wyjciowych do stanu biecego. Oznaczone dla rysunku 3.16
s ACG (tzn. A, C i G maj po jednym etonie). Wobec tego reguy 2., 5. i 10. s aktywne i kada z nich
moe zosta zastosowana, prowadzc do nowego stanu (by moe z takim samym cechowaniem
jak poprzedni). Z drugiej strony regua 3. (AD BE) nie moe zosta zastosowana, poniewa D
nie jest oznaczony.
211
Wszystkie protokoy zorganizowane bitowo uywaj struktury ramki jak na rysunku 3.17.
Pole Adres jest wane przede wszystkim na liniach z wieloma terminalami, gdzie suy do zidentyfikowania jednego z terminali. W czach dwupunktowych czasem jest uywane do odrniania
polece od odpowiedzi.
RYSUNEK 3.17.
Format ramki
w protokoach
zorganizowanych
bitowo
Pole Sterowanie jest przeznaczone na numery sekwencyjne, potwierdzenia i inne zastosowania omwione poniej.
Pole Dane moe zawiera dowolne informacje. Jego dugo moe by dowolna, aczkolwiek
skuteczno sumy kontrolnej maleje ze wzrostem dugoci ramki z uwagi na prawdopodobiestwo
wystpienia wicej ni jednej paczki bdw.
Pole Suma kontrolna zawiera kod CRC stosujcy technik, ktr omwilimy w punkcie 3.2.2.
Ramka jest ograniczona z obu stron sekwencj znacznikow 0111110. W bezczynnych liniach
dwupunktowych sekwencje znacznikowe s nadawane w sposb cigy. Minimalna ramka zawiera
trzy pola o cznej dugoci 32 bitw, nie liczc znacznikw na kocach.
Istniej trzy rodzaje ramek: Information (ramka danych), Supervisory (ramka nadzorcza)
i Unnumbered (ramka nienumerowana). Zawartoci pola Sterowanie dla tych trzech typw przedstawia rysunek 3.18. Protok uywa okna przesuwnego z 3-bitowym numerem sekwencyjnym.
W kadej chwili moe by zalegych najwyej siedem niepotwierdzonych ramek. Pole Seq z rysunku 3.18 (a) zawiera numer sekwencyjny ramki. Pole Next jest potwierdzeniem transportowanym
na barana. Jednake wszystkie protokoy stosuj si do konwencji, w ktrej zamiast numeru
ostatniej poprawnie otrzymanej ramki w tym polu przesyany jest numer pierwszej ramki jeszcze
nieodebranej (tzn. nastpnej oczekiwanej). Wybr pomidzy ostatni ramk odebran i nastpn
oczekiwan jest arbitralny; nie jest wane, ktra konwencja jest uywana, pod warunkiem, e jest
uywana konsekwentnie.
RYSUNEK 3.18.
Pola sterujce:
(a) ramki danych,
(b) ramki nadzorczej,
(c) ramki
nienumerowanej
Bit )/ oznacza Poll/Final. Jest on uywany, gdy komputer (lub koncentrator) odpytuje grup
terminali. Gdy jest uywany jako ), komputer zaprasza jeden terminal do wysania danych. Wszystkie ramki nadawane przez terminal, z wyjtkiem ostatniej, maj bit )/ ustawiony na ), a ostatnia na .
W niektrych protokoach bit )/ suy do zmuszania drugiego komputera do natychmiastowego wysania ramki nadzorczej, zamiast czeka na transmisj w drug stron, do ktrej mgby
doczepi informacje okna. Ten bit ma te pewne pomniejsze zastosowania w zwizku z ramkami
nienumerowanymi.
212
Rne typy ramek nadzorczych s rozrniane przez pole Typ. Typ 0 oznacza ramk potwierdzajc (oficjalnie nazywan ['@'_P'['D`) suc do wskazania nastpnej oczekiwanej ramki.
Ta ramka jest uywana wtedy, gdy nie ma transmisji w drug stron, do ktrej mona byoby doczepi potwierdzenie.
Typ 1 jest ramk potwierdzenia negatywnego (oficjalnie nazywan ['Q'@+). Suy do wskazania, e zosta wykryty bd transmisji. Pole Next wskazuje pierwsz ramk w sekwencji nieodebran
poprawnie (tzn. ramk wymagajc retransmisji). Od nadajnika wymaga si retransmisji wszystkich
zalegych ramek, poczynajc od Next. Ta strategia jest bardziej podobna do naszego protokou nr 5
ni do protokou nr 6.
Typ 2 to ['@'_P'9U+['D`. Potwierdza wszystkie ramki a do Next za jej wyjtkiem, podobnie
jak ['@'_P'9U+['D`, lecz kae nadajnikowi wstrzyma nadawanie. ['@'_P'9U+['D` suy do
sygnalizacji chwilowych problemw z odbiornikiem, takich jak brak wolnych buforw, lecz jest
alternatyw dla sterowania oknem przesuwnym. Po naprawie sytuacji odbiornik wysya ['@'_P'
['D`, ['Q'@+ lub okrelone ramki sterujce.
Typ 3 to &''@+_P'['Q'@+, dajcy retransmisji tylko podanej ramki. W tym sensie przypomina bardziej nasz protok nr 6 ni nr 5, wic jest najbardziej przydatny wtedy, gdy rozmiar okna
nadajnika jest rwny poowie przestrzeni numerw sekwencyjnych lub mniejszy. Jeli wic odbiornik
chce buforowa ramki spoza kolejnoci, aby mc ich ewentualnie uy pniej, to moe wymusi
retransmisj dowolnej konkretnej ramki, uywajc &''@+_P'['Q'@+. HDLC i ADCCP pozwalaj na ten typ ramki, lecz SDLC i LAPB nie dopuszczaj go, i w tych protokoach typ 3 jest niezdefiniowany.
Trzeci klas ramek s ramki nienumerowane (Unnumbered). Czasem s uywane do celw
sterowania, lecz mog rwnie przenosi dane, gdy potrzebna jest zawodna usuga bezpoczeniowa.
Rne protokoy o organizacji bitowej rni si tu znaczco, w przeciwiestwie do dwch pozostaych typw, ktre s w nich niemal identyczne. Do oznaczenia typu ramki dostpnych jest 5 bitw, lecz nie wszystkie 32 moliwoci zostay wykorzystane.
Wszystkie protokoy udostpniaj polecenie DISC (DISConnect rozcz) pozwalajce
komputerowi ogosi, e bdzie wyczony (na przykad do konserwacji prewencyjnej). Maj te
polecenie, ktre pozwala wanie podczonemu komputerowi ogosi swoj obecno i wymusi
wyzerowanie wszystkich numerw sekwencyjnych. To polecenie nosi nazw SNRM (Set Normal
Response Mode ustaw normalny tryb odpowiedzi). Niestety, ten normalny tryb odpowiedzi jest
daleki od normalnoci. Jest to tryb niezrwnowaony (tzn. asymetryczny), w ktrym jeden koniec
cza jest nadrzdny, a drugi podrzdny. SNRM pochodzi z czasw, gdy komunikacja danych oznaczaa komunikacj niemego terminala z duym komputerem-hostem, ewidentnie asymetryczn.
Aby protok lepiej nadawa si do komunikacji pomidzy partnerami rwnorzdnymi, HDLC i LAPB
zawieraj dodatkowe polecenie SABM (Set Asynchronous Balanced Mode ustaw asynchroniczny
tryb zrwnowaony), ktre zeruje lini i deklaruje obie strony jako rwnorzdne. Dostpne s te
polecenia SABME i SNRME, takie same jak odpowiednio SABM i SNRM, z t rnic, e pozwalaj na rozszerzony format ramki uywajcy 7-bitowych numerw sekwencyjnych zamiast 3-bitowych.
Trzecim poleceniem udostpnianym przez wszystkie protokoy jest FRMR (FRaMe Reject)
suce do wskazania, e zostaa odebrana ramka z poprawn sum kontroln, lecz o niedopuszczalnej skadni. Przykadami takiej skadni moe by typ 3 ramki nadzorczej w LAPB, ramka krtsza
ni 32 bity, nielegalna ramka sterujca, potwierdzenie ramki spoza okna itp. Ramki FRMR zawieraj
24-bitowe pole danych informujce, co jest nie tak z ramk. W danych mieci si pole sterujce
bdnej ramki, parametry okna i zbir bitw sucych do sygnalizacji konkretnych bdw.
Ramki sterujce mog zosta utracone lub uszkodzone, wic rwnie musz by potwierdzane.
Do tego celu suy specjalna ramka sterujca, zwana Unnumbered Acknowledgement (potwierdzenie
nienumerowane). Poniewa tylko jedna ramka sterujca moe by zalega, nigdy nie ma niejasnoci, ktra ramka zostaje potwierdzona.
213
Pozostae ramki sterujce s zwizane z inicjalizacj, odpytywaniem i raportowaniem stanu. Istnieje te ramka sterujca, ktra moe zawiera dowolne informacje UI (Unnumbered Information).
Te dane nie s przekazywane do warstwy sieciowej, lecz s przeznaczone dla samej warstwy cza
danych w odbiorniku.
Mimo swojej popularnoci HDLC jest daleki od doskonaoci. Omwienie szeregu zwizanych z nim problemw przedstawia Fiorini i inni (1994).
214
Protok PPP
Internet potrzebuje protokou dwupunktowego do wielu celw, w tym do transmisji pomidzy routerami oraz do transmisji pomidzy uytkownikiem domowym a ISP. Jest nim protok PPP
(Point-to-Point Protocol) zdefiniowany w RFC 1661 i rozwinity w kilku innych RFC (np. 1662
i 1663). PPP wykrywa bdy, obsuguje szereg rnych protokow, pozwala na negocjacj adresw IP w momencie podczenia, umoliwia uwierzytelnianie i ma wiele innych moliwoci.
PPP udostpnia trzy funkcje:
(1) Metod ramkowania, ktra w sposb jednoznaczny wyznacza koniec jednej ramki i pocztek
nastpnej. Format ramki obsuguje te wykrywanie bdw.
(2) Protok sterowania czem do uruchamiania i testowania linii, negocjowania opcji i wyczania linii w sposb kontrolowany, gdy przestaj by potrzebne. Ten protok nosi nazw
LCP (Link Control Protocol) i obsuguje obwody synchroniczne i asynchroniczne oraz kodowanie bitowe i bajtowe.
(3) Sposb negocjacji opcji warstwy sieciowej niezaleny od protokou warstwy sieciowej, ktry
bdzie uyty. Wybrana metoda polega na uyciu innego NCP (Network Control Protocol
protokou sterowania sieci) dla kadej obsugiwanej warstwy sieciowej.
Aby zobaczy, jak to wszystko czy si w cao, rozwamy typowy scenariusz, w ktrym uytkownik domowy czy si z ISP w celu uczynienia ze swojego domowego PC tymczasowego hosta
internetowego. Najpierw komputer PC czy si za pomoc modemu z routerem. Po odebraniu poczenia przez router i nawizaniu poczenia fizycznego PC wysya do routera seri pakietw LCP
w polu treci zasadniczej jednej lub wicej ramek PPP. Te pakiety i odpowiedzi na nie wybieraj
parametry PPP, ktre bd uywane.
Po uzgodnieniu parametrw zostaje wysana seria pakietw NCP do skonfigurowania warstwy
sieciowej. Zwykle PC uywa stosu protokow TCP/IP, wic potrzebuje adresu IP. Dostpnych
adresw IP jest za mao dla wszystkich, wic zwykle kady dostawca usug internetowych otrzymuje
pul takich adresw i przydziela je dynamicznie do kadego wieo podczonego PC na czas sesji
logowania. Jeli dostawca posiada n adresw, to moe obsuy najwyej n rwnoczenie zalogowanych komputerw, lecz czna baza klientw moe by wielokrotnie wiksza. NCP dla IP przypisuje adres IP.
Teraz PC jest ju hostem internetowym i moe wysya i odbiera pakiety IP, podobnie jak hosty
podczone na sztywno. Gdy uytkownik skoczy prac, NCP zrywa poczenie w warstwie sieciowej i zwalnia adres IP. Nastpnie LCP zamyka poczenie w warstwie cza danych. Na koniec komputer rozkazuje modemowi rozczy lini telefoniczn, zwalniajc poczenie w warstwie fizycznej.
Format ramki PPP zosta tak dobrany, e w duym stopniu przypomina format ramki HDLC,
poniewa nie ma sensu wywaa otwartych drzwi. Gwna rnica pomidzy PPP i HDLC polega na
tym, e PPP jest zorganizowany znakowo, a nie bitowo. Przede wszystkim PPP w modemowych
czach telefonicznych uywa napeniania bajtami, dziki czemu kada ramka skada si z cakowitej
liczby bajtw. Nie mona wysa ramki zoonej z 30,25 bajta jak w HDLC. Ramki PPP nie tylko
mog by wysyane czami telefonicznymi, lecz rwnie poprzez SONET i przez prawdziwe zorganizowane bitowo linie HDLC (np. w poczeniach midzy routerami). Rysunek 3.20 przedstawia format ramki PPP.
215
RYSUNEK 3.20. Format penej ramki PPP dla pracy w trybie nienumerowanym
216
RYSUNEK 3.21.
Uproszczony
schemat faz
wczania
i wyczania linii
LCP negocjuje opcje protokou cza danych w fazie 9<_cd. Protok LCP nie zajmuje si w rzeczywistoci samymi opcjami, lecz mechanizmem negocjacji. Udostpnia procesowi inicjujcemu
sposb zoenia propozycji oraz procesowi odpowiadajcemu sposb zaakceptowania lub odrzucenia
tych propozycji, wszystkich lub wybranych. Oprcz tego umoliwia tym procesom przetestowanie
jakoci cza, aby mogy ustali, czy jest wystarczajca do nawizania poczenia. Na koniec protok LCP pozwala te na wyczanie linii, gdy przestaj by potrzebne.
W RFC 1661 zdefiniowanych jest jedenacie typw ramek LFC, ktre przedstawia tabela 3.1.
Cztery typy @8 O pozwalaj stronie inicjujcej (I) proponowa wartoci opcji, a stronie odpowiadajcej (O) akceptowa je lub odrzuca. W drugim przypadku strona odpowiadajca moe zoy
alternatywn propozycj lub owiadczy, e w ogle nie dopuszcza negocjacji pewnych opcji. Negocjowane opcje i ich proponowane wartoci s elementami ramek LCP.
TABELA 3.1.
Typy ramek LCP
Nazwa
Kierunek
Opis
IO
IO
IO
IO
IO
IO
IO
IO
IO
IO
IO
Kody +O wyczaj lini, gdy przestaje by potrzebna. Kody @#O3 i )O3
wskazuj, e strona odpowiadajca otrzymaa co, czego nie rozumie. Ta sytuacja moe oznacza,
e wystpi niewykryty bd transmisji, lecz co bardziej prawdopodobne, obie strony uywaj innych
3.7. PODSUMOWANIE
217
wersji protokou LCP. Typy 'O su do testowania jakoci linii. Na koniec D#O"
pomaga w znajdowaniu bdw. Jeli ktra ze stron ma kopoty z wysyaniem bitw w kana,
programista moe uy tego typu do testowania. Jeli ramka zdoa przej, odbiornik po prostu j
odrzuca, zamiast podejmowa jak czynno, ktra mogaby wprowadzi w bd osob testujc
poczenie.
Do opcji podlegajcych negocjacji nale ustawienie maksymalnej wielkoci adunku uytecznego dla ramek danych, wczenie uwierzytelnienia i wybr protokou do tego celu, wczenie
monitorowania linii podczas normalnej pracy oraz wybr rnorodnych opcji kompresji nagwka.
O protokoach NCP moemy poda niewiele oglnych wiadomoci. Kady jest przeznaczony
dla konkretnego protokou warstwy sieciowej i pozwala zgasza dania konfiguracji charakterystyczne dla tego protokou. Na przykad dla IP najwaniejsz moliwoci jest dynamiczne przydzielanie adresw.
3.7. Podsumowanie
Zadaniem warstwy cza danych jest konwersja surowego strumienia bitw otrzymanego z warstwy
fizycznej na strumie ramek na potrzeby warstwy sieciowej. Stosowane s rne metody ramkowania, w tym zliczanie znakw, napenianie bajtami i napenianie bitami. Protokoy cza danych mog
zapewni kontrol bdw do retransmisji uszkodzonych i utraconych ramek. Aby uchroni si przed
zalaniem danymi wolnego odbiornika przez szybki nadajnik, protok cza danych moe te udostpni sterowanie przepywem. Mechanizm okna przesuwnego jest powszechnie stosowany do wygodnej integracji kontroli bdw i sterowania przepywem.
Protokoy z oknem przesuwnym mona podzieli na kategorie wedug rozmiaru okna nadajnika i odbiornika. Gdy oba s rwne 1, protok jest typu stop-and-wait. Gdy okno nadajnika jest
wiksze ni 1, na przykad aby nadajnik nie blokowa si w obwodach z dugim czasem propagacji,
odbiornik moe by zaprogramowany tak, by albo odrzuca wszystkie ramki z wyjtkiem nastpnej
oczekiwanej w sekwencji, albo buforowa ramki otrzymane poza kolejnoci, dopki nie stan si
potrzebne.
W rozdziale przedstawilimy szereg protokow. Protok 1. zosta zaprojektowany dla rodowiska wolnego od bdw, w ktrym odbiornik potrafi obsuy kady przepyw danych. Protok 2.
nadal zakada rodowisko wolne od bdw, lecz wprowadza sterowanie przepywem. Protok 3.
obsuguje bdy przez wprowadzenie numerw sekwencyjnych i uycie algorytmu stop-and-wait.
Protok 4. pozwala na komunikacj w obie strony i wprowadza ide doczepiania potwierdze na
barana (piggybacking). Protok 5. uywa okna przesuwnego z technik wr do n (go back n).
Na koniec protok 6. uywa selektywnych powtrze i potwierdze negatywnych.
Protokoy mog by modelowane z uyciem rnych technik pomagajcych zademonstrowa
ich poprawno (lub brak takowej). Do tego celu powszechnie stosuje si modele z uyciem automatw skoczonych i sieci Petriego.
W wielu sieciach w warstwie cza danych stosuje si jeden z protokow o organizacji bitowej SDLC, HDLC, ADCCP lub LAPB. Wszystkie te protokoy uywaj bajtw znacznikowych do wytyczania granic ramek i napeniania bitami do zapobiegania przed wystpieniem bajta
znacznikowego w danych. Wszystkie uywaj te okna przesuwnego do sterowania przepywem.
W Internecie protok PPP jest uywany jako podstawowy protok cza danych w liniach dwupunktowych.
218
Zadania
(1) Pakiet z wyszej warstwy jest dzielony na 10 ramek, z ktrych kada ma 80% prawdopodobiestwa dotarcia bez uszkodze. Jeli protok cza danych nie przeprowadza adnej kontroli bdw, ile razy rednio trzeba przesa wiadomo, aby cao dotara na miejsce?
(2) W protokole cza danych uywane jest nastpujce kodowanie znakw: A: 01000111; B:
11100011; FLAG: 01111110; ESC: 11100000. Przedstaw sekwencj bitw wysanych (binarnie) dla ramki zoonej z czterech znakw: A B ESC FLAG, przy uyciu nastpujcych metod
ramkowania:
(a) Zliczanie znakw.
(b) Bajty znacznikowe z napenianiem bajtami.
(c) Znaczniki pocztku i koca z napenianiem bitami.
(3) Poniszy fragment danych wystpuje w rodku strumienia danych, dla ktrego uywany jest
algorytm napeniania bajtami opisany w rozdziale: A B ESC C ESC FLAG FLAG D. Jakie bdzie
wyjcie po napenieniu?
(4) Jeden z kolegw, Sknerus, zwrci uwag na to, e oznaczanie koca jednej ramki bajtem
znacznikowym i rozpoczynanie nastpnej drugim bajtem znacznikowym jest marnotrawstwem.
Jeden bajt znacznikowy rwnie dobrze speni t rol, a drugi bajt zostaje nam w kieszeni.
Zgadzasz si z tym?
(5) acuch bitw 0111101111101111110 naley przesa na poziomie warstwy cza danych.
Jak bdzie wyglda ten acuch po napenieniu bitami?
(6) Czy przy stosowaniu napeniania bitami moliwe jest, e utrata, wstawienie lub modyfikacja
pojedynczego bitu nie zostanie wykryta przez sum kontroln? Jeli nie, dlaczego? Jeli tak,
w jaki sposb? Czy dugo sumy kontrolnej gra tu jak rol?
(7) Czy moesz sobie wyobrazi sytuacj, w ktrej protok z ptl otwart (np. kod Hamminga)
bdzie lepszy od protokow ze sprzeniem zwrotnym omawianych w tym rozdziale?
(8) Aby zapewni wiksz niezawodno ni ta, jak daje pojedynczy bit parzystoci, schemat
kodowania detekcyjnego uywa jednego bitu parzystoci do kontroli bitw nieparzystych i drugiego dla bitw parzystych. Jaka jest odlego Hamminga dla tego kodu?
(9) Szesnastobitowe komunikaty s przesyane z uyciem kodu Hamminga. Jak wiele bitw kontrolnych potrzeba, aby zapewni wykrywanie i korekt przez odbiornik bdw jednobitowych?
Poka wzorzec bitw przesyany dla komunikatu 1101001100110101. Za, e w kodzie
Hamminga uywana jest kontrola parzysta.
(10) 8-bitowy bajt o wartoci binarnej 10101111 ma by zakodowany z uyciem parzystego kodu
Hamminga. Jaka bdzie warto binarna po zakodowaniu?
(11) 12-bitowy kod Hamminga, ktrego warto szesnastkowa wynosi S'., dociera do odbiornika.
Jaka bya oryginalna warto szesnastkowa? Za, e najwyej jeden bit jest bdny.
(12) Jednym ze sposobw wykrywania bdw jest przesyanie danych jako bloku n wierszy z k
bitw na wiersz i dodawanie bitw parzystoci do kadego wiersza i kadej kolumny. W prawym dolnym rogu tablicy znajduje si bit parzystoci kontrolujcy swj wiersz i kolumn.
Czy taki schemat pozwala wykry wszystkie pojedyncze bdy? Podwjne? Potrjne?
(13) Blok bitw o rozmiarach n wierszy i k kolumn uywa pionowych i poziomych bitw parzystoci do wykrywania bdw. Zamy, e dokadnie 4 bity zostay zanegowane z powodu
bdw transmisji. Wyprowad wzr na prawdopodobiestwo, e bd nie zostanie wykryty.
(14) Jaka bdzie reszta z dzielenia wielomianu x7 + x5 + x przez wielomian generujcy x3 + 1?
(15) Strumie bitw 10011101 jest przesyany z uyciem standardowej metody CRC opisanej w rozdziale. Wielomian generujcy to x3 + 1. Przedstaw faktyczny przesany acuch bitw. Zamy,
e trzeci bit od lewej zosta zanegowany podczas transmisji. Poka, e ten bd zostanie wykryty po stronie odbiornika.
ZADANIA
219
(16) Protokoy cza danych niemal zawsze umieszczaj CRC w stopce, a nie w nagwku. Dlaczego?
(17) Kana ma przepustowo 4 kb/s i opnienie propagacji rwne 20 ms. Dla jakiego zakresu
wielkoci ramek protok stop-and-wait zapewni wydajno rwn przynajmniej 50%?
(18) cze T1 o dugoci 3000 km suy do przesyania 64-bajtowych ramek z uyciem protokou 5.
Jeli opnienie propagacji wynosi 6s/km, to ile bitw powinien mie numer sekwencyjny?
(19) Czy w protokole 3. moliwe jest, e nadajnik uruchomi czasomierz, gdy ten bdzie ju uruchomiony? Jeli tak, jak to moe si sta? Jeli nie, dlaczego jest to niemoliwe?
(20) Wyobra sobie protok z oknem przesuwnym uywajcy tak wielu bitw na numer sekwencyjny, e zawinicie nigdy nie wystpi. Jakie zalenoci musz by spenione pomidzy czterema krawdziami okien i rozmiarem okna, ktry jest stay i taki sam dla nadawcy i odbiorcy?
(21) Gdyby procedura ! w protokole 5. sprawdzaa warunek a b c zamiast a b < c, czy
miaoby to jaki wpyw na poprawno lub wydajno protokou? Uzasadnij swoj odpowied.
(22) Gdy w protokole 6. przychodzi ramka danych, dokonywana jest kontrola, czy numer sekwencyjny rni si od spodziewanego, i czy
jest prawd. Jeli oba warunki s spenione, zostaje wysana ramka NAK; w przeciwnym razie zostaje uruchomiony czasomierz pomocniczy.
Zamy, e zosta pominity warunek . Czy zmieni to poprawno protokou?
(23) Zamy, e usuniemy z kodu trzyinstrukcyjn ptl w okolicach koca protokou 6.
Czy wpynie to na poprawno protokou czy tylko na wydajno? Uzasadnij odpowied.
(24) Zamy, e z instrukcji w protokole 6. zosta usunity przypadek dla bdw sumy
kontrolnej. Jak zmieni to dziaanie protokou?
(25) W protokole 6. kod dla
zawiera sekcj uywan dla NAK. Ta sekcja jest wywoywana, gdy przychodzca ramka jest NAK i jest speniony inny warunek. Przedstaw scenariusz, w ktrym obecno tego drugiego warunku jest niezbdna.
(26) Wyobra sobie, e piszesz oprogramowanie warstwy cza danych dla linii uywanej do przesyania danych do siebie, lecz nie od siebie. Drugi koniec stosuje HDLC z 3-bitowym numerem
sekwencyjnym i oknem o rozmiarze siedmiu ramek. Chcesz buforowa jak najwicej ramek
niezgodnych z sekwencj, jak to tylko moliwe, aby zwikszy wydajno, lecz moesz zmodyfikowa tylko oprogramowanie po stronie nadajnika. Czy moliwe jest uycie okna odbioru
wikszego ni 1 i jednoczesne zagwarantowanie, e protok nigdy nie zawiedzie? Jeli tak,
jakie jest najwiksze okno, ktre mona uy bezpiecznie?
(27) Rozwamy dziaanie protokou 6. w czu 1 Mb/s wolnym od bdw. Maksymalna wielko
ramki wynosi 1000 bitw. Nowe pakiety s generowane co sekund. Dopuszczalny interwa
oczekiwania wynosi 10 ms. Gdyby zosta wyeliminowany specjalny czasomierz potwierdze,
wystpowayby niepotrzebne przekroczenia czasu oczekiwania. rednio ile razy zostaby wysany kady komunikat?
(28) W protokole 6. $%
&'( = 2n 1. Wprawdzie ten warunek jest ewidentnie podany, aby najskuteczniej wykorzysta bity nagwka, to nie zademonstrowalimy, e jest konieczny. Czy
protok bdzie funkcjonowa prawidowo dla, na przykad, $%
&'( = 4?
(29) Ramki o dugoci 1000 bitw s wysyane kanaem 1 Mb/s z uyciem satelity geostacjonarnego,
dla ktrego czas propagacji od Ziemi wynosi 270 ms. Potwierdzenia zawsze s transmitowane
na barana w ramkach danych. Nagwki s bardzo krtkie. Uywane s trzybitowe numery
sekwencyjne. Jakie jest maksymalne wykorzystanie kanau osigalne przy uyciu:
(a) protokou stop-and-wait,
(b) protokou 5.,
(c) protokou 6.?
(30) Oblicz, jaka cz pasma jest marnowana na dodatkowe informacje (nagwki i retransmisje)
w protokole 6. w mocno obcionym kanale satelitarnym 50 kb/s z ramkami danych zoonymi z 40 bitw nagwka i 3960 bitw danych. Za, e czas propagacji sygnau z Ziemi do
satelity wynosi 270 ms. Ramki ACK nigdy nie wystpuj. Ramki NAK maj dugo 40 bitw.
Stopa bdw dla ramek danych wynosi 1%, a dla ramek NAK jest pomijalna. Numery sekwencyjne maj 8 bitw.
220
(31) Rozwamy wolny od bdw kana satelitarny 64 kb/s, sucy do wysyania 512-bajtowych
ramek danych w jednym kierunku, z bardzo krtkimi potwierdzeniami przesyanymi w drug
stron. Jaka jest maksymalna zdolno przepustowa kanau dla okien o rozmiarach 1, 7, 15 i 127?
Czas propagacji Ziemia-satelita wynosi 270 ms.
(32) Kabel o dugoci 100 km przesya dane z przepywnoci T1. Prdko propagacji sygnau w kablu wynosi 2/3 prdkoci wiata w prni. Ile bitw mieci si w kablu?
(33) Zamy, e zamodelujemy protok 4. z uyciem modelu automatw skoczonych. Ile stanw
istnieje dla kadego automatu? Ile stanw istnieje dla kanau komunikacyjnego? Ile stanw
istnieje dla kompletnego systemu (dwa automaty i kana)? Zignoruj bdy sumy kontrolnej.
(34) Podaj sekwencj odpale dla sieci Petriego z rysunku 3.16 odpowiadajc sekwencji stanw (000), (01A), (01), (010), (01a) na rysunku 3.14. Objanij sownie, co reprezentuje ta sekwencja.
(35) Majc reguy przej AC B, B AC, CD E i E CD, narysuj opisan sie Petriego.
Na podstawie tej sieci narysuj graf stanw skoczonych osigalny ze stanu pocztkowego
ACD. Jak dobrze znan koncepcj modeluj te reguy przej?
(36) PPP opiera si w duym stopniu na HDLC, ktry uywa napeniania bitami do zapobiegania
niejasnociom, powodowanym przez przypadkowe wystpienia bajta znacznikowego w adunku ramki. Podaj przynajmniej jeden powd, dla ktrego PPP uywa zamiast tego napeniania
bajtami.
(37) Jaki jest minimalny narzut danych przy wysyaniu pakietu IP przez PPP? Wlicz tylko dane
wprowadzone przez PPP, pomijajc nagwek IP.
(38) Celem tego wiczenia laboratoryjnego jest zaimplementowanie mechanizmu wykrywania
bdw z uyciem standardowego algorytmu CRC opisanego w rozdziale. Napisz dwa programy, generator i weryfikator. Generator wczytuje z wejcia standardowego n-bitowy komunikat
jako acuch zer i jedynek zapisanych tekstem ASCII. W drugim wierszu znajduje si k-bitowy
wielomian, rwnie w ASCII. Powinien wysa na wyjcie standardowe wiersz tekstu ASCII
zoony z n + k zer i jedynek reprezentujcy komunikat do wysania. Nastpnie wysya wielomian tak, jak go wczyta. Program weryfikujcy wczytuje wyjcie programu generujcego i wysya na wyjcie komunikat informujcy, czy dane s poprawne czy nie. Na koniec napisz program
modyfikujcy zmieniacz, ktry neguje jeden bit z pierwszego wiersza, zaleny od argumentu
(bity liczone s od lewej; pierwszy bit po lewej ma numer 1), lecz kopiuje poprawnie ca reszt
obu wierszy. Wpisanie: