Wstęp do sieci model osi tcp ip


1.2. Sprzęt sieciowy

Nie istnieje żadna ogólnie przyjęta systematyka obej­mująca wszystkie sieci komputerowe, lecz wyróżniają się dwa istotne elementy: technologia prze­syłu i skala. Omówimy po kolei każdy z nich.

Ogólnie mówiąc, powszechnie używane są dwa typy technologii przesyłowych:

(1) Łącza rozgłoszeniowe.

(2) Łącza dwupunktowe.

W sieciach rozgłoszeniowych jeden kanał komunikacyjny jest wspólnie używany przez wszystkie komputery. Krótkie komunikaty (w pewnych kontekstach nazywane pakietami) wysyłane przez jedno urządzenie są odbierane przez wszystkie pozostałe. Pole adresu w pakiecie identyfikuje zamie­rzonego odbiorcę. Po odebraniu pakietu komputer sprawdza pole adresu. Jeśli pakiet jest przezna­czony dla niego, urządzenie przetwarza go; w przeciwnym razie pakiet jest ignorowany.

Jako analogię możemy sobie wyobrazić kogoś stojącego na końcu korytarza z drzwiami prowa­dzącymi do wielu pokojów i wołającego „Panie Watson, proszę tu przyjść, jest mi pan potrzebny". Wprawdzie pakiet może zostać odebrany (usłyszany) przez wiele osób, odpowie tylko Watson. Inni go zignorują. Inną analogią może być komunikat w porcie lotniczym, proszący wszystkich pasażerów lotu nr 644 o zgłoszenie się do bramki 12 w celu natychmiastowego wejścia na pokład samolotu.

Systemy rozgłoszeniowe ogólnie pozwalają też na wysłanie pakietu do wszystkich odbiorców przez użycie w polu adresu specjalnego kodu. Nadany pakiet z takim kodem jest odbierany i przetwarzany przez wszystkie urządzenia w sieci. Ten tryb działania nazywany jest (ang.

broadcasting). Niektóre systemy rozgłoszeniowe umożliwiają też transmisję do podzbioru komputerów — tzw. rozsyłanie grupowe, inaczej multiemisję (ang. multicasting). Jednym z możliwych sposobów jest rezerwacja jednego bitu wskazującego tryb rozsyłania grupowego. Pozostałe n - 1 bitów adresu może zawierać numer grupy. Każdy komputer może „subskrybować" dowolną lub wszystkie grupy. Gdy pakiet jest wysyłany do określonej grupy, zostaje doręczony do wszystkich komputerów subskrybujących tę grupę.

W przeciwieństwie do rozgłoszeniowych sieci typu dwupunktowego (ang.point-to-point)składają się z wielu połączeń pomiędzy poszczególnymi parami urządzeń. W sieci tego typu pakiet aby przejść ze źródła do miejsca przeznaczenia, może być zmuszony do odwiedzenia najpierw jednego lub kilku urządzeń pośredniczących. Często możliwe są różne trasy o różnych długościach więc w sieciach takich ważne jest znalezienie dobrej trasy. Ogólnie mówiąc (choć istnieje wiele wyjątków), małe, geograficznie skupione sieci najczęściej wykorzystują rozgłoszenia, a sieci większe zazwyczaj składają się z połączeń dwupunktowych. Transmisja dwupunktowa pomiędzy jednym nadawcą a jednym odbiorcą czasem nazywana jest uniemisją lub transmisją pojedynczą (ang unicasting). *

Alternatywnym kryterium podziału sieci jest ich skala. Na rysunku 1.4 systemy

wieloprocesorowe zostały podzielone według rozmiarów fizycznych. Na szczycie znajdują się sieci osobiste przeznaczone dla jednej osoby. Na przykład siecią osobistą może być sieć bezprzewodowa łącząc komputer z myszą klawiaturą i drukarką. Do tej kategorii można też zaliczyć PDA sterujący aparatem słuchowym lub rozrusznikiem serca użytkownika. Następne są sieci o większym zasięgi które możemy podzielić na sieci lokalne, miejskie i rozległe. Na koniec połączenie dwóch lub więcej sieci nosi nazwę sieci złożonej.

Ogólnoświatowy Internet jest dobrze znanym przykładem sieci złożonej. Odległości są istotne jak metryka klasyfikacji, ponieważ w różnych skalach używane są różne techniki. My zajmujemy się sieciami w każdej skali. Poniżej przedstawiamy krótkie wprowadzenie do sprzętu sieciowego.

0x01 graphic

2.1. Sieci lokalne

Sieci lokalne, ogólnie określane skrótem LAN (Local Area Network), są sieciami prywatnymi obejmującymi pojedynczy budynek lub grupę budynków w obszarze o średnicy do kilku kilometrów. ,sieci te są powszechnie używane do łączenia komputerów osobistych i stacji roboczych w biurach firmy i fabrykach w celu udostępniania zasobów (np. drukarek) i wymiany informacji. Sieci LAN od innych typów odróżniają trzy cechy: (1) rozmiary, (2) technologie transmisji i (3) topologia.

Sieci LAN mają ograniczone rozmiary, co oznacza, że czas przesyłu w najgorszym przypad­ku jest ograniczony i znany z góry. Znajomość tych granic umożliwia użycie pewnych rozwiązań, ;które w innych przypadkach byłyby niemożliwe do zastosowania, a jednocześnie upraszczają zarządzanie siecią.

Sieci lokalne mogą korzystać z technologii transmisji opartej na kablu, do którego podłączone są wszystkie komputery. Tradycyjne sieci LAN charakteryzują się szybkością przesyłu od 10 Mb/s do 100 Mb/s, niskim opóźnieniem (rzędu mikrosekund lub nanosekund) i bardzo niskim poziomem błędów. Nowsze sieci lokalne działają z szybkościami do 10 Gb/s. My będziemy trzymać się tradycji i mierzyć szybkość transmisji w megabitach na sekundę (1 Mb/s to 1 000 000 bitów na sekundę) i gigabitach na sekundę (1 Gb/s = 1 000 000 000 b/s).

W rozgłoszeniowych sieciach LAN możliwe są różnorodne topologie. Rysunek 1.5 przedsta­wia dwie z nich. W sieci magistralowej (zbudowanej z kabla liniowego) w każdej chwili najwyżej jedno urządzenie jest nadrzędne i ma prawo nadawania. Od wszystkich pozostałych urządzeń wynaga się powstrzymania od nadawania. Potrzebny jest mechanizm arbitrażu do rozstrzygania kon­fliktów, gdy dwa lub więcej urządzeń chce nadawać jednocześnie. Mechanizm arbitrażu może być scentralizowany lub rozproszony. Na przykład sieć IEEE 802.3, popularnie znana jako Ethernet, jest siecią rozgłoszeniową opartą na magistrali ze zdecentralizowanym sterowaniem zwykle dzia­łającą z szybkością od 10 Mb/s do 10 Gb/s. Komputery w sieci Ethernet mogą nadawać w dowol­nej chwili; w razie kolizji dwóch lub więcej pakietów każdy komputer odczekuje losowy odstęp czasu i ponawia próbę.

0x01 graphic

Drugim typem systemu rozgloszeniowego jest pierścień. W pierścieniu każdy bit propaguje się samodzielnie bez czekania na resztę pakietu, do którego należy. Zazwyczaj każdy bit okrąża cały pierścień w czasie potrzebnym na transmisję kilku bitów, często zanim kompletny pakiet zostanie wysłany. Podobnie jak we wszystkich innych systemach rozgłoszeniowych potrzebna jest jakaś reguła arbitrażu pomiędzy jednoczesnymi próbami dostępu do pierścienia. Używane są różne me­tody, jak np. nadawanie przez komputery kolejno. IEEE 802.5 (pierścień z krążącym żetonem (token ring) IBM-a) jest pierścieniową siecią lokalną działającą z szybkościami 4 Mb/s i 16 Mb/s. Innym przykładem sieci pierścieniowej jest FDDI.

Sieci rozgłoszeniowe możemy dalej podzielić na statyczne i dynamiczne, w zależności od tego, jak kanał jest przydzielany. Typowe przydzielanie statyczne polega na podziale czasu na dyskretne odstępy i użyciu algorytmu cyklicznego, pozwalając każdemu urządzeniu na rozgłaszanie tylko wte­dy, gdy nadejdzie jego przedział czasowy. Przydzielanie statyczne marnuje przepustowość kanału, gdy komputer nie ma nic do wysłania podczas przydzielonego mu interwału, więc większość sys­temów dąży do dynamicznego przydzielania kanału (czyli na żądanie).

Metody dynamicznego przydziału we wspólnym kanale mogą być scentralizowane lub zde­centralizowane. W scentralizowanej metodzie przydzielania kanału istnieje pojedyncza jednostka, na przykład jednostka arbitrażowa magistrali ustalająca kolejność. Może to robić, np. przyjmując żądania i podejmując decyzje według własnego wewnętrznego algorytmu. W zdecentralizowanej metodzie przydzielania kanału nie istnieje taka centralna jednostka; każdy komputer musi sam de­cydować, kiedy nadawać. Moglibyśmy sądzić, że to zawsze doprowadzi do chaosu, lecz tak nie jest. W dalszej części poznamy szereg algorytmów zaprojektowanych do zaprowadzania po­rządku w potencjalnym bałaganie.

1.2.2. Sieci miejskie

Sieć miejska (MAN — Metropolitan Area Network) obejmuje swoim zasięgiem miasto. Najlep­szym przykładem MAN może być sieć telewizji kablowej dostępna w wielu miastach. System ten rozwinął się ze wczesnych systemów anten zbiorczych, używanych w obszarach o słabym odbio­rze sygnału telewizyjnego z powietrza. W takich systemach duża antena była instalowana na szczycie pobliskiego wzgórza, a sygnał z niej był rozsyłany do domów subskrybentów.

Na początku były to systemy projektowane lokalnie i doraźnie. Następnie do akcji wkroczyły firmy, uzyskując od władz miejskich kontrakty na okablowanie całego miasta. Często kanały były ściśle wyspecjalizowane, na przykład tylko wiadomości, tylko sport, tylko kulinaria, tylko ogrod­nictwo i tak dalej. Lecz od powstania aż po późne lata 90. sieci te służyły wyłącznie do odbioru telewizji.

Od czasu, gdy Internet zdobył powszechną popularność, operatorzy sieci telewizji kablowej zaczęli zdawać sobie sprawę, że z pewnymi zmianami w systemie mogliby udostępnić dwukierun­kowe usługi internetowe w niewykorzystywanym paśmie. W tym momencie systemy telewizji ka­blowej zaczęły przekształcać się z narzędzia do dystrybucji telewizji w sieci miejskie. W pierw­szym przybliżeniu MAN może wyglądać jak system z rysunku 1.6. Na tym rysunku widzimy sygnały telewizyjne i internetowe kierowane do stacji czołowej (ang. head end) w celu dalszej dystrybucji do mieszkań. Bardziej szczegółowo wrócimy do tego tematu w rozdziale 2.

Telewizja kablowa nie jest jedynym typem sieci MAN. Najnowsze osiągnięcia w rozwoju szybkiego bezprzewodowego dostępu do Internetu zaowocowały innym typem MAN, który został znormalizowany jako IEEE 802.6. Przyjrzymy się mu w rozdziale 2.

1.2.3. Sieci rozległe

Sieć rozległa (WAN — Wide Area Network) rozciąga się na dużym obszarze geograficznym, często na terenie całego kraju lub kontynentu. Zawiera ona zbiór komputerów przeznaczonych do uruchamiania programów użytkowników (czyli aplikacji). Zastosujemy się do tradycyjnego na­zewnictwa i będziemy określać te komputery terminem host. Hosty są łączone podsiecią komu­nikacyjną, w skrócie podsiecią. Hosty stanowią własność klientów (np. komputery osobiste użyt­kowników), podczas gdy podsieć komunikacyjna zwykle stanowi własność i jest utrzymywana przez operatora telefonii lub dostawcę usług internetowych. Zadaniem podsieci jest przenoszenie komunikatów między hostami, podobnie jak system telefoniczny przenosi słowa od osoby mówiącej do słuchającej.

0x01 graphic

RYSUNEK 1.6. Sieć miejska oparta na telewizji kablowej

Rozdział czysto komunikacyjnego aspektu sieci (podsieci) od aspektu aplikacji hosty) ogromnie upraszcza projekt całej sieci.

W większości sieci rozległych podsieć składa się z dwóch odrębnych komponentów: linii przesyłowych i elementów przełączających. Linie przesyłowe przenoszą bity pomiędzy komputerami mogą być zbudowane z kabla miedzianego, światłowodów lub nawet łączy radiowych. Elementami przełączającymi są wyspecjalizowane komputery łączące trzy lub więcej linii przesyłowych. Gdy dane pojawiają się na linii wejściowej, element przełączający musi wybrać linię wyjściową, do której ma je przekazać. Komputery przełączające w przeszłości były nazywane różnie; obecnie najczęściej stosuje się nazwę router.

