You are on page 1of 63

IDZ DO

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

ZAMW DRUKOWANY KATALOG

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

Sieci komputerowe rozwijaj si niezwykle dynamicznie. Regularnie pojawiaj si nowe


technologie, nowe sposoby przekazywania danych, nowe protokoy i narzdzia.
Chyba kady uytkownik komputera spotka si przynajmniej raz z sieci komputerow.
Internet jest dzi tak powszechny jak telewizja czy radio. Coraz popularniejsze staj si
te nowe technologie sieci bezprzewodowe, Bluetooth i sieci komrkowe. Znajomo
zagadnie lecych u podstaw projektowania i wykorzystywania sieci komputerowych
jest przydatna kademu, kto chce by na bieco z nowoczesnymi technologiami.
Sieci komputerowe to kompendium wiedzy powicone wspczesnym technologiom
sieciowym. Opisuje zarwno mechanizmy ju wykorzystywane, jak i te, ktre s obecnie
w fazie bada i testw. Przedstawia sieci kablowe i bezprzewodowe oraz wykorzystujce
je aplikacje WWW, radio internetowe, usugi sieciowe i wiele innych.
Zastosowania sieci komputerowych
Warstwa fizyczna kable, wiatowody i cza bezprzewodowe
Warstwa cza danych protokoy sieciowe, weryfikacja
poprawnoci przesyu danych
Kontrola dostpu do nonika
Podwarstwa MAC -- Gigabit Ethernet, 802.11, szerokopasmowy
dostp bezprzewodowy i przeczanie
Warstwa sieciowa algorytmy routingu, kontrola przecie, QoS, IPv4 i IPv6
Warstwa transportowa programowanie gniazd, UDP, TCP, RTP i wydajno sieci
Warstwa aplikacji e-mail, WWW, PHP, bezprzewodowy dostp do WWW,
MP3 i strumieniowe przesyanie dwiku
Bezpieczestwo sieci AES, RSA, kryptografia kwantowa, IPsec
i bezpieczestwo WWW

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

1.5.3. Ethernet ..........................................................................................................................................72


1.5.4. Bezprzewodowe sieci LAN 802.11 ...........................................................................................74
1.6. Standaryzacja sieci ....................................................................................................................................77
1.6.1. Kto jest kim w wiecie telekomunikacji?........................................................................................77
1.6.2. Kto jest kim w wiecie standardw midzynarodowych?...............................................................79
1.6.3. Kto jest kim w wiecie standardw internetowych? .......................................................................80
1.7. Jednostki metryczne ..................................................................................................................................81
1.8. Zarys pozostaej czci ksiki..................................................................................................................82
1.9. Podsumowanie ..........................................................................................................................................83

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

4.4. Bezprzewodowe sieci lokalne .................................................................................................................257


4.4.1. Stos protokow 802.11. ...............................................................................................................258
4.4.2. Warstwa fizyczna 802.11..............................................................................................................259
4.4.3. Protok podwarstwy MAC w 802.11 ..........................................................................................260
4.4.4. Struktura ramki 802.11 .................................................................................................................264
4.4.5. Usugi ...........................................................................................................................................265
4.5. Szerokopasmowe cza bezprzewodowe.................................................................................................266
4.5.1. Porwnanie 802.11 z 802.16 ........................................................................................................267
4.5.2. Stos protokow 802.16 ................................................................................................................268
4.5.3. Warstwa fizyczna 802.16..............................................................................................................268
4.5.4. Protok podwarstwy MAC 802.16 ..............................................................................................270
4.5.5. Struktura ramki 802.16 .................................................................................................................271
4.6. Bluetooth.................................................................................................................................................272
4.6.1. Architektura Bluetooth .................................................................................................................273
4.6.2. Zastosowania Bluetooth ...............................................................................................................273
4.6.3. Stos protokow Bluetooth ...........................................................................................................275
4.6.4. Warstwa radiowa w Bluetooth......................................................................................................276
4.6.5. Warstwa pasma podstawowego w Bluetooth................................................................................276
4.6.6. Warstwa L2CAP w Bluetooth ......................................................................................................277
4.6.7. Struktura ramki Bluetooth ............................................................................................................277
4.7. Przeczanie w warstwie cza danych....................................................................................................278
4.7.1. Mosty pomidzy 802.x i 802.y .....................................................................................................280
4.7.2. Lokalne sieci zoone ...................................................................................................................282
4.7.3. Drzewa czciowe mostw...........................................................................................................283
4.7.4. Odlege mosty...............................................................................................................................285
4.7.5. Wzmacniaki, koncentratory, mosty, przeczniki, routery i bramy...............................................286
4.7.6. Wirtualne sieci LAN.....................................................................................................................288
4.8. Podsumowanie ........................................................................................................................................294

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

5.3.4. Kontrola przecie w podsieciach datagramowych ....................................................................338


5.3.5. Zrzut obcienia ...........................................................................................................................341
5.3.6. Kontrola fluktuacji........................................................................................................................342
5.4. Jako usug ............................................................................................................................................343
5.4.1. Wymogi ........................................................................................................................................343
5.4.2. Techniki osigania dobrej jakoci usug .......................................................................................345
5.4.3. Usugi zintegrowane .....................................................................................................................354
5.4.4. Usugi zrnicowane ....................................................................................................................356
5.4.5. Etykietowanie i MPLS..................................................................................................................359
5.5. Sieci zoone ...........................................................................................................................................361
5.5.1. Rnice midzy sieciami ..............................................................................................................362
5.5.2. czenie sieci ...............................................................................................................................363
5.5.3. Spinanie obwodw wirtualnych....................................................................................................364
5.5.4. Bezpoczeniowe sieci zoone ....................................................................................................365
5.5.5. Tunelowanie .................................................................................................................................367
5.5.6. Routing w sieciach zoonych ......................................................................................................368
5.5.7. Fragmentacja ................................................................................................................................369
5.6. Warstwa sieciowa w Internecie...............................................................................................................371
5.6.1. Protok IP....................................................................................................................................374
5.6.2. Adresy IP......................................................................................................................................377
5.6.3. Internetowe protokoy sterujce....................................................................................................386
5.6.4. Protok bram wewntrznych OSPF.............................................................................................391
5.6.5. Protok bram zewntrznych BGP................................................................................................395
5.6.6. Rozsyanie grupowe w Internecie.................................................................................................397
5.6.7. Mobilny IP....................................................................................................................................398
5.6.8. IPv6 ..............................................................................................................................................399
5.7. Podsumowanie ........................................................................................................................................406

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

6.5.3. Protok TCP ................................................................................................................................466


6.5.4. Nagwek segmentu TCP .............................................................................................................467
6.5.5. Nawizywanie poczenia TCP ....................................................................................................470
6.5.6. Zwalnianie poczenia TCP ..........................................................................................................471
6.5.7. Model TCP zarzdzania poczeniami..........................................................................................472
6.5.8. Zarzdzanie transmisj TCP .........................................................................................................474
6.5.9. Zmaganie si z przecieniami .....................................................................................................477
6.5.10. Zarzdzanie czasem przez TCP ..................................................................................................479
6.5.11. TCP w sieciach bezprzewodowych.............................................................................................483
6.5.12. Transakcyjny TCP ......................................................................................................................485
6.6. Wydajno sieci ......................................................................................................................................486
6.6.1. Problemy zwizane z wydajnoci sieci komputerowych.............................................................487
6.6.2. Pomiar wydajnoci sieci ...............................................................................................................489
6.6.3. Cechy projektowe systemu wpywajce na wydajno sieci ........................................................492
6.6.4. Szybkie przetwarzanie TPDU.......................................................................................................496
6.6.5. Protokoy dla sieci gigabitowych..................................................................................................498
6.7. Podsumowanie ........................................................................................................................................502

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

Warstwa cza danych

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.

3.1. Problemy projektowe warstwy cza danych


Warstwa cza danych moe spenia kilka okrelonych funkcji, w tym:
(1) Udostpnia dobrze zdefiniowany interfejs usugi warstwie sieciowej.
(2) Radzi sobie z bdami transmisji.
(3) Sterowa przepywem danych, aby wolne odbiorniki nie zostay zalane danymi z szybkich nadajnikw.
Aby zrealizowa te cele, warstwa cza danych bierze pakiety, ktre otrzymuje z warstwy sieciowej,
i kapsukuje je do transmisji w ramki. Kada ramka zawiera nagwek, pole treci zasadniczej
i stopk, jak na rysunku 3.1. Zarzdzanie ramkami jest gwnym zadaniem warstwy cza danych.
W nastpnych punktach zapoznamy si szczegowo z problemami wymienionymi powyej.

168

3. WARSTWA CZA DANYCH

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.

3.1.1. Usugi wiadczone dla warstwy sieciowej