W tym modelu, przedstawionym na rysunku 1.7, każdy host jest zazwyczaj podłączony do sieci LAN, w której obecny jest router, aczkolwiek w niektórych przypadkach hosty mogą być podłączone bezpośrednio do routera. Zbiór łączy komunikacyjnych i routerów (lecz nie hostów) tworzy podsieć.

0x01 graphic

Musimy tu powiedzieć kilka słów o pojęciu „podsieć". Początkowo jedynym znaczeniem tego słowa był zbiór routerów i linii komunikacyjnych, które przenosiły pakiety z hosta źródłowego do docelowego. Jednakże kilka lat później słowo to nabrało drugiego znaczenia w związku z adresami sieciowymi (które omówimy w rozdziale 5.). Niestety, nie istnieje żadna powszechnie stosowana alternatywa dla pierwotnego znaczenia, więc z niejakim wahaniem będziemy używali słowa „pod­sieć" w obu znaczeniach. Zawsze będzie oczywiste z kontekstu, które znaczenie mamy na myśli.

W większości sieci WAN sieć zawiera liczne linie przesyłowe, z których każda łączy parę routerów. Gdy chcą się skomunikować dwa routery niepodłączone do tej samej linii przesyłowej, muszą to zrobić pośrednio poprzez inne routery. Gdy pakiet jest przesyłany z jednego routera do drugiego przez jeden lub więcej routerów pośredniczących, pakiet ten zostaje przez każdy z nich odebrany w całości, przechowywany, dopóki wymagane łącze wyjściowe się nie zwolni, a następnie przekazany dalej. Podsieć zorganizowana zgodnie z taką zasadą nosi nazwę podsieci pamiętająco-wysyłającej (ang. store-and-forward) lub podsieci z komutacją pakietów (packet-switched). Niemal wszystkie sieci rozległe (z wyjątkiem sieci używających satelitów) zawierają podsieci pamiętąjąco-wysyłąjące. Gdy pakiety są małe i wszystkie mają ten sam rozmiar, często nazywane są komórkami (celi).

Zasada działania sieci rozległej z komutacją pakietów jest tak ważna, że warto tu poświęcić jej kilka słów. Ogólnie mówiąc, gdy proces na którymś hoście musi wysłać komunikat do procesu na innym hoście, host nadawca najpierw dzieli komunikat na pakiety, z których każdy zawiera swój numer w sekwencji. Pakiety te są następnie szybko wprowadzane do sieci jeden za drugim. Pakiety są transportowane w sieci indywidualnie i wprowadzane do hosta odbiorcy, w którym zostają po­nownie złożone w pierwotny komunikat, a komunikat zostaje dostarczony do procesu odbiorcy. Strumień pakietów, będący wynikiem wysłania komunikatu, został zilustrowany na rysunku 1.8.

0x01 graphic

Na tym rysunku wszystkie pakiety przechodzą trasą ACE zamiast ABDE lub ACDE. W niektó­rych sieciach wszystkie pakiety z danego komunikatu muszą przechodzić tą samą trasą; w innych pakiety są kierowane niezależnie. Oczywiście jeśli ACE jest najlepszą trasą wszystkie pakiety mogą zostać nią wysłane, nawet jeśli każdy zostanie skierowany osobno.

Decyzje o wyborze trasy są podejmowane lokalnie. Gdy pakiet dociera do routera A, router ten decyduje, czy pakiet powinien zostać dalej przesłany linią do routera B czy do C. Sposób podjęcia decyzji przez router nosi nazwę algorytmu wyznaczania tras lub algorytmu trasowania (ang. routing algorithm). Istnieje wiele takich algorytmów. Niektóre z nich omówimy szczegółowo w rozdziale 5.

Nie wszystkie sieci WAN stosują komutację pakietów. Drugą możliwością dla sieci rozległe jest system satelitarny. Każdy router ma antenę, przez którą może nadawać i odbierać dane. Wszystkie routery odbierają dane z satelity, a w niektórych przypadkach również transmisje innych routerów do satelity. Czasem routery takie są podłączone do sporej podsieci typu dwupunktowego i tylko niektóre z nich mają własne anteny satelitarne. Sieci satelitarne są z natury rozgłoszeniowe i najbardziej przydatne są tam, gdzie charakter rozgłoszeniowy transmisji jest istotny.

2.4. Sieci bezprzewodowe

Cyfrowa łączność bezprzewodowa nie jest niczym nowym. Już w roku 1901 włoski fizyk Guglielmo Marconi zademonstrował bezprzewodowy telegraf łączący statek z brzegiem za pomocą kodu Morse'a (w końcu kropki i kreski też są danymi binarnymi). Współczesne bezprzewodowe systemy cyfrowe mają lepsze osiągi, lecz podstawowa idea pozostała ta sama.

W pierwszym przybliżeniu sieci bezprzewodowe możemy podzielić na trzy główne kategorie:

(1) Wewnętrzne łączenie systemów.

(2) Bezprzewodowe sieci lokalne.

(3) Bezprzewodowe sieci rozległe.

Wewnętrzne łączenie systemów oznacza wzajemne łączenie składników komputera za pomocą radia o małym zasięgu. Prawie każdy komputer jest wyposażony w monitor, klawiaturę, mysz i drukarkę łączone kablem z jednostką centralną. Tak wielu użytkowników ma poważne kłopoty z włożeniem właściwych wtyczek do właściwych gniazdek (mimo że zwykle są oznaczone różnymi kolorami), że większość producentów komputerów oferuje opcję montażu przez technika w domu klienta. Kilka firm zmotywowanych tą sytuacją zaprojektowało wspólnie sieć bezprzewodową o małym zasięgu zwaną Bluetooth, która pozwala łączyć te komponenty bez kabla. Bluetooth pozwala też podłączać komputera kamery cyfrowe, zestawy słuchawkowe, skanery i inne urządzenia poprzez samo wejście urządzenia w zasięg sieci. Nie trzeba kabli, nie trzeba instalować sterowników, wystarczy rozpakować, włączyć i już działa. Dla wielu użytkowników taka prostota obsługi jest dużym plusem.

W najprostszej postaci sieci łączące wewnętrznie system używają modelu nadrzędny-podległy z rysunku 1.9 (a). Główna jednostka jest zwykle nadrzędna i komunikuje się z myszą, klawiaturą itp. o z urządzeniami podległymi. Jednostka nadrzędna podaje urządzeniom podrzędnym, jakich adresów mają używać, kiedy mogą rozgłaszać dane, jak długo mogą nadawać, jakich częstotliwości mogą używać i tak dalej. Technologię Bluetooth omówimy bardziej szczegółowo w rozdziale 4.

0x01 graphic

Następnym krokiem w sieciach bezprzewodowych są bezprzewodowe sieci lokalne. Są to systemy, w których każdy komputer jest wyposażony w modem radiowy i antenę, którymi komunikuje z innymi systemami. Często na suficie znajduje się antena wykorzystywana do komunikowania przez komputery, jak na rysunku 1.9 (b). Jeśli jednak systemy są wystarczająco blisko siebie, mogą komunikować się ze sobą wzajemnie w konfiguracji „każdy z każdym". Bezprzewodowe sieci LAN stają się coraz bardziej popularne w małych biurach i w domach, gdzie instalowanie Ethernetu sprawiałoby zbyt wiele kłopotów, oraz w starszych biurowcach, w bufetach firm, salach konferencyjnych i innych miejscach. Istnieje standard bezprzewodowych sieci LAN, oznaczony IEEE 802.11, implemen­towany przez większość systemów i coraz powszechniej stosowany. Omówimy go w rozdziale 4.

Trzeci typ sieci bezprzewodowych jest używany w systemach rozległych. Przykładem bez­przewodowego systemu o niskiej przepustowości może być sieć radiowa telefonii komórkowej. Powstały już trzy generacje takich systemów. Pierwsza była analogowa i przeznaczona tylko do transmisji głosu. Druga generacja była cyfrowa i tylko dla głosu. Trzecia jest cyfrowa i pozwala na transmisję zarówno głosu, jak i danych. W pewnym sensie bezprzewodowe sieci komórkowe przypominają bezprzewodowe sieci LAN, tyle że odległości są znacznie większe, a przepustowości zdecydowanie niższe. Bezprzewodowe sieci LAN mogą działać z przepustowością do 50 Mb/s na odległości dziesiątków metrów. Systemy komórkowe działają poniżej 1 Mb/s, lecz odległość od stacji bazowej do komputera lub telefonu może by mierzona w kilometrach, a nie w metrach. Na temat tych sieci będziemy mieli znacznie więcej do powiedzenia w rozdziale 2.

Oprócz tych wolnych sieci opracowywane są również bezprzewodowe sieci rozległe o wyso­kiej przepustowości. Prace koncentrują się przede wszystkim na szybkim bezprzewodowym dostępie do Internetu z domów i firm omijającym system telefonii. Ta usługa często nazywana jest lokalną usługą dystrybucji wielopunktowej (ang. multipoint distribution service). Zajmiemy się nią w dalszej części. Również dla niej został opracowany standard — IEEE 802.16. Standard ten omówi­my w rozdziale 4.

Niemal wszystkie sieci bezprzewodowe łączą się w jakimś punkcie z siecią kablową co daje dostęp do plików, baz danych i Internetu. Połączenia takie mogą być realizowane na wiele sposo­bów, zależnie od okoliczności. Na przykład na rysunku 1.10 (a) przedstawiliśmy samolot, w którym szereg pasażerów używa modemów i telefonów pokładowych zainstalowanych w oparciach foteli do łączenia się z biurem. Każde połączenie jest niezależne od pozostałych, jednakże znacznie efektywniejszym rozwiązaniem jest latająca sieć lokalna z rysunku 1.10 (b). Tutaj każde miejsce pasażerskie jest wyposażone w łącze Ethernet, do którego pasażer może podłączyć swój komputer. Pojedynczy router zainstalowany w samolocie utrzymuje łącze radiowe z jakimś routerem na zie­mi, zmieniając routery na trasie lotu. Taka konfiguracja to po prostu tradycyjna sieć LAN, z tą tylko różnicą że połączenie ze światem zewnętrznym odbywa się łączem radiowym zamiast kabla.

0x01 graphic

RYSUNEK 1.10. (a) Indywidualne komputery mobilne, (b) Latająca sieć LAN

Wiele osób wierzy, że przyszłość będzie należeć do sieci bezprzewodowych (np. Bi i in., 2001, Leeper. 2001, Varshey i Vetter, 2000), lecz pojawił się przynajmniej jeden odmienny głos. Bob Metcalfe, wynalazca sieci Ethernet, napisał: „Mobilne komputery bezprzewodowe są jak mobilne toalety bez kanalizacji. Będą powszechnie stosowane w pojazdach, na budowach i na koncertach rockowych. Ja radzę okablować swój dom i trzymać się tego" (Metcalfe, 1995). Historia może umie­ścić tę uwagę w tej samej kategorii co wyjaśnienie prezesa IBM, T. J. Watsona z roku 1945, dlaczego IBM nie wchodzi do branży komputerowej: „Cztery lub pięć komputerów powinno wystarczyć całemu światu do roku 2000".

2.5. Sieci domowe

Sieci domowe widnieją na horyzoncie. Podstawowym założeniem jest to, że w przyszłości większość domów będzie przygotowanych pod sieci komputerowe. Każde urządzenie w domu będzie zdolne do komunikacji ze wszystkimi pozostałymi, a wszystkie te urządzenia będą dostępne przez Internet. Jest to jedna z tych wizjonerskich idei, których nikt się nie domagał (podobnie jak pilot do telewizora lub telefon komórkowy), lecz odkąd się pojawiły, nikt nie może wyobrazić sobie, jak wcześniej bez nich żył.

Wiele urządzeń nadaje się do włączenia w sieć. Do najbardziej oczywistych ich kategorii (z przykładami) należą:

(1) Komputery (biurkowe, notebooki, PDA, wspólnie użytkowane urządzenia peryferyjne). (2) Rozrywka (TV, DVD, wideo, kamery, sprzęt grający, MP3).

(3) Telekomunikacja (telefon, telefon komórkowy, interkom, faks).

(4) Urządzenia AGD (kuchenka mikrofalowa, zamrażarka, zegar, ogrzewanie, klimatyzacja, oświetlenie).

(5) Telemetria (mierniki zużycia wody, prądu itp., alarmy przeciwpożarowe i włamaniowe, termostat, kamera do nadzoru nad dzieckiem).

Domowe sieci komputerowe istnieją już w pewnym ograniczonym stopniu. W wielu domach znajdziemy urządzenia służące do podłączenia kilku komputerów do jednego szybkiego łącza internetowego. Jeszcze nie całkiem pora na łączenie w sieć urządzeń służących do rozrywki, lecz ponieważ coraz więcej i więcej muzyki można pobrać z Internetu, pojawi się zapotrzebowanie na łączenie nim urządzeń stereo i telewizorów. Poza tym użytkownicy będą chcieli dzielić się ze znajomymi z rodziną nagranymi przez siebie filmami wideo, więc połączenie będzie musiało działać w obie strony. Sprzęt telekomunikacyjny jest już połączony ze światem zewnętrznym, lecz wkrótce będzie cyfrowy i będzie łączyć się przez Internet. W przeciętnym domu znajdzie się z tuzin zegarów (np. w sprzęcie AGD), które trzeba dwa razy w roku przestawiać przy przejściach między czasem zimowym a letnim. Gdyby wszystkie zegary były połączone z Internetem, zmiana czasu mogłaby odbywać się automatycznie. Na koniec zdalne monitorowanie domu i jego zawartości pewnością be­zie hitem. Wielu rodziców zapewne zdecyduje się wyłożyć jakąś sumę na nadzorowanie przez PDA swoich śpiących dzieci przy wyjściu na miasto do restauracji, nawet jeśli wynajmują opiekunki. Wprawdzie możemy wyobrazić sobie osobne sieci do każdego zastosowania, lecz zintegrowanie ich w jedną sieć jest chyba lepszym pomysłem.

Sieci domowe mają kilka właściwości zdecydowanie odmiennych od innych typów sieci. Po pierwsze, sieć i jej urządzenia muszą być łatwe w instalacji. Szereg rozmów telefonicznych z pomocą techniczną sprzedawcy zwykle owocował odpowiedziami typu: 1. proszę przeczytać podręcznik. 2. Proszę zrestartować komputer. 3. Proszę usunąć wszystkie urządzenia i programy z wyjątkiem naszych i spróbować jeszcze raz. 4. Proszę pobrać najnowszy sterownik z naszej witryny WWW, a jeśli wszystko to zawiedzie, to 5. Proszę sformatować na nowo dysk twardy i ponownie zainstalować Windows z płyty CD-ROM. Poinformowanie nabywcy lodówki internetowej, że musi pobrać i zainstalować najnowszą wersję lodówkowego systemu operacyjnego nie jest rozwiązaniem, które uszczęśliwiłoby wielu klientów. Użytkownicy komputerów są przyzwyczajeni do zmagań z produktami, które nie chcą działać; klientela kupująca samochody, :telewizory i lodówki jest znacznie mniej tolerancyjna. Oczekuje, że produkt będzie działać na 100% od momentu naciśnięcia guzika.

Po drugie, urządzenia i sieć muszą być łatwe w obsłudze. Kiedyś klimatyzatory miały jedno pokrętło z czterema ustawieniami: wyłączony i trzy poziomy pracy. Teraz podręczniki eksploatacji klimatyzatora miewają 30 stron. Gdy zostaną wyposażone w łącze sieciowe, możemy spodziewać się, że sam rozdział o bezpieczeństwie będzie w podręczniku zajmował 30 stron. To wykracza po­za możliwości pojmowania niemal wszystkich użytkowników.

Po trzecie, dla osiągnięcia sukcesu niezbędna jest niska cena. Klienci nie będą płacić dodatko­wych 200 złotych za termostat internetowy, ponieważ niewielu uważa monitorowanie temperatury w swoim domu z pracy za tak ważne. Jeśli termostat będzie jednak kosztował tylko o 20 zł więcej, to może się sprzeda.

Po czwarte, najważniejsze zastosowania będą prawdopodobnie obejmować multimedia, do czego sieci wymagają odpowiedniej przepustowości. Nie ma zapotrzebowania na internetową tele­wizję, która wyświetla trzęsące się filmy w rozdzielczości 320 x 240 pikseli i z szybkością 10 kla­tek na sekundę. Fast Ethernet, czyli wół roboczy w większości biur, nie wystarcza do multimediów. Wobec tego sieci domowe będą wymagać większej szybkości niż istniejące sieci biurowe i to po niższych cenach, aby mogły trafić na rynek masowy.

Po piąte, musi istnieć możliwość rozpoczęcia od jednego lub dwóch urządzeń i stopniowego rozszerzania zasięgu sieci. To oznacza, że wojny standardów są wykluczone. Mówienie klientom, aby kupowali urządzenia peryferyjne z interfejsami IEEE 1394 (FireWire), aby za kilka lat wyco­fać się i stwierdzić, że przebojem sezonu jest USB 2.0, spowoduje, że klienci zaczną kaprysić. Inter­fejs sieciowy musi pozostać niezmieniony przez wiele lat; ewentualne okablowanie musi nadawać się do użytku przez dziesięciolecia.

Po szóste, bardzo ważne będą bezpieczeństwo i niezawodność. Utrata kilku plików z powodu wirusa w e-mailu to jedno; możliwość, że włamywacz ze swojego PDA wyłączy nasz system antywłamaniowy i splądruje nasz dom, to już zupełnie inna sprawa.

Pozostaje interesujące pytanie, czy sieci domowe będą kablowe czy bezprzewodowe. W wielu domach zainstalowanych jest już sześć sieci: sieć energetyczna, telefon, telewizja kablowa, woda, gaz i sieć kanalizacyjna. Dodanie siódmej podczas stawiania domu nie jest trudne, lecz wyposażanie istniejącego budynku kosztuje. Koszty faworyzują sieci bezprzewodowe, lecz z punktu widzenia bezpieczeństwa sieci kablowe są lepsze. Problem z sieciami bezprzewodowymi polega na tym, że używane w nich fale radiowe całkiem nieźle radzą sobie z ogrodzeniami. Nie każdemu uśmiecha się wizja sąsiadów „wiozących się" na naszym łączu z Internetem i czytających naszą pocztę będącą w drodze do drukarki. W rozdziale 8. pokażemy, jak można zapewnić bezpieczeństwo poprzez szy­frowanie, lecz w kontekście sieci domowych zabezpieczenia muszą być niezawodne i łatwe w użyciu nawet dla niedoświadczonych użytkowników. Łatwiej to powiedzieć niż zrobić, nawet w przypadku użytkowników bardzo doświadczonych.

Krótko mówiąc, z sieciami domowymi wiąże się wiele możliwości i wyzwań. Większość z nich dotyczy wymagań co do łatwości w zarządzaniu, niezawodności i bezpieczeństwa, zwłaszcza w rę­kach użytkowników bez wykształcenia technicznego przy jednoczesnym zapewnieniu wysokiej wydajności za małą cenę.

1.2.6. Sieci złożone

Na świecie istnieje wiele sieci, często zbudowanych w oparciu o różny sprzęt i oprogramowanie. Użytkownicy podłączeni do jednej sieci często chcą komunikować się z użytkownikami innej. Spełnienie tego pragnienia wymaga łączenia różnych sieci, często niekompatybilnych, czasami za pomocą urządzeń zwanych bramami (ang. gateway) zapewniających połączenie i niezbędną translację zarówno sprzętową, jak i programową. Zbiór połączonych ze sobą sieci nosi nazwę sieci złożonej lub internetu. Pojęć tych będziemy używać w ogólnym sensie, w przeciwieństwie do ogólnoświatowej sieci Internet (stanowiącej jeden konkretny internet), której nazwę zawsze będzie-my pisać z wielkiej litery.

Powszechnie spotykaną formą sieci złożonej jest zbiór sieci lokalnych połączonych siecią rozległą. W istocie, jeśli zastąpimy podpis „podsieć" na rysunku 1.7 podpisem „WAN", nie będziemy musieli zmieniać na nim niczego innego. Jedyną prawdziwą techniczną różnicą pomiędzy podsiecią i WAN w tym przypadku jest to, czy obecne są hosty. Jeśli system w obrębie szarego obszaru zawiera tylko routery, to jest podsiecią; jeśli zawiera zarówno routery jak i hosty, to jest siecią VAN. Prawdziwe różnice występują w zastosowaniach i tym, kto jest właścicielem.

Podsieci, sieci i sieci złożone są często mylone. Podsieci mają najwięcej sensu w kontekście sieci rozległych, gdzie oznaczają zbiór routerów i łączy komunikacyjnych będących własnością operatora sieci. Możemy je porównać z systemem telefonicznym, który składa się z central telefonicznych połączonych ze sobą wzajemnie szybkimi łączami, oraz z mieszkaniami i firmami za pomocą wolnych łączy. Te łącza i urządzenia, stanowiące własność i utrzymywane przez firmę telefoniczną, worzą podsieć systemu telefonicznego. Same telefony (w tej analogii odpowiedniki hostów) nie należą do podsieci. Podsieć w połączeniu ze swoimi hostami tworzy sieć. W przypadku LAN sieć ;składa się z okablowania i hostów. Podsieci tak naprawdę tu nie ma.

Sieć złożona powstaje, gdy łączone są ze sobą dwie różne sieci. Z naszego punktu widzenia poła­żenie LAN z WAN lub połączenie ze sobą dwóch sieci LAN tworzy sieć złożoną, lecz w branży brakuje zgody co do terminologii w tym zakresie. Z praktycznego punktu widzenia możemy powiedzieć, że jeśli dwie różne organizacje sfinansowały osobne części sieci, a każda organizacja utrzymuje swoją część, mamy do czynienia z siecią złożoną, a nie z siecią pojedynczą. Oprócz tego, jeśli technologia wykorzystana do zbudowania sieci jest różna w różnych jej obszarach (np. rozgłoszeniowa i dwupunktowa), to raczej mamy do czynienia z dwoma sieciami.

1.3. Oprogramowanie sieciowe

Pierwsze sieci komputerowe były projektowane przede wszystkim pod kątem sprzętu, a oprogra­mowanie było dodawane później, jakby od niechcenia. Ta strategia już się nie sprawdza. Oprogra­mowanie sieciowe ma dziś bardzo ścisłą strukturę. W poniższych punktach przyjrzymy się bardziej szczegółowo technikom organizacji oprogramowania. Opisane tu metody stanowią podstawy i będą się powtarzać w dalszych rozdziałach.

1.3.1. Hierarchie protokołów

Aby zmniejszyć złożoność projektu, większość sieci jest zorganizowanych w postaci stosu warstw, inaczej poziomów, z których każdy jest zbudowany na szczycie poprzedniego, niższego. Liczba warstw, nazwa każdej z warstw, jej zawartość i funkcja w różnych sieciach mogą być odmienne. Za­daniem każdej warstwy jest oferowanie określonych usług wyższym warstwom oraz izolowanie ich od szczegółów faktycznej implementacji świadczonych usług. W pewnym sensie każda warstwa jest czymś w rodzaju maszyny wirtualnej oferującej określone usługi warstwie położonej powyżej.

Taka idea nie jest niczym nowym i stosuje się ją w całej technice komputerowej, w której no­si różne nazwy: ukrywania informacji, abstrakcyjnych typów danych, kapsułkowania danych lub programowania obiektowego. Podstawową zasadą jest to, że konkretny element oprogramowania (lub sprzętu) udostępnia usługi swoim użytkownikom, lecz ukrywa przed nimi szczegóły swojego wewnętrznego stanu i algorytmów.

Warstwa n w jednej maszynie prowadzi konwersację z warstwą n innej maszyny. Reguły i kon­wencje używane w tej konwersacji są zbiorczo znane pod nazwą protokołu warstwy n. Protokół jest zasadniczo umową pomiędzy stronami, jak ma się odbywać komunikacja między nimi. Analogią może tu być sytuacja, gdy kobieta przedstawiona mężczyźnie może zdecydować się, by wyciągnąć rękę. Mężczyzna z kolei może wybrać, czy podaną rękę uścisnąć czy pocałować, na przykład w za­leżności od tego, czy kobieta jest amerykańskim prawnikiem na spotkaniu roboczym, czy też euro­pejską księżniczką na balu. Naruszenie protokołu utrudnia komunikację, a nawet może ją całkowicie uniemożliwić.

Rysunek 1.11 przedstawia sieć mającą pięć warstw. Jednostki tworzące odpowiadające sobie warstwy w dwóch różnych komputerach noszą nazwę partnerów lub warstw równorzędnych (ang. peer). Partnerami mogą być procesy, urządzenia sprzętowe lub nawet ludzie. Inaczej mówiąc, partnerzy komunikują się przez użycie protokołu.

W rzeczywistości żadne dane nie są bezpośrednio przenoszone z warstwy n w jednym kompute­rze do warstwy n w drugim. Zamiast tego każda warstwa przekazuje dane i informacje sterujące do warstwy znajdującej się bezpośrednio pod nią, dopóki nie zostanie osiągnięta warstwa najniższa. Pod warstwą 1. znajduje się nośnik fizyczny, w którym zachodzi faktyczna komunikacja. Na rysunku 1.11 komunikacja wirtualna jest przedstawiona w postaci linii przerywanych, a fizyczna w postaci linii ciągłych.