Funkcj warstwy cza danych jest wiadczenie usug warstwie sieciowej. Podstawowa usuga to
transfer danych z warstwy sieciowej w komputerze rdowym do warstwy sieciowej w komputerze
docelowym. W komputerze rdowym w warstwie sieciowej znajduje si co, nazwijmy to procesem, co przekazuje do warstwy cza danych bity przeznaczone do przesania do celu. Zadaniem
warstwy cza danych jest przesanie bitw do komputera docelowego, aby mogy zosta tam przekazane do warstwy sieciowej, jak na rysunku 3.2 (a). Faktyczna transmisja odbywa si ciek z rysunku 3.2 (b), lecz atwiej jest myle kategoriami dwch procesw warstwy cza danych komunikujcych si za pomoc protokou cza danych. Z tego powodu bdziemy w caym tym rozdziale
domylnie uywa modelu z rysunku 3.2 (a).
Warstwa cza danych moe by zaprojektowana tak, e bdzie oferowa rne usugi. Faktyczna
lista usug moe by rna zalenie od systemu. Trzy opcje, ktre s powszechnie udostpniane, to:
(1) Usuga bezpoczeniowa bez potwierdze.
(2) Usuga bezpoczeniowa z potwierdzeniami.
(3) Usuga poczeniowa z potwierdzeniami.
Spjrzmy kolejno na kad z nich.
W usudze bezpoczeniowej bez potwierdze komputer rdowy wysya niezalene ramki do
komputera docelowego bez potwierdzania ich przez komputer docelowy. adne logiczne poczenie nie jest nawizywane przed transmisj i zwalniane po transmisji. Jeli ramka zostanie utracona
z powodu zakce na linii, w warstwie cza danych nie jest podejmowana adna prba wykrycia
straty ani przywrcenia ramki. Ta klasa usug nadaje si tam, gdzie stopa bdw jest bardzo niska,
wic napraw pozostawia si warstwom wyszym. Jest te stosowana w transmisji w czasie rzeczywistym, na przykad mowy, gdzie opnienia danych s gorsze od bdw. Wikszo sieci LAN
uywa takiej usugi w warstwie cza danych.

3.1. PROBLEMY PROJEKTOWE WARSTWY CZA DANYCH

169

RYSUNEK 3.2. (a) Komunikacja wirtualna. (b) Komunikacja faktyczna

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

3. WARSTWA CZA DANYCH

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.

RYSUNEK 3.3. Miejsce protokou cza danych

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.

3.1. PROBLEMY PROJEKTOWE WARSTWY CZA DANYCH

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

3. WARSTWA CZA DANYCH

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.

3.1. PROBLEMY PROJEKTOWE WARSTWY CZA DANYCH

173

Gdy odbiornik otrzymuje pi kolejnych bitw 1, po ktrych nastpuje 0, automatycznie


usuwa bit 0. Napenianie bitami jest cakowicie niewidoczne dla warstwy sieciowej w obu komputerach, podobnie jak napenianie bajtami. Jeli dane uytkownika zawieraj wzorzec znacznikowy (01111110), to ten znacznik jest przesyany jako 011111010, lecz w pamici komputera odbierajcego zostaje zapisany jako 01111110. Przykad napeniania bitami przedstawia rysunek 3.6.
RYSUNEK 3.6.
Napenianie bitami:
(a) dane oryginalne,
(b) posta tych
danych w linii,
(c) dane zapisane
w pamici odbiorcy
po usuniciu
wypenienia

Napenianie bitami pozwala rozpoznawa w sposb jednoznaczny granice pomidzy ramkami


za pomoc wzorca znacznika. Dziki temu, gdy odbiornik utraci orientacj, gdzie jest, wystarczy e
poszuka w wejciowym strumieniu sekwencji znacznikowych, poniewa mog one wystpowa
tylko na granicach ramek, a nigdy w danych.
Ostatnia metoda ramkowania stosuje si tylko do sieci, w ktrych kodowanie w noniku fizycznym obejmuje pewn redundancj. Na przykad niektre sieci LAN koduj 1 bit danych z uyciem
2 bitw fizycznych. Standardowo bit 1 jest reprezentowany przez par wysoki-niski, a bit 0
przez par niski-wysoki. Taki schemat oznacza, e kady bit danych zawiera w rodku przejcie
pomidzy stanami uatwiajce odbiornikowi lokalizacj granic bitw. Kombinacje wysoki-wysoki
i niski-niski nie s uywane w przesyaniu danych, lecz w niektrych protokoach su do rozdzielania ramek.
Na zakoczenie tematu naley wspomnie, e wiele protokow cza danych dla dodatkowego
bezpieczestwa uywa kombinacji zliczania znakw z jedn z pozostaych metod. Gdy przychodzi
ramka, pole zliczania suy do lokalizacji jej koca. Tylko wtedy, gdy na tej pozycji obecny jest
odpowiedni znak rozdzielajcy i suma kontrolna jest poprawna, ramka zostaje zaakceptowana jako
poprawna. W przeciwnym razie strumie wejciowy jest skanowany w poszukiwaniu kolejnego
znaku rozdzielajcego.

3.1.3. Kontrola bdw


Po rozwizaniu problemu oznaczenia pocztku i koca kadej ramki przechodzimy do kolejnego
problemu: jak upewni si, e wszystkie ramki zostan ostatecznie dorczone do warstwy sieciowej w miejscu przeznaczenia bez bdw i w odpowiedniej kolejnoci. Zamy, e nadajnik wysya ramki jedna za drug bez zwracania uwagi na to, czy docieraj poprawnie do odbiornika. To
rozwizanie moe by dobre dla usugi bezpoczeniowej bez potwierdze, lecz z pewnoci nie
nadaje si dla niezawodnych usug poczeniowych.
Niezawodne dorczanie zwykle zapewnia si przez zwracanie do nadawcy pewnych informacji
o tym, co dzieje si na drugim kocu linii. Protok zazwyczaj wymaga od odbiornika odesania z powrotem specjalnych ramek sterujcych potwierdzajcych pozytywnie lub negatywnie przychodzce
ramki. Gdy nadajnik odbiera pozytywne potwierdzenie ramki, to wie, e ramka dotara bezpiecznie.
Z drugiej strony potwierdzenie negatywne oznacza, e co poszo nie tak i e ramka musi zosta nadana jeszcze raz.

174

3. WARSTWA CZA DANYCH

Dodatkowa komplikacja bierze si z moliwoci, e problemy ze sprztem mog spowodowa


cakowite zniknicie ramki (np. w impulsie zakcajcym). W takim przypadku odbiornik nie zareaguje w ogle, poniewa nie ma do tego adnego powodu. Powinno by jasne, e protok, w ktrym
nadajnik wysya ramk i czeka na potwierdzenie, pozytywne lub negatywne, zawiesi si na dobre,
gdy ramka zostanie utracona, na przykad z powodu wadliwego sprztu.
Do radzenia sobie w takich sytuacjach su czasomierze wprowadzone do warstwy cza danych.
Gdy nadajnik wysya ramk, zwykle rwnie uruchamia czasomierz tak dobrany, e czas oczekiwania powinien wystarczy na dotarcie ramki do celu, przetworzenie jej i propagacj potwierdzenia
z powrotem do nadajnika. Zazwyczaj ramka zostaje odebrana poprawnie i potwierdzenie wraca
przed kocem zliczania czasu.
Jeli jednak zgubi si ramka albo potwierdzenie, to czasomierz wcza si, informujc nadajnik
o potencjalnym problemie. Oczywistym rozwizaniem jest wysanie po prostu ramki jeszcze raz.
Jednake w przypadku wielokrotnego nadawania jednej ramki istnieje niebezpieczestwo, e odbiornik przyjmie t sam ramk dwa lub wicej razy i przekae j do warstwy sieciowej wicej ni
jeden raz. Aby temu zapobiec, trzeba zwykle przydzieli numery sekwencyjne wychodzcym
ramkom, aby odbiornik mg odrni ponowne transmisje od pierwotnych.
Cay problem zarzdzania czasomierzami i numerami sekwencyjnymi tak, by zapewni przekazanie w kocu u celu kadej ramki do warstwy sieciowej raz i tylko raz, jest wan czci obowizkw warstwy cza danych. W dalszej czci rozdziau przyjrzymy si kilku przykadom o coraz
wikszej zoonoci, aby zobaczy, jak to wyglda w praktyce.

3.1.4. Sterowanie przepywem


Kolejnym wanym problemem projektowym wystpujcym w warstwie cza danych (i wyszych
warstwach te) jest sposb reagowania na sytuacj, gdy nadajnik systematycznie chce wysya ramki
szybciej, ni odbiornik bdzie mg je odbiera. Taka sytuacja moe z atwoci wystpi, gdy nadajnik pracuje w szybkim (lub mao obcionym) komputerze, a odbiornik w komputerze wolnym
lub przecionym. Nadajnik wysya ramk za ramk z du szybkoci, dopki odbiornik nie zostanie
cakowicie zasypany danymi. Nawet jeli transmisja jest wolna od bdw, w pewnym momencie
odbiornik nie bdzie po prostu w stanie przetwarza dalszych nadchodzcych ramek i zacznie je
traci. Co trzeba oczywicie zrobi, aby zapobiec tej sytuacji.
Powszechnie stosowane s dwa podejcia. W sterowaniu przepywem na podstawie informacji zwrotnych nadajnik odsya informacje do nadajnika, udzielajc zgody na wysanie dalszych
danych lub przynajmniej informujc nadajnik o stanie odbiornika. W drugiej metodzie, sterowaniu
przepywem opartym na szybkoci transmisji, protok ma wbudowany mechanizm ograniczajcy szybko, z jak nadajniki mog wysya dane, bez informacji zwrotnych z odbiornika. W tym rozdziale zajmiemy si schematami sterowania przepywem na podstawie informacji zwrotnych, poniewa druga metoda nigdy nie jest stosowana w warstwie cza danych. Schematom opartym na
szybkoci transmisji przyjrzymy si w rozdziale 5.
Znane s rne schematy sterowania przepywem na podstawie informacji zwrotnych, lecz
wikszo z nich opiera si na tej samej podstawowej zasadzie. Protok zawiera dobrze zdefiniowane reguy tego, kiedy nadajnik ma prawo wysa kolejn ramk. Reguy te czsto zabraniaj wysyania ramek bez zezwolenia ze strony nadajnika, wprost lub implikowanego. Na przykad przy
nawizywaniu poczenia odbiornik moe zezwoli na wysanie n ramek teraz, lecz kolejne dopiero
po przysaniu zezwolenia na kontynuacj nadawania. Poniej przyjrzymy si szczegom tych schematw.