Pomiędzy każdą parą sąsiednich warstw znajduje się interfejs. Interfejs definiuje, które ele­mentarne operacje i usługi warstwa niższa udostępnia warstwie wyższej. Gdy projektanci sieci zde­cydują już, ile zawrzeć w niej warstw i co każda z nich będzie robić, jedną z najważniejszych kwestii jest dokładne zdefiniowanie interfejsów pomiędzy każdą parą warstw. To z kolei wymaga, aby każda warstwa wykonywała określony zbiór jasno określonych funkcji. Oprócz minimalizacji obję­tości informacji, które muszą być przekazywane pomiędzy warstwami, klarowne interfejsy uła­twiają zastąpienie implementacji danej warstwy przez kompletnie inną implementację (na przykład linie telefoniczne są zastępowane łączami satelitarnymi), ponieważ od nowej implementacji wy­maga się tylko, by oferowała dokładnie taki sam zbiór usług swojemu sąsiadowi z góry jak poprzed­nia implementacja. W rzeczywistości różne hosty powszechnie stosują różne implementacje.

Zbiór warstw i protokołów nosi nazwę architektury sieci. Specyfikacja architektury musi zawierać wystarczająco dużo informacji, aby osoba wdrażająca ją mogła napisać program lub skon­struować sprzęt dla każdej warstwy tak, by działały zgodnie z protokołem. Ani szczegóły wdrożenia, i specyfikacja interfejsów nie należą do architektury,

0x01 graphic

ponieważ są ukryte we wnętrzu urządzeń i niewidoczne z zewnątrz. Interfejsy we wszystkich komputerach w sieci nie muszą być nawet takie same, pod warunkiem, że każde urządzenie jest w stanie poprawnie używać wszystkich protoko­ły. Lista protokołów używanych przez określony system, po jednym protokole na warstwę, nosi nazwę stosu protokołów. Architektura sieci, stosy protokołów i protokoły same w sobie są podstawowymi tematami.

Ideę komunikacji pomiędzy warstwami możemy wyjaśnić z pomocą analogii. Wyobraźmy sobie dwóch filozofów (procesy równorzędne w warstwie 3.), z których jeden mówi językiem urdu i po angielsku, a drugi po chińsku i po francusku. Ponieważ obaj nie mówią żadnym wspólnym językiem, każdy z nich zatrudnia tłumacza (procesy równorzędne w warstwie 2.), a każdy tłumacz z kolei kotaktuje się z sekretarką (procesy równorzędne w warstwie 1.). Pierwszy filozof chce przekazać drugiemu swoją sympatię do oryctolagus cuniculus (czyli królika europejskiego). W tym celu przekazuje wiadomość (po angielsku) poprzez interfejs między warstwami 2. i 3. do swojego tłumacza, mówiąc „I like rabbits", jak na rysunku 1.12. Obaj tłumacze zgodzili się używać neutralnego języka, który obaj znają (holenderski), więc wiadomość zostaje przekształcona na „Ik vind konijnen uk". Wybór języka jest protokołem warstwy 2. i stanowi odpowiedzialność procesów równorzędnych tej warstwy.

0x01 graphic

RYSUNEK 1.12. Architektura filozof-tłumacz-sekretarka

Następnie tłumacz przekazuje wiadomość sekretarce w celu przesłania jej na przykład faksem ^protokół warstwy 1.). Gdy wiadomość dotrze na miejsce przeznaczenia, zostaje przetłumaczona na francuski i przekazana poprzez interfejs między warstwami 2. i 3. do filozofa 2. Proszę zwrócić uwagę, że każdy protokół jest całkowicie niezależny od pozostałych, o ile interfejsy nie ulegną zmia­nie. Tłumacze mogą swobodnie przejść z języka holenderskiego na, powiedzmy, fiński, pod wa­runkiem, że obaj się na to zgodzą, i że żaden nie zmieni swojego interfejsu z warstwą 1. lub 3. Ana­logicznie, sekretarki mogą zamiast faksu użyć poczty elektronicznej lub telefonu nie informując pozostałych warstw. Ta informacja nie jest przekazywana do wyższej warstwy.

Rozważmy teraz bardziej techniczny przykład: jak zapewnić komunikację pomiędzy szczy­towymi warstwami pięciowarstwowej sieci z rysunku 1.13. Wiadomość W jest generowana przez proces aplikacji uruchomiony w warstwie 5. i przekazywana do warstwy 4. w celu transmisji. War­stwa 4. dodaje nagłówek z przodu wiadomości w celu identyfikacji i przekazuje wynik do warstwy 3. Nagłówek zawiera informacje sterujące, takie jak numer sekwencyjny, co pozwala warstwie 4. w urzą­dzeniu docelowym doręczyć wiadomość we właściwym porządku, jeśli warstwy niższe nie zachowają kolejności. W niektórych warstwach nagłówki mogą zawierać też rozmiar, czas i inne pola sterujące.

0x01 graphic

RYSUNEK 1.13. Przykładowy przepływ informacji obsługujący komunikację wirtualną w warstwie 5.

W wielu sieciach nie istnieje ograniczenie rozmiaru wiadomości nadawanej przez protokół war­stwy 4., lecz niemal zawsze istnieje limit nakładany przez protokół warstwy 3. Wobec tego war­stwa 3. musi podzielić otrzymywane wiadomości na mniejsze jednostki (pakiety), dodając nagłówek warstwy 3. na początek każdego pakietu. W tym przykładzie wiadomość W została podzielona na dwie części: Wx i W2.

Warstwa 3. decyduje, której linii wychodzącej ma użyć, i przekazuje pakiety do warstwy 2. War­stwa 2. dodaje do każdej wychodzącej porcji nie tylko nagłówek, lecz i stopkę, i przekazuje wyni­kową jednostkę do warstwy 1. w celu fizycznej transmisji. W urządzeniu odbierającym wiadomość przechodzi w górę z warstwy do warstwy, i w miarę postępowania są z niej usuwane nagłówki. Żaden nagłówek warstwy poniżej n nie jest przekazywany do warstwy n.

Ważną rzeczą na rysunku 1.13, którą musimy zrozumieć, są relacje pomiędzy komunikacją wirtu­alną i rzeczywistą oraz różnica pomiędzy protokołami a interfejsami. Na przykład procesy równo­rzędne w warstwie 4. „widzą" swoją komunikację jako horyzontalną z użyciem protokołu warstwy 4.

W każdym z nich z pewnością istnieją procedury nazwane, mniej więcej, WyślijNaDrugąStronę i PobierzZDrugiejStrony, mimo że procedury te tak naprawdę komunikują się z niższą warstwą poprzez interfejs między warstwami 3. i 4., a nie z drugą stroną.

Abstrahowanie procesów równorzędnych jest decydujące w całym projektowaniu sieci. Z jego pomocą możemy podzielić niemożliwy do opanowania proces projektowania kompletnej sieci na kilka mniejszych, realistycznych problemów projektowych — projekty poszczególnych warstw.

Wprawdzie podrozdział 1.3 został zatytułowany „Oprogramowanie sieciowe", lecz warto zwrócić uwagę, że niższe warstwy hierarchii protokołów są często implementowane sprzętowo lub w oprogramowaniu sprzętowym (firmware). Mimo to mamy tu do czynienia ze złożonymi algo­rytmami protokołów, nawet jeśli są wbudowane w sprzęt częściowo lub całkowicie.

1.3.2. Zagadnienia projektowania warstw

Kilka podstawowych problemów projektowych występujących w sieciach komputerowych jest obecnych w kilku warstwach. Poniżej omówimy pokrótce najważniejsze z nich.

W każdej warstwie potrzebny jest mechanizm identyfikujący nadawcę i odbiorcę. Ponieważ w sieci zazwyczaj znajduje się wiele komputerów, z których niektóre obsługują więcej niż jeden proces, nie­zbędna jest metoda określenia przez proces w jednym komputerze, z którym komputerem lub proce­sem chce się komunikować. Z powodu istnienia różnych miejsc docelowych potrzebna jest jakaś forma adresowania pozwalająca wskazać konkretne miejsce.

Kolejny zbiór decyzji projektowych wiąże się z regułami transferu danych. W niektórych syste­mach dane wędrują tylko w jednym kierunku, w innych mogą podróżować w obie strony. Protokół musi też ustalić, z iloma kanałami logicznymi wiąże się połączenie i jakie są ich priorytety. Wiele sieci udostępnia przynajmniej dwa kanały logiczne na połączenie: jeden na dane zwykłe, a drugi na dane pilne.

Kontrola błędów jest ważnym zagadnieniem, ponieważ fizyczne obwody transmisyjne nie są doskonałe. Istnieje wiele kodów wykrywania błędów i z korekty błędów, lecz obie strony połączenia muszą uzgodnić, który z tych kodów ma być użyty. Oprócz tego odbiorca musi mieć jakiś sposób informowania nadawcy, które wiadomości zostały odebrane poprawnie, a które nie.

Nie wszystkie kanały komunikacyjne zachowują kolejność przesyłanych nimi wiadomości. Aby uporać się z ewentualną utratą kolejności, protokół musi w wyraźny sposób umożliwić odbiorcy ponowne poprawne złożenie kawałków. Oczywistym rozwiązaniem jest numerowanie porcji da­nych, lecz takie rozwiązanie nadal nie odpowiada na pytanie, co należy zrobić z porcjami przy­chodzącymi w niewłaściwej kolejności.

Na każdym poziomie powtarza się problem, jak powstrzymać nadawcę przed zalaniem danymi powolnego odbiorcy. Zostały zaproponowane różne rozwiązania, które omówimy później. Część z nich wiąże się ze zwracaniem od odbiorcy do, pośrednio lub bezpośrednio, nadawcy jakichś informacji kontrolnych o bieżącej sytuacji odbiorcy. Inne metody ograniczają nadawcę do uzgodnionej szyb­kości transmisji. To zagadnienie nosi nazwę sterowania przepływem (ang.flow control).

Kolejnym problemem, który musi zostać rozwiązany na kilku poziomach, jest niezdolność wszystkich procesów do przyjmowania dowolnie długich wiadomości. Ta właściwość prowadzi do tworzenia mechanizmów podziału, transmisji i ponownego składania wiadomości. Z tym problemem wiąże się też kwestia, co należy zrobić, gdy procesy będą chciały nadawać dane w porcjach tak małych, że nadawanie ich osobno będzie niewydajne. Rozwiązaniem jest tu zebranie kilku małych komunikatów przeznaczonych dla jednego odbiorcy w jedną dużą wiadomość, a następnie podziele­nie jej po drugiej stronie.

Gdy nawiązywanie odrębnego połączenia dla każdej pary komunikujących się procesów jest niewygodne lub kosztowne, warstwa położona poniżej może wykorzystać jedno połączenie dla wielu niezwiązanych ze sobą konwersacji. Dopóki takie multipleksowanie i demultipleksowanie odbywa się w sposób przezroczysty, może z niego skorzystać każda warstwa. Multipleksowanie jest potrzebne na przykład w warstwie fizycznej, gdy cały ruch dla wszystkich połączeń musi odby­wać się najwyżej przez kilka fizycznych obwodów.

Gdy pomiędzy nadawcą i odbiorcą istnieje kilka różnych ścieżek, musi zostać wybrana trasa. Czasem podjęcie tej decyzji trzeba podzielić na dwie lub więcej warstw. Na przykład, aby wysłać dane z Londynu do Rzymu, może być konieczne podjęcie decyzji na wysokim poziomie, czy trasa ma przebiegać przez Francję lub Niemcy z uwagi na obowiązujące w nich prawa ochrony danych osobi­stych. Następnie może być konieczne podjęcie decyzji niskopoziomowej o wyborze jednej z dostęp­nych tras na podstawie aktualnego obciążenia każdej z nich. To zagadnienie nosi nazwę trasowania lub wyboru trasy (ang. routing).

1.3.3. Usługi połączeniowe i bezpołączeniowe

Warstwy mogą oferować dwa typy usług warstwie położonej powyżej: połączeniowe i bezpołącze­niowe. W tym punkcie przyjrzymy się obu typom i różnicom pomiędzy nimi.

Usługi połączeniowe (ang. connection-oriented) wzorują się na systemie telefonicznym. Aby porozmawiać z kimś, podnosimy słuchawkę, wybieramy numer, rozmawiamy i odkładamy słuchawkę. Analogicznie, aby można było skorzystać z połączeniowej usługi sieciowej, usługa najpierw nawią­zuje połączenie, używa go, a następnie przerywa połączenie. Ważną właściwością połączenia jest to, że działa jak rura — nadawca wprowadza obiekty (bity) z jednego końca, a odbiorca wyjmuje je na drugim końcu. W większości przypadków kolejność zostaje zachowana, więc bity przycho­dzą w porządku wysyłania.

W niektórych rozwiązaniach po nawiązaniu połączenia nadawca odbiorca i podsieć przeprowa­dzają negocjację parametrów, które mają zostać użyte, na przykład maksymalnej wielkości wiado­mości, wymaganej jakości usługi i innych kwestii. Zwykle jedna strona składa propozycję, a druga może ją przyjąć, odrzucić lub wysunąć kontrpropozycję.