3.2. WYKRYWANIE I KOREKCJA BDW

175

3.2. Wykrywanie i korekcja bdw


Jak widzielimy w rozdziale 2., system telefoniczny skada si z trzech czci: central, czy midzy
centralami i ptli lokalnych. W wikszoci krajw rozwinitych dwa pierwsze skadniki s niemal
zawsze cyfrowe. Ptle lokalne nadal s analogowymi skrtkami miedzianymi i pozostan w tej
formie jeszcze przez lata z uwagi na ogromne koszty wymiany. Podczas gdy w czci cyfrowej bdy
s rzadkie, to nadal czsto wystpuj w ptlach lokalnych. Co wicej, komunikacja bezprzewodowa
staje si coraz popularniejsza, a w niej stopy bdw s o cae rzdy wielkoci wysze ni w czach
wiatowodowych pomidzy centralami. Wniosek: bdy transmisji byy, s i bd z nami jeszcze
przez wiele lat. Musimy nauczy si, jak z nimi sobie radzi.
Z uwagi na waciwoci procesw fizycznych, ktre je powoduj, bdy w pewnych nonikach
(np. radiowych) pojawiaj si seriami, a nie pojedynczo. Bdy tego typu maj zarwno wady, jak
i zalety w porwnaniu z odosobnionymi bdami jednobitowymi. Z jednej strony dane komputerowe
s zawsze wysyane w blokach bitw. Zamy, e blok ma wielko 1000 bitw, a stopa bdw
wynosi 0,001 na bit. Gdyby bdy byy niezalenie, wikszo blokw zawieraaby bd. Jednake
w przypadku bdw pojawiajcych si w seriach po 100 naraz, rednio tylko jeden lub dwa bloki
na 100 zostayby uszkodzone. Problem z seriami bdw polega na tym, e s znacznie trudniejsze
do naprawy ni bdy odizolowane.

3.2.1. Kody korekcyjne


Projektanci sieci opracowali dwie podstawowe strategie radzenia sobie z bdami. Jednym sposobem
jest zawarcie w kadym wysanym bloku danych wystarczajcej iloci redundantnych informacji,
by odbiornik mg odtworzy oryginalne dane. Drugi sposb polega na zawarciu tylko takiej redundancji, ktra pozwala odbiornikowi wykry wystpienie bdu bez jego rozpoznania i zada
ponownego wysania danych. Pierwsza strategia wykorzystuje kody korekcyjne (ang. errorcorrecting code), a druga kody detekcyjne (error-detecting code). Korzystanie z kodw korekcyjnych czsto nosi nazw bezporedniej korekcji bdw (ang. forward error correction).
Kada z tych technik zajmuje inn nisz. W kanaach o wysokiej niezawodnoci, na przykad
wiatowodowych, taniej jest uy kodu detekcyjnego i po prostu od czasu do czasu przesa ponownie blok z wykrytym bdem. Jednake w kanaach powodujcych wiele bdw, takich jak np. cza bezprzewodowe, lepiej doda do kadego bloku wystarczajc redundancj, aby odbiornik
mg odtworzy pierwotny blok, zamiast polega na retransmisji, ktra te moe zawiera bd.
Aby zrozumie, jak mona radzi sobie z bdami, musimy przyjrze si dokadnie, czym
w rzeczywistoci jest bd. Zwykle ramka skada si z m bitw danych (czyli komunikatu) i r bitw
redundantnych (kontrolnych). Niech cakowita dugo ramki wynosi n (czyli n = m + r). n-bitowa
jednostka zawierajce bity danych i kontrolne jest czsto nazywana n-bitowym sowem kodowym
(ang. codeword).
Majc dwa dowolne sowa kodowe, np. 10001001 i 10110001, moemy okreli, ile odpowiadajcych sobie bitw rni si. W tym przypadku rni si 3 bity. Aby ustali liczb odmiennych
bitw, wystarczy wykona operacj XOR na dwch sowach kodowych i zliczy bity 1 w wyniku,
na przykad:




176

3. WARSTWA CZA DANYCH

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

3.2. WYKRYWANIE I KOREKCJA BDW

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.

3.2.2. Kody detekcyjne


Kody korekcyjne s powszechnie stosowane w czach bezprzewodowych cieszcych si z saw
z powodu zakce i podatnoci na bdy w porwnaniu z kablami miedzianymi i wiatowodami.
Bez kodw korekcyjnych trudno byoby przesa przez nie cokolwiek. Jednake w kablach miedzianych i wiatowodach stopa bdw jest znacznie nisza, wic wykrywanie bdw i retransmisja
jest w nich zwykle bardziej wydajna przy radzeniu sobie z okazyjnymi bdami.
Jako prosty przykad rozwamy kana, w ktrym bdy s odosobnione, a stopa bdw wynosi
106 na bit. Niech blok ma rozmiar 1000 bitw. Aby zapewni korekt bdw dla blokw o tej
wielkoci potrzebnych jest 10 bitw kontrolnych; megabit danych wymagaby 10 000 bitw kontrolnych. Aby jedynie wykry blok z jednobitowym bdem, wystarczy jeden bit parzystoci na
blok. Raz na 1000 blokw trzeba bdzie nada dodatkowy blok (1001 bitw). Cakowite dodatkowe
obcienie kanau w metodzie detekcji bdw i retransmisji wynosi tylko 2001 bitw na megabit
danych, przy 10 000 bitw dla kodu Hamminga.

178

3. WARSTWA CZA DANYCH

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).

3.2. WYKRYWANIE I KOREKCJA BDW

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

3. WARSTWA CZA DANYCH

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.

3.3. PODSTAWOWE PROTOKOY CZA DANYCH

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).

3.3. Podstawowe protokoy cza danych


Omawianie protokow zaczniemy od opisu trzech protokow o rosncej zoonoci. Dla zainteresowanych dostpny jest poprzez WWW symulator tych i kolejnych protokow (patrz Wprowadzenie).
Zanim przyjrzymy si tym protokoom, warto sprecyzowa kilka zaoe dotyczcych modelu komunikacji, na ktrym si opieraj. Zacznijmy od tego, e zakadamy obecno w warstwach fizycznej, cza danych i sieciowej niezalenych procesw, ktre komunikuj si za pomoc przekazywanych tam i z powrotem komunikatw. W wielu przypadkach procesy warstw fizycznej i cza
danych bd uruchomione w procesorze wewntrz specjalnego ukadu wejcia-wyjcia, a kod warstwy sieciowej bdzie uruchomiony w gwnym procesorze komputera. Jednake moliwe s te
inne implementacje (np. trzy procesy w jednym ukadzie scalonym wejcia-wyjcia lub warstwy
fizyczna i cza danych jako procedury wywoywane przez proces warstwy sieciowej). W kadym
razie traktowanie trzech warstw jako odrbnych procesw spowoduje, e opisy bd ideowo bardziej przejrzyste, a oprcz tego pomoe w podkreleniu niezalenoci warstw.
Kolejnym podstawowym zaoeniem jest to, e komputer A chce wysa dugi strumie danych
do komputera B z uyciem niezawodnej usugi poczeniowej. Pniej rozwaymy te przypadek,
gdy B te chce rwnoczenie wysya dane do A. Zakadamy, e A ma nieskoczone zasoby danych
gotowych do wysania i nigdy nie musi czeka na ich wygenerowanie. Zamiast tego, gdy warstwa
cza danych w A da danych, warstwa sieciowa jest zawsze gotowa natychmiast je dostarczy
(to ograniczenie rwnie zarzucimy pniej).
Zakadamy te, e komputery nie padaj. Inaczej mwic, protokoy radz sobie z bdami
komunikacji, lecz nie z problemami powodowanymi zawieszaniem i restartem komputera.
Z punktu widzenia warstwy cza danych pakiet przekazywany do niej przez interfejs z warstwy
sieciowej stanowi czyste dane, ktrych kady bit musi zosta dorczony do warstwy sieciowej w komputerze docelowym. Fakt, e ta warstwa moe potraktowa cz pakietu jako nagwek, nie jest
istotny dla warstwy cza danych.
Gdy warstwa cza danych przyjmuje pakiet, kapsukuje go w ramk przez dodanie do niego
nagwka i stopki cza danych (patrz rysunek 3.1). Wobec tego ramka skada si z osadzonego w niej
pakietu, jakich informacji sterujcych (w nagwku) i z sumy kontrolnej (w stopce). Nastpnie ramka
zostaje wysana do warstwy cza danych w drugim komputerze. Zakadamy, e istniej odpowiednie
procedury biblioteczne:

, suca do wysania ramki, i  

, suca do odebrania ramki. Sprzt nadajnika oblicza i docza sum kontroln (tworzc w ten sposb
stopk), wic oprogramowanie warstwy cza danych nie musi si tym zajmowa. Moe tu zosta
uyty, na przykad, algorytm wielomianowy omwiony wczeniej.
Na pocztku odbiornik nie ma nic do roboty. Czeka tylko, a co si wydarzy. W przykadowych
protokoach w niniejszym rozdziale oznaczymy, e warstwa cza danych czeka na jakie zdarzenie,
przez wywoanie procedury 
 
  . Powrt z tej procedury odbywa si tylko wtedy, gdy co si stanie (np. nadejdzie ramka). Po powrocie zmienna  informuje, co si stao.
Zestaw moliwych zdarze bdzie rny w rnych opisywanych protokoach i zdefiniujemy go
osobno dla kadego protokou. Prosz zwrci uwag, e w bardziej realistycznej sytuacji warstwa
cza danych nie bdzie czeka na zdarzenie w ciasnej ptli, jak zasugerowalimy, lecz otrzyma przerwanie, ktre spowoduje wstrzymanie aktualnego dziaania i przejcie do obsugi przychodzcej
ramki. Jednake dla uproszczenia zignorujemy wszystkie szczegy rwnolegych dziaa w warstwie cza danych i zaoymy, e cay swj czas powica na obsug tylko naszego jednego kanau.

182

3. WARSTWA CZA DANYCH

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  !3 0/
 # 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/
 #
 
 
 0 7
/0) !>>  3  #  >CCB0/
 # 
  
  0 7
/0D E> 3> > #>=3#   3B0/
 #
  
  0 7

3.3. PODSTAWOWE PROTOKOY CZA DANYCH

183

/0) !>E > #>==> >>3  33=# B0/


 # 

07
/0)>FE#  >>3  3B0/
 #

07
/0G  >8  3>#>  B0/
 # 
"
7
/0H >3>8#>  3>#>  B0/
 #
"
7
/0G  > >  >  3>#>
 B0/
 # 

 #7
/0H >3> >  >#>  3>#>
 B0/
 #

 #7
/0) >A  3  # 2>#>  

#B0/
 #!
  
 #7
/0H! I  3  # 2>#>  

#B0/
 ##!
  
 #7
/0$ 3     # #> >#  3=J 3
>B0/
,#K$%
&'(L7L

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

3. WARSTWA CZA DANYCH

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.

3.3.1. Nieograniczony protok simpleksowy


Na pierwszy ogie wemiemy protok najprostszy z moliwych. Dane przesyane s tylko w jednym kierunku. Warstwy sieciowe nadajca i odbierajca s zawsze gotowe. Czas przetwarzanie
mona pomin. Dostpne jest nieograniczone miejsce w buforach. I, co najlepsze, kana komunikacyjny pomidzy warstwami cza danych nigdy nie uszkadza ani nie traci ramek. Ten zupenie oderwany od rzeczywistoci protok, ktry nazwiemy utopia, przedstawia listing 3.2.
LISTING 3.2.
Nieograniczony protok simpleksowy
/0) ACB   F 3E#  3#  5
>#3#  #! BHC#5FC  33  
 #!CE#A5 #! 3   > >2> #31 

3.3. PODSTAWOWE PROTOKOY CZA DANYCH

185

 I>>! B< ! 8 #3      E 


C#E >! 53 B0/
 # 4
6
 7
, #M   BM
 ## #
4
7/0!  # #>=30/
  ! 7/0!  # #>=8   0/
  4
 
  
! 7/0#N !2 1# C0/
B L! 7/0  3 #   30/


7/013 # 8E0/
6/0@=8 3  53  >A3 
<3EAC  ### #
F#    38C >  7
O$! 5P50/
6
 # #
4
7

  7/0 C  >> 5>  F0/
  4

 
  7/03# F 12 
0/
 

7/0#N !2 > #>==E0/

  
B 7/0 >F##   30/
6
6

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 
 

 z wartoci 


 w  (ktra i tak jest ignorowana). Wywoanie  


 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

3. WARSTWA CZA DANYCH

3.3.2. Simpleksowy protok stop-and-wait


Zrezygnujemy teraz z najmniej realistycznego zaoenia uytego w protokole 1. zdolnoci warstwy sieciowej odbiornika do przetwarzania danych nieskoczenie szybko (lub, co na to samo wychodzi, obecnoci nieskoczonej iloci miejsca w buforze do przechowywania przychodzcych
ramek, podczas gdy bd czeka na swoj kolej). Nadal zakadamy, e kana komunikacyjny jest
wolny od bdw i e dane przesyane s w jednym kierunku.
Gwny problem, z ktrym musimy si tu upora, polega na tym, aby zapobiec przed zalewaniem odbiornika przez nadajnik danymi szybciej, ni odbiornik bdzie mg je przetworzy. W skrcie,
jeli odbiornik wymaga czasu t do wykonania operacji  

 plus
  
,
nadajnik musi wysya ramki z szybkoci mniejsz ni jedna ramka na t. Co wicej, jeli zaoymy,
e w odbiorniku nie odbywa si sprztowo automatyczne buforowanie i kolejkowanie, nadajnikowi
nie wolno nada nowej ramki, dopki poprzednia nie zostanie pobrana przez  

;
w przeciwnym razie nowa ramka zamazaaby star.
W niektrych ograniczonych przypadkach (np. w transmisji synchronicznej, gdzie warstwa
cza danych odbiornika jest w peni powicona przetwarzaniu jednej linii wejciowej) moe wystarczy po prostu wstawienie w nadajniku opnienia w protokole 1. spowalniajcego transmisj
na tyle, e odbiornik nie zostanie zalany ramkami. Jednake czciej kada warstwa cza danych
musi zajmowa si kilkoma liniami, a odstpy czasu pomidzy nadejciem ramki i jej przetworzeniem
mog mie duy rozrzut. Jeli projektanci sieci potrafi obliczy zachowanie odbiornika w najbardziej niekorzystnych warunkach, bd mogli zaprogramowa nadajnik do wysyania informacji tak
powoli, e nawet przy maksymalnym opnieniu ramki nie bdzie przepenie. Takie podejcie
jest jednak zbyt konserwatywne. Prowadzi do wykorzystania pasma znacznie poniej optimum,
chyba e wahania czasu reakcji warstwy cza danych s bardzo mae (najlepsze i najgorsze warunki
s niemal identyczne).
Bardziej oglnym rozwizaniem tego problemu jest dostarczanie przez odbiornik informacji
z powrotem do nadajnika. Odbiornik po przekazaniu pakietu do swojej warstwy sieciowej odsya
do nadajnika ma pust ramk, ktra stanowi zezwolenie wysania kolejnej ramki. Po wysaniu
ramki przez nadajnik protok wymaga od niego oczekiwania na nadejcie maej pustej ramki
(potwierdzenia). Informowanie nadajnika przez odbiornik, kiedy moe wysa kolejn porcj danych, jest przykadem wspomnianego wczeniej sterowania przepywem.
Protokoy, w ktrych nadajnik wysya jedn ramk i czeka na potwierdzenie zanim wyle nastpn, nosz nazw zatrzymaj si i czekaj (stop-and-wait). Listing 3.3 przedstawia przykad
simpleksowego protokou stop-and-wait.
LISTING 3.3.
Simpleksowy protok stop-and-wait
/0) AC-B O#O AF  F 3E#3# 
>#3#  #! B)  >C#5FC  33  
 #!CE#A3   BQ#F > #!    I> =
 3 12!  A I> =>! 12 > >5E  AC   
  F2#3 > #! #>!35F 8=!2
 > >B0/
 # 4
6
 7
, #M   BM
 ##- #
4

3.3. PODSTAWOWE PROTOKOY CZA DANYCH

187

7/0!  # #>=30/


  ! 7/0!  # #>=8   0/

  7/03# F 12 
0/
  4
 
  
! 7/0#N !2 1# C0/
B L! 7/0  3 #   30/


7/0>>E13 #AF5> 0/

 
  7/0#N#35>#  > > 0/
6
6
 #- #
4
57/0!  0/

  7/03# F 12 
0/
  4

 
  7/03# F 12 
0/
 

7/0#N !2 > #>==E0/

  
B 7/0 >F##   30/


7/013  =E5F! ! #>2#30/
6
6

Wprawdzie dane w tym przykadzie s transmitowane w jednym kierunku, z nadajnika do