W przeciwieństwie do połączeniowych usługi bezpołączeniowe (ang. connectionless) wzorują się na systemie pocztowym. Każda wiadomość (list) niesie w sobie pełny adres docelowy i każda jest kierowana przez system niezależnie od pozostałych. Gdy do jednego miejsca kierowane są dwie wiadomości, pierwsza wysłana zwykle również dociera pierwsza. Możliwe jest jednak opóźnienie pierwszej wysłanej, przez co druga wysłana dotrze jako pierwsza.

Każdą usługę cechuje jakość usługi (ang. ąuality of sernice). Niektóre usługi są gwarantowane inaczej mówiąc, nigdy nie tracą danych. Usługi gwarantowane (inaczej niezawodne) zwykle implementuje się przez potwierdzanie przez odbiorcę otrzymania każdej wiadomości, dzięki czemu nadawca jest pewny jej dotarcia. Proces potwierdzania wprowadza dodatkowe obciążenie system i opóźnienia, które są czasem warte swojej ceny, lecz czasem bywają niepożądane.

Typową sytuację, w której stosowna jest niezawodna usługa połączeniowa, stanowi przesył plików. Właściciel pliku chce mieć pewność, że wszystkie bity dotrą bezbłędnie i w tej samej kolejności, w której zostały wysłane. Naprawdę niewielu klientów życzyłoby sobie usługi przesyłania plików, która od czasu do czasu miesza kilka bitów, nawet gdyby byłaby znacznie szybsza.

Niezawodne usługi połączeniowe mają dwie odmiany: sekwencje wiadomości i strumień bajtów. W pierwszej odmianie zachowywane są granice wiadomości. Gdy wysiane zostają dwie 1024-bajtowe wiadomości, obie docierają do celu jako odrębne 1024-bajtowe wiadomości, a nigdy jako jedna wiadomość 2048-bajtowa. W drugiej odmianie połączenie jest strumieniem bajtów bez rozgraniczania wiadomości. Gdy do odbiorcy dociera 2048 bajtów, nie można się zorientować, c; zostały wysłane jako dwie 1024-bajtowe wiadomości czy jedna 2048-bajtowa. Gdyby strony książki były wysyłane do składu jako osobne wiadomości, warto byłoby zachować granice wiadomości. Z drugiej strony, gdy użytkownik loguje się do zdalnego serwera, wystarczy strumień bajtów z komputera użytkownika do serwera. Granice wiadomości nie są tu ważne.

Jak wspomniano powyżej, w niektórych zastosowaniach opóźnienia transportowe wprowadzone przez potwierdzenia są nie do przyjęcia. Jednym z takich zastosowań jest przesył głosu w postaci cyfrowej. Użytkownicy telefonów wolą od czasu do czasu usłyszeć trochę zakłóceń na linii niż mieć do czynienia z opóźnieniami powodowanymi przez potwierdzenia. Analogicznie, w wideokonferencji kilka błędnych pikseli nie sprawia problemu, lecz obraz skaczący z powodu zatrzy­mania przepływu danych w celu korekty błędów jest irytujący.

Nie wszystkie zastosowania wymagają połączeń. Na przykład, w miarę wzrostu popularno­ści poczty elektronicznej coraz popularniejszy staje się też spam. Nadawca spamu prawdopodobnie nie będzie kłopotać się nawiązywaniem i zrywaniem połączeń, aby wysłać jeden list. Dla niego 100% pewności doręczenia listu też nie jest niezbędne, zwłaszcza jeśli więcej kosztuje. Wystarczy mu sposób wysłania pojedynczej wiadomości o dużym prawdopodobieństwie doręczenia, lecz bez gwa­rancji. Zawodne (tzn. niepotwierdzane) usługi bezpołączeniowe często nazywane są usługami datagramów; przez analogię z usługą telegramów, która również nie zwraca do nadawcy po­twierdzenia.

W innych sytuacjach pożądana jest wygoda braku konieczności nawiązywania połączenia, aby wysłać jedną krótką wiadomość, lecz niezawodność jest bardzo ważna. Do takich zastosowań można użyć usługi potwierdzonych datagramów. Przypomina ona wysyłanie listu poleconego za potwierdzeniem odbioru. Gdy potwierdzenie wróci, nadawca będzie miał całkowitą pewność, że list został doręczony do zamierzonego odbiorcy i nie zgubił się po drodze.

Jeszcze inną usługą jest usługa żądania i odpowiedzi. W niej nadawca wysyła pojedynczy datagram zawierający żądanie i otrzymuje odpowiedź. Na przykład do tej kategorii zalicza się skie­rowane do lokalnej biblioteki zapytanie, gdzie mówi się językiem ujgurskim. Technika żądania i od­powiedzi jest powszechnie stosowana do implementacji łączności w modelu klient-serwer: klient wysyła żądanie, a serwer na nie odpowiada. Rysunek 1.14 ilustruje zestawienie omówionych powy­żej usług.

Idea korzystania z zawodnej komunikacji może na pierwszy rzut oka wyglądać dziwnie. W końcu kto wolałyby łączność zawodną zamiast niezawodnej? Przede wszystkim komunikacja niezawodna (w naszym znaczeniu tego słowa, czyli potwierdzana) może być niedostępna. Na przykład Ether­net nie zapewnia niezawodnej komunikacji. Pakiety mogą zostać po drodze uszkodzone. Z tym problemem muszą poradzić sobie protokoły wyższych warstw. Po drugie, opóźnienia nieuniknione przy świadczeniu gwarantowanej usługi mogą być nie do przyjęcia, zwłaszcza w zastosowaniach czasu rzeczywistego, np. w multimediach. Z tych powodów współistnieją zarówno niezawodne, jak i zawodne metody komunikacji.

0x01 graphic

1.3.4. Funkcje podstawowe usług

Usługa jest formalnie określana przez zbiór funkcji podstawowych (operacji) dostępnych dla proce­su użytkownika, który korzysta z usługi. Funkcje podstawowe informują usługę, aby wykonała jakąś czynność lub zgłosiła raport o czynności podjętej przez swojego równorzędnego partnera. Jeśli stos protokołów jest zlokalizowany w systemie operacyjnym, jak często bywa, funkcje podstawo­we są zwykle funkcjami systemowymi. Te funkcje powodują przejście do trybu jądra, które z kolei przekazuje kontrolę nad komputerem systemowi operacyjnemu w celu wysłania niezbędnych pakietów.

Zbiór dostępnych funkcji podstawowych zależy od natury udostępnianej usługi. Funkcje pod­stawowe dla usługi połączeniowej różnią się od tych dla usługi bezpołączeniowej. Przykład mini­malnego zbioru funkcji podstawowych usługi, które mogą zapewnić niezawodny strumień bajtów w środowisku klient-serwer, przedstawia tabela 1.3.

TABELA 1.3.

Pięć funkcji podstawowych usługi implementujących prostą usługę połączeniową

Funkcja podstawowa

Znaczenie

LI STEN (Słuchaj) CONNECT (Połącz) RECEIVE (Odbierz) SEND (Wyślij) DISCONNECT (Rozłącz)

Czekaj na przychodzące połączenie.

Nawiąż połączenie z oczekującym procesem równorzędnym.

Czekaj na przychodzącą wiadomość.

Wyślij wiadomość do procesu równorzędnego

Zakończ połączenie.

Te funkcje podstawowe mogą być użyte następująco:

Najpierw serwer wykonuje LISTEN, aby wskazać, że jest przygotowany do przyjmowania połączeń przychodzących. Często spotyka się implementację LISTEN w postaci blokującej funkcji systemowej. Po wykonaniu funkcji podstawowej proces serwera jest zablokowany, dopóki nie pojawi się żądanie połączenia.

Następnie proces klienta wykonuje CONNECT, aby nawiązać połączenie z serwerem. W funkcji CONNECT musi być określone, z kim ma się połączyć, może więc mieć parametr podający adres ser­wera. Następne system operacyjny w większości przypadków wysyła do równorzędnego procesu pakiet z żądaniem połączenia — patrz operacja (1) na rysunku 1.15. Proces klienta zostaje zawie­szony aż do otrzymania odpowiedzi. Gdy pakiet dotrze do serwera, zostaje w nim przetworzony przez system operacyjny. Gdy system rozpozna, że pakiet żąda połączenia, wówczas sprawdza, czy istnieje odbiornik. Jeśli tak, odblokowuje odbiornik i odsyła z powrotem potwierdzenie (2). Nadej­ście potwierdzenia zwalnia klienta. Na tym etapie klient i serwer funkcjonują i zostało między nim nawiązane połączenie. Należy zwrócić uwagę, że potwierdzenie (2) jest generowane przez kod samego protokołu, a nie w odpowiedzi na funkcję podstawową na poziomie użytkownika. Jeśli nadejdzie żądanie połączenia, a odbiornik nie będzie dostępny, wynik będzie niezdefiniowany. W niektórych systemach pakiet może być przez krótki czas kolejkowany w oczekiwaniu na LISTEN.

0x01 graphic

RYSUNEK 1.15. Pakiety wysyłane w prostej interakcji klient-serwer w sieci połączeniowej

Oczywistą analogią dla tego protokołu może być sytuacja, gdy klient dzwoni do kierownika działu obsługi klienta firmy. Kierownik działu obsługi zaczyna od tego, że przebywa w pobliżu aparatu na wypadek telefonu. Następnie klient inicjuje rozmowę. Gdy kierownik podniesie słu­chawkę, połączenie zostanie nawiązane.

Dla serwera następnym krokiem jest wykonanie RECEIVE w celu przygotowania się na przyję­cie pierwszego żądania. Serwer standardowo dokonuje tego natychmiast po zwolnieniu z LISTEN, zanim potwierdzenie zdąży dotrzeć z powrotem do klienta. Wywołanie RECEIVE blokuje serwer.

Następnie klient wykonuje SEND, aby wysłać swoje żądanie (3), a następnie RECEIVE, aby ode­brać odpowiedź.

Nadejście pakietu żądania do serwera odblokowuje proces serwera, dzięki czemu może on obsłu­żyć żądanie. Po zakończeniu swojej pracy proces używa SEND do zwrócenia odpowiedzi do klienta (4). Nadejście tego pakietu odblokowuje klienta, który może teraz odczytać odpowiedź. Jeśli klient ma dodatkowe żądania, może je teraz wysłać. Jeśli nie, może użyć DISCONNECT do przerwania połącze­nia. Zwykle inicjująca funkcja DISCONNECT jest wywołaniem blokującym zawieszającym klienta w wy­syłającym do serwera pakiet mówiący, że połączenie nie jest już potrzebne (5). Gdy serwer otrzyma ten pakiet, również wyda własne polecenie DISCONNECT, potwierdzając żądanie klienta i zwalniając połączenie. Gdy pakiet serwera (6) wraca do komputera klienta, proces klienta zostaje zwolniony i po­łączenie zostaje przerwane. Tak w skrócie przebiega komunikacja typu połączeniowego.

Oczywiście życie nie jest tak proste. Wiele rzeczy może tu pójść nie tak. Zależności czasowe mogą być niepoprawne (tzn. CONNECT przed LISTEN), pakiety mogą zostać utracone i tak dalej. W dal­szej części książki przyjrzymy się dokładniej tym problemom, lecz na razie rysunek 1.15 pokazuje w skrócie, jak komunikacja klient-serwer może odbywać się w sieci zorientowanej na połączenia.

Ponieważ protokół wymaga tu sześciu pakietów, możemy zastanawiać się, dlaczego nie zo­stał użyty protokół bezpołączeniowy. Tak mogłoby być w warunkach idealnych, ponieważ wystar­czyłyby dwa pakiety: jeden na żądanie i jeden na odpowiedź. Jednakże w obecności dużych wia­domości przesyłanych w dowolną stronę (np. megabajtowego pliku), błędów transmisji i traconych pakietów sytuacja ulega zmianie. Gdyby odpowiedź składała się z setek pakietów, z których część mogłaby zostać utracona podczas transmisji, skąd klient wiedziałby, czy czegoś nie brakuje? Skąd byłoby wiadomo, czy ostatni odebrany pakiet był rzeczywiście ostatnim wysłanym pakietem? Po­wiedzmy, że klient zażyczy sobie drugiego pliku. Po czym odróżni pierwszy pakiet drugiego pliku od utraconego pakietu nr 1 z pierwszego pliku, który nieoczekiwanie znalazł drogę do klienta? Krót­ko mówiąc, w warunkach rzeczywistych prosty protokół żądanie-odpowiedź w zawodnych sie­ciach często nie wystarcza. W rozdziale 3. przyjrzymy się szczegółowo różnym protokołom, które rozwiązują te i inne problemy. Na razie pamiętajmy, że niezawodny, uporządkowany strumień baj­tów pomiędzy procesami bywa czasem bardzo przydatny.