odbiornika, lecz ramki podruj w obie strony. Wobec tego kana komunikacyjny pomidzy dwiema warstwami cza danych musi by zdolny do przesyu informacji w obie strony. Jednake ten
protok wymaga cisej przemiennoci przepywu najpierw nadajnik wysya ramk, nastpnie
odbiornik wysya ramk, potem nadajnik, znw odbiornik i tak dalej. Tutaj wystarczy pdupleksowy kana fizyczny.
Tak jak w protokole 1. wszystko zaczyna si od pobrania przez nadajnik pakietu z warstwy
sieciowej. Nastpnie nadajnik tworzy z tego pakietu ramk i wysya j. Lecz teraz, w przeciwiestwie do protokou 1., nadajnik musi czeka na nadejcie ramki potwierdzajcej, zanim wrci na
pocztek ptli i pobierze nastpn ramk z warstwy sieciowej. Warstwa cza danych nadajnika
nie musi nawet analizowa otrzymanej ramki moliwo jest tylko jedna. Przychodzca ramka
jest zawsze potwierdzeniem.
Jedyna rnica pomidzy  i - polega na tym, e po dorczeniu pakietu do
warstwy sieciowej - odsya do nadajnika ramk potwierdzajc, zanim ponownie wejdzie
do ptli oczekujcej. Poniewa wane jest jedynie nadejcie ramki z powrotem do nadajnika, a nie
jej tre, odbiornik nie musi umieszcza w niej adnych konkretnych informacji.

3.3.3. Protok simpleksowy dla kanau z zakceniami


Rozwamy teraz typow sytuacj, w ktrej kana komunikacyjny wprowadza bdy. Ramki mog
by albo uszkodzone, albo cakowicie tracone. Jednake zaoymy, e jeli ramka ulega uszkodzeniu podczas transmisji, sprzt odbiornika wykryje to po obliczeniu sumy kontrolnej. Jeli ramka
jest uszkodzona w taki sposb, e suma kontrolna bdzie mimo to poprawna (mao prawdopodobne),
to protok ten, podobnie jak kady inny, moe zawie (tzn. przekaza uszkodzony pakiet do warstwy sieciowej).

188

3. WARSTWA CZA DANYCH

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

3.3. PODSTAWOWE PROTOKOY CZA DANYCH

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/03 E 3 #>=30/
7/0>>#0/
  ! 7/0!  # #>=8   0/

  7
S


#L7/03 3 #>= 30/
 
  
! 7/0 !> >  0/
  4
B L! 7/0>! # 3E#  30/
B"LS


#7/0 3# 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/0 F 1J
5 
0/

190

3. WARSTWA CZA DANYCH

 LL
4/0# C 0/
 

7/0#N !2 #!=C1E0/
B"LL
S  #4/0 >10/

  
B 7/0 >F##   30/

S  #7/0 E > > 3# 88   B0/
6
BLO
S  #7/0 #>5 A3  #>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.

3.4. Protokoy z oknem przesuwnym


W poprzednich protokoach ramki danych byy przesyane tylko w jednym kierunku. W wikszoci
sytuacji istnieje potrzeba transmisji danych w obie strony. Jednym ze sposobw na otrzymanie
transmisji penodupleksowej jest utworzenie dwch odrbnych kanaw komunikacyjnych i uywanie kadego na potrzeby jednokierunkowej transmisji danych (w przeciwnych kierunkach). W takiej
sytuacji mamy dwa odrbne obwody fizyczne, kady z kanaem docelowym (dla danych) i zwrotnym (na potwierdzenia). W obu przypadkach pasmo kanau zwrotnego marnuje si niemal w caoci.
Skutek jest taki, e uytkownik paci za dwa obwody, lecz uywa moliwoci jednego.
Lepszym pomysem bdzie uycie tego samego obwodu do transmisji danych w obie strony.
W kocu w protokoach 2. i 3. jest on ju uywany do przesyania ramek tam i z powrotem, a kana
zwrotny ma t sam przepustowo co kana docelowy. W tym modelu ramki danych z A do B s
przemieszane z ramkami potwierdzajcymi z A dla B. Sprawdzajc pole # w nagwku ramki
przychodzcej, odbiornik moe odrni ramk danych od potwierdzajcej.

3.4. PROTOKOY Z OKNEM PRZESUWNYM

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

3. WARSTWA CZA DANYCH

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.

3.4. PROTOKOY Z OKNEM PRZESUWNYM

193

3.4.1. Protok z jednobitowym oknem przesuwnym


Zanim zabierzemy si za przypadek oglny, przeanalizujmy najpierw protok z oknem przesuwnym
o maksymalnym rozmiarze rwnym 1. Jest to protok typu stop-and-wait, poniewa nadajnik wysya ramk i czeka na potwierdzenie przed wysaniem kolejnej.
Protok taki przestawia listing 3.5. Podobnie jak poprzednie zaczyna si od zdefiniowania zmiennych. S


# mwi, ktr ramk nadajnik usiuje wysa. Analogicznie, 
S  #
informuje, ktrej ramki spodziewa si odbiornik. W obu przypadkach moliwe s tylko 1 lub 0.
LISTING 3.5.
Protok z jednobitowym oknem przesuwnym
/0) AC.B>  > 3 #   B0/
,#$%
&'(/0 !2#   C .B0/
 # 4
5 
5  6
 7
, #M   BM
 #   . #
4
"
S


#7/0   !0/
"

S  #7/0   !0/
57/0> > 0/
  ! 7/0!F=  3 C0/

  7
S


#L7/0 E    31 0/

S  #L7/0 E  >0/
 
  
! 7/0 !>  >  30/
B L! 7/0 >8 3E# C >30/
B"LS


#7/0  3# 0/
BLO
S  #7/0!0/


7/0#3E0/
 
B"7/0   > >0/
  4

 
  7/0
5 
 !  0/
 LL
4/0# C!> > #>IB0/
 

7/0 !>3=0/
B"LL
S  #4/0 !C F31   IB0/

  
B 7/0 >F  #   30/

S  #7/0>8 3 E  >30/
6
BLLS


#4/0 !C F31   IB0/

B7/0C=>> >0/
 
  
! 7/0 !>   >  30/
S


#7/0>8 33#30/
6
6
B L! 7/0>! # 3 #>==E0/
B"LS


#7/0 # 330/
BLO
S  #7/03   3 #!30/


7/013E0/
 
B"7/0   > >0/
6
6

194

3. WARSTWA CZA DANYCH

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.

3.4.2. Protok uywajcy techniki wr do n


Do tej pory przyjmowalimy milczce zaoenie, e czas transmisji potrzebny na dotarcie ramki do
odbiornika razem z czasem transmisji z powrotem potwierdzenia jest pomijalny. Czasami takie zaoenie jest wyranie bdne. W takich sytuacjach dugi czas podry w dwie strony moe mie powany wpyw na skuteczno wykorzystania pasma. Wemy na przykad kana satelitarny 50 kb/s
z opnieniem propagacji tam i z powrotem rwnym 500 ms. Zamy, e sprbujemy uy protokou 4. do przesyania satelit 1000-bitowych ramek. W chwili t = 0 nadajnik zaczyna wysya
pierwsz ramk. W chwili t = 20 ms koczy si wysyanie caej ramki. Dopiero w t = 270 ms caa
ramka dociera do odbiornika, a dopiero w chwili t = 520 ms potwierdzenie wraca do nadajnika (w najlepszych warunkach bez czekania w odbiorniku i przy krtkiej ramce potwierdzajcej). Oznacza

195

3.4. PROTOKOY Z OKNEM PRZESUWNYM

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

3. WARSTWA CZA DANYCH

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.

3.4. PROTOKOY Z OKNEM PRZESUWNYM

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#3 FC2
$%
&'(!>> #>BU A> 8 5>3F
 >#   C5>C#5F  >>8  
 BH  8     # 3>#>  

#58#
 # CB0/
,#$%
&'(V/0 !2-WO0/
 # 4
5 
5  5  

#6
 7

198

3. WARSTWA CZA DANYCH

, #M   BM


  ! ! "
5"
!5"

4
/0HA2  531KL!K>7 >>B0/
KL!!KXXKKL!XX!KK
   7

 7
6
   ##
# "

5"

S  #5  ! :;
4
/0H! # 313E#B0/
7/0> > 0/
B L! :
;7/0   # 0/
B"L
7/0 3# 0/
BL
S  #$%
&'(Y$%
&'(7/0 #>!0/


7/013E0/
 

7/0   > >0/
6
 #   T #
4
"
S


#7/0$%
&'(Z7#   #>=8 0/
"

S  #7/03 >3>> #> 0/
"

S  #7/0 B >    #>=0/
7/0> > 0/
  ! :$%
&'(;7/0!  #   #>=8 0/
"
! #7/0>!  F!  A0/
"
7/0C F# #  !!  A0/

  7
!
  
7/0>>A>#>  

#0/

S  #L7/0 E  > > #>=0/
S


#L7/0 E  #>0/

S  #L7/0>! >0/
! #L7/0 >=  F#  3 !   0/
  4

 
  7/0>  F 1J  >
  F30/
  4
  

#J/0    # C0/
/0H 35> >#3 =EB0/
 
  
! :S


#;7/0 !>   0/
! #L! #7/0 >>>  #30/
#
# S


#5
S  #5! 7/013E0/
S


#7/0 #18A=E#N #30/
!7

J/0#>C# !  3=0/
 

7/0N > #>==E> >>30/

3.4. PROTOKOY Z OKNEM PRZESUWNYM

199

B"LL
S  #4
/0[= #>    B0/

  
B 7/0 >F  #   30/

S  #7/0 #1# =E#N  #! 0/
6
/0  3O5O- #B& #N B0/
! 
S  #5B5S


#4
/0 !C F# >   #>0/
! #L! #O7/0 3#=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>>3 3E =#0/
 L7KL! #74
#
# S


#5
S  #5! 7/0#3E
3>>>0/
S


#7/0 >8 3 E =# C0/
6
6
! #K$%
&'(
!
  
7

#!
  
7
6
6

Prosz zwrci uwag, e w kadej chwili moe zalega maksymalnie $%


&'( ramek, a nie
$%
&'( + 1, mimo to, e dostpnych jest $%
&'( + 1 rnych numerw sekwencyjnych: 0, 1, 2
$%
&'(. Aby zrozumie, dlaczego takie ograniczenie jest niezbdne, rozwamy poniszy scenariusz
z $%
&'( = 7.
(1)
(2)
(3)
(4)

Nadajnik wysya ramki od 0 do 7.


Potwierdzenie ramki 7 w kocu dociera na barana do nadajnika.
Nadajnik wysya kolejnych osiem ramek, ponownie z numerami sekwencyjnymi od 0 do 7.
Przychodzi na barana kolejne potwierdzenie dla ramki 7.

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

3. WARSTWA CZA DANYCH

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.

RYSUNEK 3.12. Symulacja kilku licznikw w oprogramowaniu

3.4.3. Protok uywajcy powtrze selektywnych


Protok 5. sprawdza si, gdy bdy wystpuj rzadko, lecz jeli linia jest marnej jakoci, traci
mnstwo pasma na retransmisje ramek. Alternatywna strategia radzenia sobie z bdami polega na
zezwoleniu odbiornikowi na przyjmowanie i buforowanie ramek nastpujcych po ramce uszkodzonej lub zgubionej. Taki protok nie odrzuca ramek tylko dlatego, e wczeniejsza ramka zostaa
uszkodzona lub utracona.

3.4. PROTOKOY Z OKNEM PRZESUWNYM

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 > 3 1=5>
>> 3  #   3C13 3 1BHF#=>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/0 12 >=  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# B L! :
Y9[
]G&;7
B"L
7/0>>  ##0/
BL
S  #$%
&'(Y$%
&'(7
LL
L7/0  >E  3# 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

3. WARSTWA CZA DANYCH

"

7/08AE#N  #! 0/
 7/0##  !  A0/
7/0> > 0/
  
! :9[
]G&;7/0!  #   #>=8 0/
  
! :9[
]G&;7/0!  #   #>=8 0/
! #:9[
]G&;7/0# >0/
"
! #7/0!  A  F 0/

  7
!
  
7/03> 30/

S  #L7/0 E  #> #>    > #>=0/
S


#L7/0 E 3 #>=30/

S  #L7

L9[
]G&7
! #L7/0 >=  F#  3 !   0/
 L7K9[
]G&7#:;L7
  4

 
  7/0 E2 F 1J  >
  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=8E 0/
!7

J/0# C# !  3=0/
 

7/0 !>E > #>==> >>30/
B#LL# 4
/0D C > #> B0/
B"^L
S  #

#
55
S  #5
! 7 

7
! 
S  #5B"5
#:B"Y9[
]G&;LL
4
/0[ 8=!2 >3 #  3 3 1B0/
#:B"Y9[
]G&;L  7/0 >>!  3  C0/

! :B"Y9[
]G&;LB 7/0  #N## !  0/
#:
S  #Y9[
]G&;4
/0 >F > I  B0/

  

! :
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

3.4. PROTOKOY Z OKNEM PRZESUWNYM

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

3. WARSTWA CZA DANYCH

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.

3.5. WERYFIKACJA PROTOKOW

205

Czas oczekiwania skojarzony z pomocniczym czasomierzem powinien by wyranie krtszy


od czasu uywanego przy oczekiwaniu na potwierdzenie ramki danych. Ten warunek jest niezbdny,
aby poprawnie odebrana ramka zostaa potwierdzona na tyle szybko, by nie upyn czas oczekiwania na potwierdzenie, powodujc retransmisj ramki.
Protok 6. do obsugi bdw uywa bardziej efektywnej strategii ni protok 5. Zawsze gdy
odbiornik ma podstawy przypuszcza, e wystpi bd, wysya ramk z negatywnym potwierdzeniem
(NAK) z powrotem do nadajnika. Taka ramka jest daniem retransmisji ramki wskazanej w NAK.
S dwie sytuacje, w ktrych odbiornik moe mie podejrzenia: gdy dotara ramka uszkodzona lub inna
ni oczekiwana (ramka moga zosta zgubiona). Aby unikn wielokrotnych da retransmisji tej
samej utraconej ramki, odbiornik powinien pamita, czy wysa ju NAK dla danej ramki. Zmienna

 w protokole 6. ma warto  , jeli negatywne potwierdzenie nie zostao jeszcze wysane
dla 
S  #. Jeli ramka NAK zostanie uszkodzona lub utracona, to nie stanie si nic powanego,
poniewa w nadajniku w kocu upynie czas oczekiwania i brakujca ramka zostanie i tak ponownie
wysana. Jeli po wysaniu i zgubieniu NAK przyjdzie niewaciwa ramka, 
 bdzie miaa
warto   i zostanie uruchomiony pomocniczy czasomierz. Gdy upynie jego czas oczekiwania,
zostanie wysana ramka ACK do ponownej synchronizacji nadajnika z biecym stanem odbiornika.
W niektrych sytuacjach czas wymagany na propagacj ramki do celu, przetworzenie jej tutaj
i powrt potwierdzenia jest (niemal) stay. W takich warunkach nadajnik moe ustawi swj czasomierz
tak, e czas oczekiwania bdzie tylko troch duszy od standardowego okresu spodziewanego pomidzy wysaniem ramki i otrzymaniem jej potwierdzenia. Jednake jeli ten czas jest mocno zmienny,
nadajnik ma moliwo albo ustawi nisk warto czasu oczekiwania (i ryzykowa niepotrzebne
retransmisje), albo du (i po wystpieniu bdu na duszy czas wchodzi w stan bezczynnoci).
Obie opcje powoduj marnowanie pasma. Jeli ruch w drug stron jest sporadyczny, czas pomidzy potwierdzeniami bdzie nieregularny: krtszy w obecnoci ruchu w drug stron i duszy
przy jego braku. Zmienny czas przetwarzania w odbiorniku rwnie moe stanowi tu problem.
Oglnie mwic, gdy odchylenie standardowe interwau potwierdzenia jest mae w porwnaniu z samym interwaem, czasomierz moe by ustawiony z maym zapasem i ramki NAK nie s przydatne.
W przeciwnym razie czasomierz musi zosta ustawiony z duym zapasem aby unikn niepotrzebnych
retransmisji, lecz NAK mog znaczco przyspieszy retransmisj utraconych i uszkodzonych ramek.
cile powizana z okresami oczekiwania i potwierdzeniami negatywnymi jest kwestia ustalenia,
ktra ramka spowodowaa upynicie czasu oczekiwania. W protokole 5. jest to zawsze 
S  #,
poniewa jest to zawsze najstarsza ramka. W protokole 6. nie istnieje aden prosty sposb ustalenia
sprawcy. Zamy, e zostay wysane ramki od 0 do 4, co oznacza, e lista zalegych ramek zawiera
01234, od najstarszej do najnowszej. Wyobramy sobie teraz, e upynie czas oczekiwania dla 0, zostanie wysana nowa ramka (5), dla ramek 1 i 2 upyn czasy oczekiwania i zostanie wysana jeszcze
jedna nowa ramka (6). W tym momencie lista zalegych ramek wyglda tak: 3405126, od najstarszej do najnowszej. Jeli przez jaki czas bdzie utracony wszelki ruch przychodzcy (czyli ramki niosce potwierdzenia), w tej kolejnoci upyn czasy oczekiwania dla siedmiu zalegych ramek.
Aby nie komplikowa przykadu jeszcze bardziej, nie pokaemy zarzdzania czasomierzami.
Zamiast tego zaoymy, e po upyniciu czasu oczekiwania ustawiana jest zmienna #

w celu wskazania, dla ktrej ramki upyn czas oczekiwania.

3.5. Weryfikacja protokow


Rzeczywiste protokoy i implementujce je programy s czsto do skomplikowane. Wobec tego sporo bada powicono prbom znalezienia formalnych, matematycznych technik specyfikowania i weryfikacji protokow. W poniszych punktach przyjrzymy si kilku modelom i technikom. Wprawdzie
spojrzymy na nie w kontekcie warstwy cza danych, lecz stosuj si one rwnie do innych warstw.

206

3. WARSTWA CZA DANYCH

3.5.1. Modele oparte na automatach skoczonych