1.3.5. Związki usług z protokołami

Usługi i protokoły są odrębnymi pojęciami, aczkolwiek często bywają ze sobą mylone. Różnica jest jednak na tyle ważna, że podkreślimy ją tu ponownie. Usługa jest zbiorem funkcji podstawowych (operacji), które warstwa udostępnia warstwie położonej nad sobą. Usługa definiuje, jakie operacje warstwa może wykonywać dla swoich użytkowników, lecz nic nie mówi o tym, jak te operacje są implementowane. Usługa wiąże się z interfejsem między dwiema warstwami, z których dolna świadczy usługę, a górna jest użytkownikiem tej usługi.

W przeciwieństwie do usługi protokół jest zbiorem reguł ustalających format i znaczenie pa­kietów i wiadomości wymienianych pomiędzy równorzędnymi jednostkami w obrębie warstwy. Jednostki te używają protokołów do implementacji definicji swoich usług. Mogą dowolnie zmieniać protokoły pod warunkiem, że nie zmienią usługi widocznej dla swoich użytkowników. W ten sposób usługa i protokół są całkowicie rozłączne.

Inaczej mówiąc, usługi wiążą się z interfejsami między warstwami, jak na rysunku 1.16.

W prze­ciwieństwie do nich protokoły wiążą się z pakietami przesyłanymi między równorzędnymi jed­nostkami w różnych komputerach. Nie wolno nam mylić tych dwóch pojęć.

0x01 graphic

Warto tu przytoczyć analogię do języków programowania. Usługa przypomina abstrakcyjny typ danych lub obiekt w języku obiektowym — definiuje operacje, które mogą być wykonane na obiekcie, lecz nie określa, jak te operacje są implementowane. Protokół jest związany z imple­mentacją usługi i jako taki jest niewidoczny dla użytkownika usługi.

Wiele starszych protokołów nie rozróżniało usługi od protokołu. W wyniku tego w typowej warstwie mogła istnieć funkcja podstawowa SEND PACKET (wyślij pakiet), w której użytkownik do­starczał wskaźnik na kompletny pakiet. Takie rozwiązanie oznaczało, że wszelkie zmiany w proto­kole były natychmiast widoczne dla użytkowników. Większość projektantów sieci uważa obecnie tego typu rozwiązania za poważne błędy projektowe.

1.4. Modele odniesienia

Omówiliśmy już abstrakcyjne sieci warstwowe, pora więc przyjrzeć się kilku przykładom. W na­stępnych punktach omówimy dwie ważne architektury sieci: model odniesienia OSI i model odnie­sienia TCP/IP. Wprawdzie protokoły związane z modelem OSI sąjuż bardzo rzadko używane, lecz model sam w sobie jest dość ogólny i nadal przydatny, a funkcjonalność opisana w każdej warstwie ciągle ma duże znaczenie. Model TCP/IP jest jego dokładnym przeciwieństwem: sam model nie jest zbyt przydamy, lecz protokoły są powszechnie stosowane. Z tego powodu obu modelom przyj­rzymy się dokładnie. Poza tym czasem więcej można nauczyć się na błędach niż na powodzeniach.

1.4.1. Model odniesienia OSI

Model OSI (z pominięciem nośnika fizycznego) został przedstawiony na rysunku 1.17. Model ten opiera się na propozycji opracowanej przez organizację ISO (International Standards Organization), która to propozycja była pierwszym krokiem w stronę międzynarodowej standaryzacji proto­kołów używanych w różnych warstwach. Model otrzyma! nazwę ISO OSI (Open Systems Interconnection) Reference Model (model odniesienia łączenia systemów otwartych), ponieważ dotyczy łączenia systemów otwartych, czyli systemów otwartych na komunikację z innymi systemami. Będziemy ten model nazywać w skrócie OSI.

0x01 graphic

RYSUNEK 1.17. Model odniesienia OSI

Model OSI składa się z siedmiu warstw. Założenia, które doprowadziły do wyboru siedmiowarstwowej struktury, były następujące:

(1) Należy utworzyć warstwę tam, gdzie potrzebna jest osobna abstrakcja.

(2) Każda warstwa powinna pełnić dobrze zdefiniowaną funkcję.

(3) Funkcja każdej warstwy powinna zostać wybrana z myślą o definiowaniu międzynarodowo znormalizowanych protokołów.

(4) Granice warstw powinny być tak dobrane, by minimalizować przepływ informacji przez interfejsy.

(5) Liczba warstw powinna być wystarczająco duża, aby nie było trzeba z konieczności gromadzić odrębnych funkcji w jednej warstwie, i na tyle mała. aby architektura nie stała się nieporęczna i niewydolna.

Poniżej omówimy kolejno każdą warstwę modelu, zaczynając od najniższej. Proszę zwrócić uwagę, że model OSI sam w sobie nie jest architekturą sieci, ponieważ nie definiuje konkretnych usług i protokołów, które mają być użyte w każdej warstwie. Mówi jedynie, co jest zadaniem każdej warstwy. Jednakże organizacja ISO opracowała też standardy dla wszystkich warstw, choć nie należą one do samego modelu odniesienia. Każdy został opublikowany jako odrębny standard międzynarodowy.

Warstwa fizyczna

Warstwa fizyczna zajmuje się transmisją „surowych" bitów kanałem komunikacyjnym. Problemem projektowym jest tu zapewnienie, że gdy jedna strona wyśle bit o wartości 1, druga strona odbierze go jako jedynkę, a nie zero. Typowe kwestie to np. wybór napięć reprezentujących 0 i 1, określenie, ile nanosekund ma trwać pojedynczy bit, czy transmisja może odbywać się jednocześnie w obu kierunkach, jak nawiązywane jest połączenie i jak jest przerywane po zakończeniu transmisji przez obie strony, ile styków ma mieć złącze sieciowe i do czego służy każdy styk. Zagadnienia projektowe w tej warstwie wiążą się głównie z interfejsami mechanicznymi, elektrycznymi i zależnościami czasowymi oraz z fizycznym nośnikiem transmisyjnym, który znajduje się pod warstwą fizyczną.

Warstwa łącza danych

Głównym zadaniem warstwy łącza danych jest przekształcenie surowego łącza transmisyjnego w linię, która dla warstwy sieciowej sprawia wrażenie transmisji wolnej od błędów. To zadanie zostaje osią­gnięte tu przez podział danych wejściowych nadawcy na ramki danych (zwykle o rozmiarach kil­kuset lub kilku tysięcy bajtów) i sekwencyjną transmisję ramek. Jeśli usługa jest niezawodna, od­biorca potwierdza poprawny odbiór każdej ramki przez odesłanie ramki potwierdzającej.

Kolejnym problemem, który pojawia się w warstwie łącza danych (i w większości wyższych warstw) jest pytanie, jak powstrzymać szybki nadajnik przed zalaniem danymi wolnego odbiornika. Często potrzebny jest mechanizm sterowania ruchem, który informuje nadajnik, jak wiele miejsca w buforze ma w danej chwili odbiornik. Często to sterowanie przepływem jest zintegrowane z ob­sługą błędów.

W sieciach rozgłoszeniowych występuje dodatkowy problem w warstwie łącza danych. Chodzi o to, jak sterować dostępem do wspólnego kanału. Z tym problemem radzi sobie specjalna podwarstwa warstwy łącza danych zwana pod warstwą kontroli dostępu do nośnika.

Warstwa sieciowa

Warstwa sieciowa steruje działaniem podsieci. Podstawowym problemem projektowym jest tu ustalenie, jak pakiety mają być kierowane od nadawcy do odbiorcy. Trasy mogą opierać się na tabli­cach statycznych, które są zakodowane „na sztywno" w sieci i rzadko zmieniane. Mogą też być ustalane na początku każdej konwersacji, na przykład sesji terminalowej (np. logowania do odległe­go komputera). Na koniec trasy mogą też być wysoce dynamiczne i ustalane na nowo dla każdego pakietu, aby reagować na bieżące obciążenie sieci.

Jeśli w jednej chwili w podsieci znajduje się zbyt wiele pakietów, to będą one sobie nawza­jem przeszkadzać, tworząc wąskie gardła. Za kontrolę nad takimi zatorami również odpowiada war­stwa sieciowa. Bardziej ogólnie mówiąc, jakość świadczonych usług (opóźnienia, czas tranzytu rozsynchronizowanie) jest problemem warstwy sieciowej.

Gdy pakiet musi przejść z jednej sieci do drugiej, aby dojść do miejsca przeznaczenia, może pojawić się szereg problemów. Adresowanie używane w drugiej sieci może różnić się od używanego w pierwszej. Druga sieć może w ogóle nie akceptować pakietów, ponieważ będą dla niej za duże, protokoły mogą się różnić i tak dalej. Do warstwy sieciowej należy uporanie się z wszystkim tymi problemami, pozwalając na łączenie niejednakowych sieci.

W sieciach rozgłoszeniowych problem wyboru trasy jest prosty, więc warstwa sieciowa może w nich być bardzo cienka lub w ogóle nie istnieć.

Warstwa transportowa

Podstawową funkcją warstwy transportowej jest przyjmowanie danych z góry, podział na mniejsze jednostki, przekazanie do warstwy sieciowej i zapewnienie, że wszystkie fragmenty dotrą bezbłędnie do miejsca przeznaczenia. Co więcej, wszystko to musi odbywać się wydajnie i w sposób izolujący wyższe warstwy od nieuniknionych zmian w technologii sprzętu.

Warstwa transportowa określa też, jakie typy usług świadczyć warstwie sesji i, ostatecznie, użyt­kownikom sieci. Najpopularniejszym typem połączenia transportowego jest wolny od błędów dwu-punktowy kanał, który przekazuje wiadomości lub bajty w kolejności wysłania. Jednakże inne możliwe typy usług transportowych to przesył izolowanych wiadomości bez gwarancji kolejności doręczenia oraz rozgłaszanie wiadomości pod wiele adresów. Typ usługi jest ustalany podczas nawiązywania połączenia (tak na marginesie, kanał wolny od błędów jest niemożliwy do zrealizowania; pod tym terminem tak naprawdę mamy na myśli stopę błędów tak niską że można ją w praktyce zignorować).

Warstwa transportowa jest w pełni dwupunktowa, od źródła aż do odbiorcy. Inaczej mówiąc, program w komputerze źródłowym prowadzi konwersację z analogicznym programem w komputerze docelowym, używając nagłówków wiadomości i komunikatów sterujących. W niższych warstwach protokoły łączą każdy komputer z bezpośrednimi sąsiadami, a nie komputer źródłowy z ostatecznym komputerem docelowym, który może być oddzielony od źródłowego szeregiem routerów. Różnica pomiędzy warstwami od 1. do 3., które są łańcuchowe, i warstwami od 4. do 7., które są dwupunktowe, ilustruje rysunek 1.17.

Warstwa sesji

Warstwa sesji pozwala użytkownikom różnych komputerów nawiązywać pomiędzy nimi sesje. Sesje oferują różnorodne usługi, w tym sterowanie dialogiem (śledzenie, na kogo przyszła kolej nadawać), zarządzanie żetonem (zapobieganie przed próbą jednoczesnego wykonania krytycznej operacji przez dwie strony) i synchronizację (wprowadzanie punktów kontrolnych w długich transmisjach pozwalające na kontynuację od miejsca, w którym transmisja uległa załamaniu).

carstwa prezentacji

W przeciwieństwie do niższych warstw, które zajmują się głównie przemieszczaniem bitów, warstwa prezentacji odpowiada za składnię i semantykę przesyłanych informacji. Aby umożliwić komunikację komputerom o odmiennej reprezentacji danych, wymieniane struktury danych mogą być defi­lowane w sposób abstrakcyjny, łącznie ze standardowym kodowaniem przeznaczonym do użycia „w kablu". Warstwa prezentacji zarządza tymi abstrakcyjnym strukturami danych i pozwala na definicję i wymianę struktur danych wyższego poziomu (np. rejestrów bankowych).

Warstwa aplikacji

Warstwa aplikacji zawiera szereg różnych protokołów potrzebnych użytkownikom. Jednym z powszechnie używanych protokołów aplikacji jest HTTP (HyperText Transfer Protocol), stanowiący podstawę WWW. Gdy przeglądarka chce pobrać stronę WWW, wysyła nazwę tej strony do serwera przy użyciu HTTP, po czym serwer odsyła stronę do klienta. Inne protokoły aplikacji służą do przesyłu plików, poczty elektronicznej i obsługi grup dyskusyjnych.

4.2. Model odniesienia TCP/IP