Kluczowym konceptem stosowanym w wielu modelach protokow jest automat skoczony (inaczej
automat o skoczonej liczbie stanw). W tej technice kady automat protokou (np. nadajnik lub
odbiornik) w kadej chwili znajduje si w okrelonym stanie. Jego stan skada si z wszystkich
wartoci zmiennych, cznie z licznikiem rozkazw.
W wikszoci przypadkw du liczb stanw mona na potrzeby analizy zgrupowa razem.
Na przykad dla odbiornika z protokou 3. moemy wyabstrahowa z wszystkich moliwych stanw
dwa istotne: czekanie na ramk 0 i czekanie na ramk 1. Wszystkie pozostae stany mog by uwaane za przejciowe, jako jedynie kroki po drodze do jednego z gwnych stanw. Zwykle stany
wybierane s w tych momentach, gdy automat protokou czeka na wystpienie kolejnego zdarzenia, np. w naszych przykadach wykonuje wywoanie procedury   . W tym miejscu stan
automatu protokou w peni okrelaj stany jego zmiennych. Wobec tego liczba stanw wynosi 2n,
gdzie n jest liczb bitw potrzebnych do reprezentowania wszystkich zmiennych razem.
Stan caego systemu jest kombinacj wszystkich stanw obu automatw protokou i kanau. Stan
kanau jest okrelany przez jego zawarto. Jeli ponownie jako przykad wemiemy protok 3., to
kana ma cztery moliwe stany: ramka 0 lub 1 przechodzca z nadajnika do odbiornika, ramka potwierdzajca przechodzca w drug stron oraz kana pusty. Jeli zamodelujemy nadajnik i odbiornik
jako majce po dwa stany, kompletny system bdzie mia 16 rnych stanw.
Warto powiedzie tu kilka sw o stanie kanau. Idea ramki znajdujcej si w kanale jest
oczywicie abstrakcj. Uywajc tego pojcia, mamy na myli, e ramka moga zosta odebrana, lecz
nie zostaa przetworzona u celu. Ramka pozostaje w kanale, dopki automat protokou nie wykona  

 i nie przetworzy jej.
Z kadego stanu istnieje zero lub wicej moliwych przej (inaczej zmian stanw) do innych
stanw. Przejcia odbywaj si, gdy wystpuje jakie zdarzenie. Dla automatu protokou zmiana
stanu moe si odby w przypadku wysania ramki, odebrania ramki, upynicia czasu oczekiwania,
wystpienia przerwania itp. Typowymi zdarzeniami dla kanau s: wprowadzenie nowej ramki do
kanau przez automat protokou, dorczenie ramki do automatu protokou lub utrata ramki z powodu
zakce. Majc peny opis automatw protokou i waciwoci kanau, moemy narysowa graf
skierowany przedstawiajcy wszystkie stany jako wzy, a zmiany stanw w postaci krawdzi
skierowanych.
Jeden specjalny stan zostaje wyznaczony jako stan pocztkowy. Odpowiada on opisowi systemu zaraz po rozpoczciu pracy lub w jakim wygodnym miejscu wkrtce potem. Ze stanu pocztkowego cz innych stanw, a by moe wszystkie, mona osign przez sekwencj zmian stanw. Stosujc dobrze znane techniki z teorii grafw (np. obliczanie przechodniego domknicia
grafu), moemy ustali, ktre stany s dostpne, a ktre nie. Ta technika nosi nazw analizy osigalnoci (Lin i in., 1987). Ta analiza moe pomc w ustaleniu, czy protok jest poprawny.
Formalnie model protokou w automatach skoczonych moemy uzna za czwrk (S, M, I, T),
gdzie:
S jest zbiorem stanw, w ktrych mog by procesy i kana.
M jest zbiorem ramek, ktre mog by przesyane kanaem.
I jest zbiorem stanw pocztkowych procesw.
T jest zbiorem przej pomidzy stanami.
Na pocztku wszystkie procesy s w swoich stanach pocztkowych. Nastpnie zaczynaj zachodzi
zdarzenia, na przykad pojawiaj si ramki dostpne do przesania lub uruchamiaj si czasomierze.
Kade zdarzenie moe spowodowa podjcie akcji przez jeden z procesw lub kana i przejcie do
nowego stanu. Dokadne wypisanie wszystkich moliwych nastpcw kadego stanu pozwoli
zbudowa graf osigalnoci i przeanalizowa protok.

3.5. WERYFIKACJA PROTOKOW

207

Analiza osigalnoci umoliwia wykrycie rnorodnych bdw w specyfikacji protokou. Na


przykad, jeli pojawi si okrelona ramka w okrelonym stanie i automat skoczony nie powie, jaka
akcja ma zosta podjta, to specyfikacja jest bdna (niekompletna). Jeli istnieje zbir stanw, z ktrych nie ma wyjcia i nie moe wystpi postp (tzn. nie bdzie mona odbiera dalszych poprawnych ramek), to mamy inny typ bdu zakleszczenie. Mniej powanym bdem jest specyfikacja
protokou mwica, jak obsuy zdarzenie w stanie, w ktrym to zdarzenie nie moe wystpi (obce
przejcie). Inne bdy rwnie mog zosta wykryte.
Jako przykad modelu automatw skoczonych wemy rysunek 3.14 (a). Graf ten odpowiada
protokoowi 3. zgodnie z wczeniejszym opisem: kady automat protokou ma dwa stany, a kana cztery. Istnieje cznie 16 stanw, z ktrych nie wszystkie s osigalne z pocztkowego. Stany nieosigalne nie zostay przedstawione na rysunku. Dla uproszczenia pominite s te bdy sumy kontrolnej.

RYSUNEK 3.14. (a) Diagram stanw dla protokou 3. (b) Przejcia

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

3. WARSTWA CZA DANYCH

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.

3.5.2. Modele sieci Petriego


Automaty skoczone nie s jedyn technik pozwalajc formalnie specyfikowa protokoy. W tym
punkcie opiszemy zupenie odmienn technik zwan sieci Petriego (Danthine, 1980). Sie Petriego
ma cztery podstawowe skadniki: miejsca, przejcia, uki i etony. Miejsce reprezentuje stan, w ktrym
moe znajdowa si system lub jego cz. Rysunek 3.15 przedstawia sie Petriego z dwoma miejscami, A i B, reprezentowanymi przez okrgi. System znajduje si obecnie w stanie A, na co wskazuje eton (tusta kropka) w miejscu A. Przejcie jest oznaczane pionow lub poziom poprzeczk.
Kade przejcie ma zero lub wicej ukw wejciowych przychodzcych ze swoich miejsc wejciowych, oraz zero lub wicej ukw wyjciowych, prowadzcych do miejsc wyjciowych.
RYSUNEK 3.15.
Sie Petriego
z dwoma miejscami
i dwoma przejciami

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

3.5. WERYFIKACJA PROTOKOW

209

RYSUNEK 3.16. Model sieci Petriego dla protokou 3.

reprezentowane oddzielnie. Przejcia 1 i 2 odpowiadaj transmisji ramki 0 przez nadajnik i upyniciu


czasu oczekiwania. Przejcia 3 i 4 oznaczaj to samo dla ramki 1. Przejcia 5, 6 i 7 odpowiadaj
kolejno utracie ramki 0, potwierdzenia i ramki 1. Przejcia 8 i 9 wystpuj, gdy do odbiornika dotrze
ramka danych z niewaciwym numerem sekwencyjnym. Przejcia 10 i 11 reprezentuj dotarcie do
odbiornika nastpnej ramki w sekwencji i jej dorczenie do warstwy sieciowej.
Sieci Petriego mog suy do wykrywania bdw w protokole podobnie jak automaty skoczone. Na przykad gdyby jaka sekwencja odpale zawieraa przejcie 10 dwukrotnie bez przejcia 11 pomidzy nimi, to protok byby niepoprawny. Pojcie zakleszczenia w sieci Petriego jest
podobne do swojego odpowiednika w automacie skoczonym.
Sieci Petriego mog by reprezentowane w wygodniej formie algebraicznej przypominajcej
gramatyk. Kade przejcie dodaje jedn regu do gramatyki. Kada regua okrela miejsca wejciowe i wyjciowe dla przejcia. Poniewa rysunek 3.16 zawiera 11 przej, to jego gramatyka
zawiera 11 regu ponumerowanych od 1 do 11, z ktrych kada odpowiada przejciu o tym samym
numerze. Gramatyka dla sieci Petriego z rysunku 3.16 jest nastpujca:
1:
2:
3:
4:

BD AC
AA
AD BE
BB

210
5:
6:
7:
8:
9:
10:
11:

3. WARSTWA CZA DANYCH

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.

3.6. Przykadowe protokoy cza danych


W poniszych punktach opiszemy kilka powszechnie stosowanych protokow cza danych.
Pierwszy z nich, HDLC, jest klasycznym protokoem o organizacji bitowej, ktrego odmiany byy
przez dziesiciolecia uywane w rnych zastosowaniach. Drugi protok cza danych, PPP, suy
do czenia komputerw domowych z Internetem.

3.6.1. Protok HDLC


W tym punkcie przyjrzymy si grupie blisko spokrewnionych protokow, ktre s do stare, lecz
nadal powszechnie stosowane. Wszystkie wywodz si z protokou cza danych uytego po raz
pierwszy w wiecie komputerw mainframe firmy IBM SDLC (Synchronous Data Link Control).
Po opracowaniu SDLC IBM zgosi ten protok do ANSI i ISO w celu zaakceptowania jako standardu, odpowiednio w USA i midzynarodowego. ANSI zmodyfikowa go do wersji ADCCP (Advanced Data Communication Control Procedure), a ISO do wersji HDLC (High-level Data
Link Control). Nastpnie CCITT przyj i zmodyfikowa HDLC na swj LAP (Link Access
Procedure) jako element standardu interfejsu sieciowego X.25, lecz pniej zmodyfikowa jeszcze raz do LAPB, aby zapewni wiksz zgodno z pniejszymi wersjami HDLC. Mio mie
tak duo standardw do wyboru, nieprawda? Co wicej, jeli aden z nich nam si nie spodoba,
moemy po prostu zaczeka rok na nowszy model.
Te protokoy opieraj si na tych samych zasadach. Wszystkie maj organizacj bitow i wszystkie stosuj wypenianie bitami dla przezroczystoci danych. Rni si tylko szczegami, aczkolwiek w irytujcy sposb. Przedstawiony poniej opis protokow zorganizowanych bitowo jest pomylany jako oglne wprowadzenie. Konkretne szczegy poszczeglnych protokow dostpne s
w ich definicjach.

3.6. PRZYKADOWE PROTOKOY CZA DANYCH

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

3. WARSTWA CZA DANYCH

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.

3.6. PRZYKADOWE PROTOKOY CZA DANYCH

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).

3.6.2. Warstwa cza danych w Internecie


Internet skada si z indywidualnych urzdze (hostw i routerw) oraz czcej je infrastruktury
komunikacyjnej. W obrbie pojedynczego budynku do czenia urzdze powszechnie stosuje si
sieci LAN, lecz wikszo infrastruktury rozlegej opiera si na dwupunktowych czach dzierawionych. W rozdziale 4. opiszemy sieci LAN; tutaj przyjrzymy si protokoom cza danych uywanych w Internecie w czach dwupunktowych.
W praktyce komunikacja dwupunktowa jest stosowana gwnie w dwch sytuacjach. Po pierwsze, tysice organizacji dysponuj jedn lub wieloma sieciami LAN, z ktrych kada czy pewn
liczb hostw (komputery osobiste, stacje robocze, serwery itd.) z routerem (lub mostem o podobnej
funkcjonalnoci). Routery czsto s ze sob poczone szkieletow sieci LAN. Wszelkie poczenia
ze wiatem zewntrznym przechodz zwykle przez dwa lub wicej routerw majcych dwupunktowe poczenia liniami dzierawionymi z odlegymi routerami. Wanie te routery i ich linie dzierawione skadaj si na podsieci komunikacyjne, na ktrych opiera si Internet.
Drugim miejscem, w ktrym linie dwupunktowe graj w Internecie wan rol, s miliony domowych pocze z Internetem uywajcych modemw i linii telefonicznych. Zwykle uytkownik
domowego komputera PC czy si modemem z routerem dostawcy usug internetowych, po czym
zaczyna dziaa jak prawdziwy host internetowy. Ta metoda dziaania rni si od linii dzierawionej
pomidzy PC i routerem tylko tym, e poczenie zostaje zerwane po zakoczeniu sesji przez
uytkownika. Rysunek 3.19 przedstawia domowy PC czcy si z dostawc usug internetowych.
Modem zosta przedstawiony na zewntrz komputera, aby podkreli jego rol, lecz nowoczesne
komputery zawieraj modemy wewntrzne.

RYSUNEK 3.19. Komputer domowy grajcy rol hosta internetowego

214

3. WARSTWA CZA DANYCH

Zarwno w czach midzy routerami, uywajcych linii dzierawionych, jak i w poczeniach


liniami telefonicznymi pomidzy hostem i routerem, niezbdny jest jaki protok cza danych do
ramkowania, kontroli bdw i innych zada warstwy cza danych, ktre omwilimy w tym rozdziale. Protok uywany w Internecie nosi nazw PPP. Przyjrzyjmy mu si.

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.

3.6. PRZYKADOWE PROTOKOY CZA DANYCH

215

RYSUNEK 3.20. Format penej ramki PPP dla pracy w trybie nienumerowanym

Wszystkie ramki PPP zaczynaj si od standardowego bajta znacznikowego HDLC (01111110),


ktry jest napeniany bajtowo, jeli wystpi w polu treci zasadniczej. Nastpne jest pole adresu
(Address), zawsze zawierajce warto binarn 11111111 wskazujc, e wszystkie stacje powinny przyj ramk. Uycie tej wartoci pozwala unikn problemu z przydzielaniem adresw cza
danych.
Po polu adresu nastpuje pole sterujce (Control), ktrego domyln wartoci jest 00000011.
Ta warto oznacza ramk nienumerowan. Inaczej mwic, PPP domylnie nie zapewnia niezawodnej transmisji z uyciem numerw sekwencyjnych i potwierdze. W rodowiskach z duym
poziomem zakce, na przykad w sieciach bezprzewodowych, mona stosowa niezawodn
transmisj z uyciem trybu numerowanego. Szczegy przedstawia RFC 1663, lecz w praktyce ten
tryb jest rzadko uywany.
Poniewa pola adresu i sterujce w domylnej konfiguracji s zawsze stae, LCP udostpnia
mechanizmy niezbdne do wynegocjowania przez obie strony opcji ich pominicia i zaoszczdzenia 2 bajtw na ramk.
Czwarte pole PPP jest polem protokou. Jego zadaniem jest informowanie, jaki typ pakietu
znajduje si w polu adunku. Zostay zdefiniowane kody dla LCP, NCP, IP, IPX, AppleTalk i innych protokow. Kody protokow zaczynajce si od bitu 0 to protokoy warstwy sieciowej, takie jak IP, IPX, OSI, CLNP i XNS. Zaczynajce si od bitu 1 su do negocjowania innych protokow. Zaliczaj si do nich LCP i NCP dla kadego obsugiwanego protokou warstwy
sieciowej. Domylna wielko pola protokou wynosi 2 bajty, lecz moe zosta wynegocjowana
redukcja do 1 z uyciem LCP.
Pole adunku ma zmienn dugo a do okrelonego wynegocjowanego maksimum. Jeli
dugo nie bya negocjowana z uyciem LCP podczas wstpnej konfiguracji linii, uywana jest
domylna dugo 1500 bajtw. W razie potrzeby po adunku moe nastpowa wypenienie.
Po polu adunku nastpuje pole sumy kontrolnej, ktre domylnie ma 2 bajty, lecz mona te
wynegocjowa 4-bajtow sum kontroln.
W sumie PPP jest wieloprotokoowym mechanizmem ramkowania nadajcym si do uytku
w transmisji przez modemy, bitowe cza HDLC, SONET i inne warstwy fizyczne. Obsuguje wykrywanie bdw, negocjacj opcji, kompresj nagwka i opcjonalnie niezawodn transmisj z uyciem formatu ramki typu HDLC.
Przejdmy teraz od formatu ramki PPP do sposobu nawizywania i zrywania pocze.
Schemat (uproszczony) z rysunku 3.21 przedstawia fazy, przez ktre przechodzi linia podczas
wczania, eksploatacji i ponownego wyczania. Ta sekwencja stosuje si zarwno do pocze
modemowych, jak i pomidzy routerami.
Protok zaczyna dziaanie od linii w stanie aG@b, co oznacza, e nie jest obecny nonik warstwy fizycznej i e nie istnieje poczenie w warstwie fizycznej. Po nawizaniu poczenia fizycznego
linia przechodzi do 9<_cd. W tym momencie zaczyna si negocjacja opcji LCP, ktra, jeli zakoczy
si powodzeniem, prowadzi do G<_'[H`+'9_Q. Teraz obie strony mog, jeli chc, sprawdzi nawzajem
swoje tosamoci. Po wejciu do fazy &_'e zostaje wywoany odpowiedni protok NCP do skonfigurowania warstwy sieciowej. Jeli konfiguracja zostanie zakoczona pomylnie, linia wchodzi
w stan U+<[+ i moe odbywa si w niej transmisja danych. Po zakoczeniu linia przechodzi do
fazy H*Uf@H, a z niej do aG@b po porzuceniu nonika.

216

3. WARSTWA CZA DANYCH

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

Lista proponowanych opcji i wartoci.


Wszystkie opcje zostay zaakceptowane.
Niektre opcje nie zostay zaakceptowane.
Niektre opcje nie podlegaj negocjacji.
danie wyczenia linii.
OK, linia mona wyczy.
Otrzymano nieznane danie.
Zadano nieznanego protokou.
Prosz odesa t ramk z powrotem.
Prosz bardzo, odesana ramka.
Prosz zignorowa t ramk (do testw).

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

3. WARSTWA CZA DANYCH

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

3. WARSTWA CZA DANYCH

(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:

 

powinno da komunikat o poprawnoci danych, lecz wpisanie:



  CTIWOGPV 

powinno da komunikat o bdzie.


(39) Napisz program symulujcy zachowanie sieci Petriego. Program powinien wczytywa reguy
przej i list stanw odpowiadajce wydawaniu przez warstw sieciow nowego pakietu lub
przyjmowanie nowego pakietu. Ze stanu pocztkowego, rwnie wczytanego, program powinien wybra dowolnie wczone przejcia i odpali je, sprawdzajc, czy host kiedykolwiek
moe przyj 2 pakiety bez nadania w tym samym czasie przez drugiego hosta nowego pakietu.

You might also like