Przejdźmy teraz z modelu odniesienia OSI do modelu odniesienia używanego w praprzodku wszystkich sieci rozległych, którym był ARPANET, i w jego następcy — ogólnoświatowym Internecie. Wprawdzie przedstawimy w dalszej części krótką historię ARPANET-u, lecz przyda się już teraz wspomnieć kilka kluczowych kwestii. ARPANET był siecią badawczą sponsorowaną przez Departament obrony USA. Ostatecznie łączył on setki uczelni i instalacji rządowych za pomocą dzierżawionych linii telefonicznych. Gdy później zostały dodane sieci satelitarne i radiowe, istniejące protokół; miały problemy ze współpracą z nimi, więc potrzebna stała się nowa architektura odniesienia. Wobec tego zdolność do bezproblemowego łączenia wielu sieci była od samego początku jednym z najważniejszych założeń projektowych. Ta architektura zyskała później nazwę modelu odniesienia TCP/IP od swoich dwóch podstawowych protokołów. Po raz pierwszy została zdefiniowana w pracy Cerfi i Kahna (1974). Późniejsza perspektywa została podana w 1985 roku (Leiner i in., 1985). Filozofie projektowa, na której opierał się model, została omówiona w trzy lata później (Clark, 1988).

Z uwagi na zatroskanie Departamentu Obrony faktem, że część jego cennych hostów, routerów i bram międzysieciowych może zostać bez specjalnego uprzedzenia wysadzona w powietrze, ko­lejnym ważnym celem była zdolność sieci do przetrwania utraty sprzętu podsieci bez przerywania istniejących konwersacji. Inaczej mówiąc, Departament Obrony chciał, aby połączenia pozostawały nienaruszone, dopóki będą funkcjonować komputery źródłowy i docelowy, nawet jeśli jakieś urzą­dzenia lub linie transmisyjne pomiędzy nimi nagle przestaną działać. Co więcej, elastyczna archi­tektura była niezbędna, ponieważ planowano zastosowania o rozbieżnych wymaganiach, od trans­feru plików aż po transmisję mowy w czasie rzeczywistymi.

Warstwa internetowa

Wszystkie te wymogi doprowadziły do wybrania sieci z komutacją pakietów opartej na bezpołączeniowej warstwie międzysieciowej. Warstwa ta, zwana warstwą internetową, Jest fundamentem utrzymującym razem całą architekturę. Jej zadaniem jest umożliwienie hostom wprowadzania pakie­tów do dowolnej sieci i kierowanie ich niezależnie do celu (który może znajdować się w innej sie­ci). Pakiety mogą nawet dotrzeć w innej kolejności niż zostały wysłane; w tym przypadku ponownie uporządkować je muszą warstwy wyższe, jeśli wymagane jest doręczenie w kolejności wysłania. Proszę zwrócić uwagę, że słowa „internet" używamy tu w ogólnym znaczeniu, mimo to, że ta warstwa jest obecna w Internecie.

Warstwę internetową możemy przyrównać do tradycyjnego systemu pocztowego. Ktoś może wrzu­cić sekwencję międzynarodowych listów do skrzynki pocztowej w jednym kraju i przy odrobinie szczęścia większość z nich będzie doręczona pod właściwy adres w kraju przeznaczenia. Listy być może przewędrują po drodze jedną lub kilka międzynarodowych bramek pocztowych, lecz to jest dla użytkowników niewidoczne. Na dodatek fakt, że każdy kraj (odpowiednik konkretnej sieci) ma własne znaczki, preferowane wzory kopert i reguły doręczania, też jest ukryty przed użytkownikami.

Warstwa internetowa definiuje oficjalny format pakietu i protokół o nazwie IP (Internet Protocol). Zadaniem warstwy internetowej jest doręczenie pakietów IP w przewidziane miejsce. Ewidentnie poważnymi problemami są tu wybór tras pakietów i unikanie zatorów. Z tych powo­dów możemy powiedzieć, że warstwa internetowa TCP/IP ma podobną funkcjonalność jak war­stwa sieciowa OSI. Analogię tę przedstawia rysunek 1.18.

0x01 graphic

Warstwa transportowa

Warstwa położona nad internetową w modelu TCP/IP jest obecnie nazywana najczęściej warstwą transportową. Pozwala prowadzić konwersacje równorzędnym jednostkom w hostach źródłowym i do­celowym, tak jak warstwa transportowa OSI. Zostały w niej zdefiniowane dwa dwupunktowe proto­koły transportowe. Pierwszy z nich, TCP (Transmission Control Protocol — protokół sterowania transmisją), jest niezawodnym protokołem połączeniowym, który pozwala na bezbłędne doręcze­nie strumienia bajtów pochodzącego z jednego komputera do dowolnego innego komputera w internecie. TCP dzieli wejściowy strumień bajtów na dyskretne komunikaty i każdy przekazuje do war­stwy internetowej. U celu odbiorczy proces TCP ponownie składa otrzymane komunikaty w strumień wyjściowy. TCP obsługuje też sterowanie przepływem, aby szybki nadawca nie zalał wolnego od­biorcy większą liczbą komunikatów, niż ten potrafi obsłużyć.

Drugi protokół w tej warstwie, UDP (User Datagram Protocol — protokół datagramów użyt­kownika) jest bezpołączeniowym, zawodnym protokołem dla aplikacji, które nie wymagają sekwencjonowania lub sterowania przepływem protokołu TCP i chcą używać własnych mechanizmów. UDP jest też powszechnie stosowany w jednokrotnych zapytaniach żądanie-odpowiedź typu klient-serwer i w zastosowaniach, gdzie szybkość doręczania jest ważniejsza od dokładności, na przykład w transmisji mowy i wideo. Relacje pomiędzy IP, TCP i UDP przedstawia rysunek 1.19. Od czasu, gdy opracowano model, protokół IP został zaimplementowany w wielu innych sieciach.

0x01 graphic

RYSUNEK 1.19. Protokoły i sieci w pierwotnym modelu TCP/IP

Warstwa aplikacji

Model TCP/IP nie zawiera warstw sesji i prezentacji. Uznano, że nie są potrzebne, więc nie zostały włączone do modelu. Doświadczenie z modelem OSI pokazało, że było to słuszne podejście -obie warstwy są mało przydatne dla większości aplikacji.

Na wierzchu warstwy transportowej znajduje się warstwa aplikacji zawierająca protokoły wyższego poziomu. Do wczesnych protokołów należały wirtualny terminal (TELNET), transfer plików (FTP) i poczta elektroniczna (SMTP), co widać na rysunku 1.19. Protokół wirtualnego termi­nala pozwala użytkownikowi przy jednym komputerze zalogować się do odległego komputera i pra­cować na nim. Protokół FTP umożliwia bardziej wydajne przenoszenie danych z jednego komputera na drugi. Poczta elektroniczna była początkowo jedynie typem transferu plików, lecz później opra­cowano dla niej bardziej wyspecjalizowany protokół (SMTP). Z biegiem lat dodano do powyższych wiele innych protokołów: DNS (Domain Name System) do mapowania nazw hostów na adresy sieciowe, NNTP — protokół do przenoszenia artykułów grup dyskusyjnych USENET, HTTP — protokół do pobierania stron WWW i wiele innych.

Warstwa host-sieć

Pod warstwą internetową leży wielkie Nic. Model odniesienia TCP/IP nie mówi wiele o tym, co się tu dzieje, poza zwróceniem uwagi, że host musi łączyć się z siecią za pomocą jakiegoś protokołu aby mógł nią przesyłać pakiety IP. Protokół ten nie jest zdefiniowany i może być różny dla różnych hostów i sieci. Książki i artykuły na temat modelu TCP/IP rzadko omawiają ten temat.

1.4.3. Porównanie modeli odniesienia OSI i TCP/IP

Modele odniesienia OSI i TCP/IP mają wiele podobieństw. Oba opierają się na idei stosu niezależnych protokołów. Również funkcjonalność warstw jest zbliżona. Na przykład w obu modelach warstwy od dołu aż do transportowej (z nią włącznie) mają zapewnić dwupunktową, niezależną od s usługę transportową procesów, które chcą się komunikować. Warstwy te tworzą dostawcę transportu. Również w obu modelach warstwy powyżej transportowej są zorientowanymi na aplikacje użytkownikami usługi transportowej.

Mimo tych fundamentalnych podobieństw między obydwoma modelami występuje też wiele różnic. W niniejszym punkcie skupimy się na najważniejszych różnicach pomiędzy modelami. Należy zwrócić uwagę, że porównujemy tu modele odniesienia, a nie odpowiadające im stosy protokołów. Protokoły omówimy później. Dostępna jest książka poświęcona w całości porównaniu i różnicom pomiędzy TCP/IP i OSI (Piscitello i Chapin, 1993).

Trzy idee są podstawą modelu OSI:

(1) Usługi.

(2) Interfejsy.

(3) Protokoły.

Chyba największym wkładem modelu OSI jest jawne rozróżnienie pomiędzy tymi trzema koncepcjami. Każda warstwa pełni jakieś usługi dla warstwy położonej nad nią. Definicja usługi mówi, warstwa robi, a nie to, jak jednostki położone powyżej łączą się z nią lub jak funkcjonuje warstwa. Określa semantykę warstwy.

Interfejs warstwy określa sposób dostępu do niej dla procesów położonych powyżej. Mówi, jakie są parametry i jakich wyników można się spodziewać. Interfejs również nie mówi nic o tym jak warstwa funkcjonuje wewnątrz.

Na koniec protokoły równorzędne używane w warstwie są wewnętrzną sprawą warstw Warstwa może używać dowolnych protokołów pod warunkiem, że spełnia swoją funkcję (czyli świadczy oferowane usługi). Może też zmieniać dowolnie protokoły bez wpływu na oprogramowanie w wyższych warstwach.

Założenia takie bardzo dobrze pasują do nowoczesnych idei programowania obiektoweg. Obiekt, podobnie jak warstwa, posiada zbiór metod (operacji), które mogą być wywoływane przez procesy z zewnątrz obiektu. Semantyka tych metod definiuje zbiór usług oferowanych przez obiekt. Parametry i wyniki tworzą z metody interfejs obiektu. Wewnętrzny kod obiektu jest jego Protokołem i nie jest widoczny ani istotny na zewnątrz obiektu.

Model TCP/IP początkowo nie rozróżniał jasno pomiędzy usługą, interfejsem i protokołem aczkolwiek próbowano uzupełnić go tak, by bardziej przypominał OSI. Na przykład, jedynymi prawdziwymi usługami oferowanymi przez warstwę internetową są SEND IP PACKET (wyślij pakiet IP) RECEIVE IP PACKET (odbierz pakiet IP).

W konsekwencji protokoły w modelu OSI są lepiej ukryte niż w modelu TCP/IP i mogą by z łatwością zastępowane w miarę zmian technologii. Możliwość przeprowadzania takich zmian jest jedną z pierwszych i podstawowych przyczyn stosowania protokołów warstwowych.

Model odniesienia OSI został wymyślony przed wynalezieniem odpowiadających mu protoko­łów. Taka kolejność oznacza, że model nie był ukierunkowany na konkretny zbiór protokołów i stał się przez to bardzo ogólny. Wadą tej kolejności było to, że projektanci mieli niewiele doświadczenia w tej dziedzinie i nie mieli zbyt dobrego pojęcia, którą funkcjonalność umieścić w której warstwie.

Na przykład warstwa łącza danych początkowo zajmowała się tylko sieciami dwupunktowymi. Gdy pojawiły się sieci rozgłoszeniowe, trzeba było upchnąć w modelu nową podwarstwę. Gdy za­częto tworzyć prawdziwe sieci z użyciem modelu OSI i istniejących protokołów, okazało się, że te sieci nie spełniają (o dziwo) wymaganych specyfikacji, więc do modelu trzeba było przeszczepić podwarstwy dostosowujące, aby było gdzie zamaskować różnice. Na dodatek komitet początkowo spodziewał się, że każdy kraj będzie miał jedną sieć, utrzymywaną centralnie przez państwo i uży­wającą protokołów OSI, więc nie pomyślano o łączeniu różnych sieci. Krótko mówiąc, te oczekiwa­nia nie zostały spełnione.

W przypadku TCP/IP było dokładnie na odwrót: najpierw pojawiły się protokoły, a model w rze­czywistości był jedynie opisem istniejących protokołów. Nie było problemów z dopasowaniem protokołów do modelu. Pasowały jak ulał. Jedyny kłopot był z tym, że model nie pasował do żadnego innego stosu protokołów, więc nie był zbyt przydamy do opisywania innych sieci, nieużywających TCP/IP.

Przechodząc od zagadnień filozoficznych do bardziej konkretnych, oczywistą różnicą po­między tymi dwoma modelami jest liczba warstw: model OSI ma ich siedem, a TCP/IP cztery. Oba modele zawierają warstwy (między)sieciową transportową i aplikacji, lecz pozostałe warstwy są odmienne.

Kolejna różnica występuje w zestawieniu komunikacji połączeniowej i bezpołączeniowej. Model OSI obsługuje oba typy w warstwie sieciowej, lecz w warstwie transportowej, gdzie to się liczy (ponieważ usługa transportowa jest widoczna dla użytkowników), tylko połączeniową. Mo­del TCP/IP ma tylko jeden tryb w warstwie sieciowej (bezpołączeniowy), lecz obsługuje oba tryby w warstwie transportowej, dając użytkownikom możliwość wyboru. Wybór jest ważny zwłaszcza w prostych protokołach żądanie-odpowiedź.

1.4.4. Krytyka modelu i protokołów OSI

Ani model OSI ze swoimi protokołami, ani TCP/IP z protokołami nie jest doskonały. Sporo krytyki można skierować (i skierowano) pod adresem obu. W tym i w następnym punkcie przyjrzymy się kilku z tych zarzutów. Zaczniemy od OSI, a TCP/IP omówimy nieco dalej.

W czasie, gdy publikowane było drugie wydanie niniejszej książki (1989), wielu ekspertów w tej dziedzinie było przekonanych, że model OSI i jego protokoły podbiją cały świat i zepchną ze swojej drogi wszystko pozostałe. Tak się nie stało. Dlaczego? Warto przypomnieć sobie kilka bolesnych lekcji. Można je podsumować następująco:

(1) Zły moment.

(2) Zła technologia.

(3) Złe implementacje.

(4) Zła polityka.

Zły moment

Zacznijmy od przyjrzenia się pierwszej przyczynie. Wybór momentu ustanowienia standardu jest absolutnie decydujący o jego powodzeniu. David Clark z M.I.T. ma swoją teorię standardów, zilu­strowaną na rysunku 1.20, którą nazwał apokalipsą dwóch słoni.

Rysunek przedstawia intensywność prac związanych z nowym tematem. Gdy temat zostaje od­kryty, pojawia się nagły zryw działań naukowych w postaci dyskusji, publikacji i spotkań. Po jakimś czasie intensywność działań maleje, firmy odkrywają temat i pojawia się fala inwestycji na miliardy dolarów.

Bardzo ważne jest, by standardy powstały w dolinie między dwoma „grzbietami słoni". Jeśli stan­dardy zostaną stworzone zbyt wcześnie, zanim badania zostaną ukończone, zagadnienie nie będzie jeszcze dostatecznie poznane i otrzymamy złe standardy. Jeśli zostaną napisane za późno, gdy wiele firm już zainwestuje sporo czasu i pieniędzy w różne sposoby realizacji tematu, standardy zostaną praktycznie zignorowane. Jeśli odstęp czasu między dwoma wierzchołkami będzie bardzo krótki (ponieważ wszyscy palą się do tematu), twórcy standardów mogą zostać zanieceni.

Dzisiaj wygląda na to, że standardowe protokoły OSI zostały „zgniecione". Gdy pojawiły się protokoły OSI, konkurencyjne protokoły TCP/IP były już powszechnie stosowane przez uniwersytety badawcze. Wprawdzie wielomiliardowa fala inwestycji jeszcze wtedy nie nadeszła, lecz rynek akade­micki był wystarczająco duży, żeby wielu producentów zaczęło ostrożnie oferować produkty TCP/IP. Gdy pojawiły się standardy OSI, producenci nie chcieli obsługiwać drugiego stosu protokołów, o ile nie byli do tego zmuszeni, więc nie pojawiły się pierwsze oferty. Ponieważ każda firma czekała na to, żeby inna weszła na rynek jako pierwsza, nie zrobiła tego żadna i model OSI nigdy nie zaistniał.

Zła technologia \

Drugim powodem, dla którego model OSI nigdy się nie przyjął, były wady zarówno w modelu, jak i w protokołach. Wybór siedmiu warstw miał podstawy bardziej polityczne niż techniczne, a dwie z nich (sesji i prezentacji) są niemal puste, podczas gdy dwie inne (łącza danych i sieciowa) są prze­pełnione.

Model OSI wraz ze skojarzonymi z nim definicjami usług i protokołami jest wyjątkowo zło­żony. Wydrukowane standardy po złożeniu na jeden stos mają wysokość kilkudziesięciu centyme­trów. Oprócz tego są trudne do zaimplementowania i niewydajne w działaniu. W tym kontekście przypomina się zagadka zadana przez Paula Mockapetrisa (Rose, 1993):

— Co dostaniemy, kiedy skrzyżujemy mafiozo z międzynarodowym standardem?

— Kogoś, kto składa propozycje nie do zrozumienia.

Oprócz niezrozumiałości dodatkowym problemem OSI jest to, że niektóre funkcje, takie jak adreso­wanie, sterowanie przepływem i kontrola błędów, powtarzają się raz za razem w każdej warstwie. Na przykład w pracy Saltzera (1984) zwrócono uwagę, że aby kontrola błędów była skuteczna, musi odbywać się w najwyższej warstwie, więc powtarzanie jej w warstwach niższych jest często niepotrzebne i nieefektywne.

0x01 graphic

Złe implementacje

Biorąc pod uwagę ogromną złożoność modelu i protokołów, nie powinno dziwić, że pierwsze im­plementacje były przerośnięte, niezgrabne i powolne. Każdy, kto ich próbował, poparzył sobie palce. Nie było trzeba wiele czasu, by zaczęto kojarzyć „OSI" z „marną jakością". Chociaż produkty z cza­sem się poprawiły, lecz zły obraz pozostał.

W przeciwieństwie do OSI jedna z pierwszych implementacji TCP/IP należała do systemu Berkeley UNLX i była całkiem niezła (nie wspominając o tym, że darmowa). Ludzie zaczęli z niej korzystać szybko, co prowadziło do wzrostu społeczności użytkowników, co dalej spowodowało powstanie ulepszeń, które dalej zwiększyły popularność. Tutaj spirala rozkręcała się zamiast zwijać.

Zła polityka

Z powodu pierwszej implementacji wiele osób, zwłaszcza w kręgach akademickich, uważało TCP/IP za składnik systemu UNIX, a w latach 80. w środowisku akademickim UNIX był hołubiony i uznany za poprawny politycznie.

Z drugiej strony OSI powszechnie uważano za twór europejskich ministerstw telekomunikacji. Unii Europejskiej, a w późniejszych latach rządu USA. To przekonanie było tylko częściowo prawdziwe, lecz wizja grupy rządowych biurokratów próbujących wmusić technicznie poślednie standardy biednym naukowcom i programistom, którzy na pierwszej linii frontu faktycznie two­rzyli sieci komputerowe, nie była zbyt dobrze przyjęta. Niektórzy patrzyli na to podobnie jak na ogłoszenie przez firmę IBM w latach 60., że PL/I jest językiem przyszłości, oraz poprawkę De­partamentu Obrony do tego ogłoszenia twierdzącą, że takim językiem tak naprawdę jest Ada.

1.4.5. Krytyka modelu odniesienia TCP/IP

Model i protokoły TCP/IP też mają swoje problemy. Po pierwsze, model nie rozróżnia wyraźnie idei usługi, interfejsu i protokołu. Dobre zasady tworzenia oprogramowania wymagają rozróżnienia pomiędzy specyfikacją i implementacją, co OSI robi bardzo dokładnie, a TCP/IP nie. Z tego powodu model TCP/IP nie nadaje się specjalnie jako wytyczne do tworzenia przyszłych sieci z użyciem nowych technologii.

Po drugie, model TCP/IP nie jest ani trochę ogólny i jest mało przydatny do opisywania jakich­kolwiek innych stosów protokołów poza TCP/IP. Na przykład opisanie Bluetooth za pomocą mo­delu TCP/IP jest zupełnie niemożliwe.

Po trzecie, warstwa host-sieć tak naprawdę nie jest w ogóle warstwą w takim sensie, w jakim tego słowa używa się w kontekście protokołów warstwowych. Jest ona interfejsem (pomiędzy sie­cią a warstwami łącza danych). Różnica pomiędzy interfejsem a warstwą jest ogromna i nie po­winniśmy jej bagatelizować.

Po czwarte, model TCP/IP nie rozróżnia warstw fizycznej i łącza danych, a nawet o nich nie wspomina. Są one czymś zupełnie różnym. Warstwa fizyczna wiąże się z właściwościami transmi­syjnymi kabla miedzianego, światłowodu lub łącza bezprzewodowego. Zadaniem warstwy łącza da­nych jest oznaczenie początku i końca ramki oraz przekazanie jej na drugą stronę z założonym po­ziomem niezawodności. Dobry model powinien zawierać obie warstwy jako osobne. Model TCP/IP nie robi tego.

Na koniec, mimo że protokoły IP i TCP zostały dobrze przemyślane i porządnie zaimplemento­wane, wiele innych protokołów zostało utworzonych doraźnie, zwykle przez grupę studentów dłubią­cych w kodzie, póki im się to nie znudziło. Następnie implementacje protokołów były rozprowadzane za darmo, przez co stały się popularne, głęboko zakorzenione i przez to trudne do zastąpienia. Do niektórych z nich dziś trochę wstyd się przyznawać. Na przykład protokół terminala wirtualnego TELNET został zaprojektowany dla mechanicznych terminali Teletype o szybkości dziesięciu znaków na sekundę i nie wiedział nic o graficznych interfejsach użytkownika i myszach. Mimo tc po 25 latach nadal jest powszechnie używany.

Podsumowując, mimo swoich problemów model OSI (bez warstw sesji i prezentacji) okazał się wyjątkowo przydatny do omawiania sieci komputerowych. W przeciwieństwie do niego protokoły OSI nie zdobyły popularności. Z TCP/IP jest odwrotnie: model praktycznie nie istnieje, lecz pro­tokoły są powszechnie używane. Ponieważ informatycy lubią mieć wszystko naraz, w niniejszej książce będziemy używać zmodyfikowanego modelu OSI, lecz skoncentrujemy się przede wszyst­kim na TCP/IP i związanych z nim protokołach oraz nowszych, jak np. 802, SONET i Bluetooth. Wobec tego jako podstaw dla tej książki będziemy posługiwać się hybrydowym modelem z rysunku 1.21.

0x01 graphic

RYSUNEK 1.21. Hybrydowy model odniesienia, który będzie używany w tej książce

1.5. Przykłady sieci

Tematyka sieci komputerowych obejmuje wiele różnych typów sieci, dużych i małych, bardziej i mniej popularnych. Mają one różne zadania i skale oraz wykorzystują rozmaite technologie. W następ­nych punktach przyjrzymy się kilku przykładom, aby nabrać pojęcia o różnorodności, jaką może­my spotkać w dziedzinie sieci komputerowych.

Zaczniemy od chyba najlepiej znanej sieci — Internetu i przyjrzymy się jego historii, ewolucji i technologii. Następnie omówimy sieci ATM, często stosowane jako szkielety dużych sieci telefo­nicznych. Technicznie ATM znacznie różni się od Internetu i porównanie ich zapewni nam intere­sujący kontrast. Następnie przedstawimy dominujący w sieciach lokalnych Ethernet. Na koniec przyjrzymy się IEEE 802.11, który jest standardem bezprzewodowych sieci LAN.

1.5.1. Internet

Internet (pisany dużą literą) nie jest w ogóle siecią lecz olbrzymim zbiorem różnych sieci, które używają pewnych wspólnych protokołów i udostępniają wspólne usługi. Jest to system niezwykły, ponieważ nie był przez nikogo planowany i nikt nie sprawuje nad nim kontroli. Aby lepiej go zro­zumieć, zacznijmy od początku i popatrzmy, jak i po co został opracowany. Dla zainteresowanych fascynującą historią Internetu gorąco polecamy książkę Johna Naughtona (2000). Jest to jedna z tych rzadkich publikacji, które nie tylko czyta się z przyjemnością lecz zawiera też 20 stron przypisów 1 odnośników dla poważnych historyków. Część informacji przedstawionych poniżej zaczerpnięto właśnie z tej pracy.

Oczywiście na temat Internetu i jego protokołów napisano też niezliczone książki techniczne. Dodatkowe informacje zawierają również inne prace (np. Maufer, 1999).

str. 29



Wyszukiwarka

Podobne podstrony:
sieci model OSI ISO
projekt wstep do sieci wymagania
projekt-wstep do sieci-wymagania
TOPOLOGIE, MODEL OSI, ADRESY IP, SERWERY, MEDIA
sieci model OSI ISO
01 Linux Przygotowanie komputera do pracy w sieci TCP IP
2003 01 Programy diagnostyczno narzędziowe do sieci TCP IP w Windows
model OSI, Informatyka, Sieci Komputerowe
TCP MODEL OSI
WAiNS Wykład 5 Sieci komputerowe model OSI
SIECI KOMPUTEROWE Stos protokołów TCP IP
02 Protokoly sieciowe, OSI 01, TCP/IP
3 2 4 6 Packet Tracer Investigating the TCP IP and OSI Models in?tion Instructions
wstęp, model osi i tcpip, html i www IIU2H5EYPMSYUWXAKYH2V2LUKUJGGJNVDCMXEMI

więcej podobnych podstron