Model ISO/OSI
W latach 70 nie istniały ogólnie respektowane otwarte standardy dotyczące sieci komputerowych. Każdy producent tworzył swoją własną sieć, niezgodną oczywiście z konstrukcjami innych producentów. Efektem dążeń do znormalizowania tych zagadnień było opracowanie w 1977 roku przez Międzynarodową Organizację Normalizacyjną modelu „łączenia systemów otwartych" {International Standard Organization / Open System Interconnectioń). Proces transmisji danych przez sieć został podzielony na 7 etapów, zwanych warstwami, a struktura tworzona przez warstwy OSI nazywana jest stosem protokołów wymiany danych (rysunek 1.4).
W całym procesie komunikacji wyodrębnia się pewne niezależne zadania, które są wykonywane przez układy sprzętowe lub pakiety oprogramowania, zwane obiektami. Klasę obiektów rozwiązujących dane zagadnienie nazywa się warstwą. Pojęcie warstwy nie jest jednoznaczne z pojęciem protokołu — funkcje danej warstwy mogą być realizowane przez kilka różnych protokołów. Każdy protokół komunikuje się ze swoim odpowiednikiem, będącym implementacją tego samego protokołu w równorzędnej warstwie komunikacyjnej systemu odległego.
Dane przekazywane są od wierzchołka stosu poprzez kolejne warstwy aż do warstwy fizycznej, która przesyła je poprzez sieć do odległego hosta. Na szczycie stosu znajdują się usługi świadczone bezpośrednio użytkownikowi przez aplikacje sieciowe, na spodzie — sprzęt realizujący transmisję sygnałów niosących informacje. Przykładowo dane wysyłane przez warstwę sieciową w stacji nadawczej odbierane są przez stację odbiorczą dostarczane do jej warstwy sieciowej i przetwarzane przez nią tak aby mogły być przekazane kolejnym (wyższym) warstwom do dalszej obróbki.
Każda kolejna warstwa musi znać jedynie format danych wymagany do komunikacji poprzez warstwę niższą zwany protokołem wymiany danych. Przy przechodzeniu do warstwy niższej warstwa dokleja do otrzymanych przez siebie danych nagłówek
z informacjami dla swojego odpowiednika na odległym komputerze. Dzięki temu kolejne warstwy nie ingerują w zawartość otrzymaną z warstwy poprzedniej. Po odebraniu danych z warstwy niższej warstwa wyższa interpretuje nagłówek „doklejony" przez swojego odpowiednika z komputera odległego i jeśli zachodzi potrzeba przekazania danych do warstwy wyższej, usuwa swój nagłówek i przekazuje dane dalej.
1. Warstwa fizyczna (physical layer)
Zapewnia transmisję danych pomiędzy węzłami sieci. Definiuje interfejsy sieciowe i medium transmisji. Określa m.in. sposób połączenia mechanicznego (wtyczki, złącza), elektrycznego (poziomy napięć, prądów) i standard fizycznej transmisji danych. W skład jej obiektów wchodzą m.in. karty sieciowe, modemy, regeneratory (repeater), koncentratory (concentrator, hub).
2. Warstwa łącza danych (data link layer)
Zapewnia niezawodność łącza danych. Definiuje mechanizmy kontroli błędów w przesyłanych ramkach lub pakietach — CRC (Cyclic Redundancy Check). Jest ona ściśle powiązana z warstwą fizyczną która narzuca topologię. Warstwa ta często zajmuje się również kompresją danych. W skład jej obiektów wchodzą sterowniki urządzeń sieciowych, np. sterowniki (drivery) kart sieciowych oraz mosty (bridge) i przełączniki (switche).
3. Warstwa sieciowa (network layer)
Zapewnia metody ustanawiania, utrzymywania i rozłączania połączenia sieciowego. Obsługuje błędy komunikacji. Ponadto jest odpowiedzialna za trasowanie (routing) pakietów w sieci, czyli wyznaczenie optymalnej trasy dla połączenia. W niektórych warunkach dopuszczalne jest gubienie pakietów przez tę warstwę. W skład jej obiektów wchodzą m.in. routery (router).
4. Warstwa transportowa (transport layer)
Zapewnia przezroczysty transfer danych typu punkt-do-punktu (point-to-point). Dba o kolejność pakietów otrzymywanych przez odbiorcę. Sprawdza poprawność (CRC) przesyłanych pakietów i w przypadku ich uszkodzenia lub zaginięcia zapewnia retransmisję. Powyżej tej warstwy dane mogą być traktowane jako strumień.
5. Warstwa sesji (session layer)
Zapewnia aplikacjom na odległych komputerach realizację wymiany danych pomiędzy nimi. Kontroluje nawiązywanie i zrywanie połączenia przez aplikację. Jest odpowiedzialna za poprawną realizację zapytania o daną usługę. Do warstwy tej można zaliczyć funkcje API udostępniane programiście przez bibliotekę realizującą dostęp do sieci na poziomie powyżej warstwy transportowej, takie jak np. biblioteka strumieni i gniazdek BSD.
6. Warstwa prezentacji (presentation layer)
Zapewnia tłumaczenie danych, definiowanie ich formatu oraz odpowiednią składnię. Umożliwia przekształcenie danych na postać standardową niezależną od aplikacji. Rozwiązuje takie problemy, jak niezgodność reprezentacji liczb, znaków końca wiersza, liter narodowych itp. Odpowiada także za kompresję i szyfrowanie.
7. Warstwa aplikacji (application layer)
Zapewnia aplikacjom metody dostępu do środowiska OSI. Warstwa ta świadczy usługi końcowe dla aplikacji, m.in. udostępnianie zasobów (plików, drukarek). Na tym poziomie rezydują procesy sieciowe dostępne bezpośrednio dla użytkownika.
Model protokołu TCP/IP
Protokół tworzący Internet — TCP/IP — również możemy opisać za pomocą siedmio-warstwowego modelu ISO/OSI. Lepiej jednak oddaje funkcje i właściwości protokołu TCP/IP uproszczony model cztero warstwowy. W modelu tym najważniejsze są warstwy sieciowa i transportowa; pozostałe są połączone i tworzą dwie warstwy, zwane warstwą dostępu do sieci oraz warstwą aplikacji. Funkcje tych warstw pokrywają się z zadaniami odpowiadających im warstw w modelu ISO/OSI (rysunek 1.5).
Podobnie jak w modelu OSI, kolejne warstwy dołączają (bądź usuwają w zależności od tego, w którą stronę przesuwają się dane) własne nagłówki. Taki proces nazywa się enkapsulacją (kapsułkowaniem) danych (rysunek 1.6). Jednakże model czterowarstwowy, poprzez zintegrowanie funkcjonalne niektórych warstw, o wiele lepiej obrazuje ten proces dla protokołu TCP/IP.
Rysunek 1.6. Proces enkapsulacji danych
Ponieważ zrozumienie tego procesu sprawia często duże problemy, postaram się teraz w dużym uproszczeniu przedstawić zasadę działania takiego modelu. Załóżmy, że chcemy pobrać z serwera pewien plik z danymi o nazwie PLIK.MP3. Wykorzystujemy do tego protokół FTP i powodujemy przesłanie tego pliku na nasz prywatny komputer. A jak to się odbyło? Aby dokładnie opisać proces przesyłania pliku, musiałbym napisać drugą taką książkę, z tego też powodu powstały uproszczone modele warstwowe sieci. One po prostu ułatwiają zrozumienie działania sieci. Ponadto dzięki uproszczeniu rozważań i podzieleniu ich na etapy (warstwy) często pozwalają szybciej rozwiązać praktyczne problemy pojawiające się podczas pracy sieci.
Na początku aplikacja o nazwie „Serwer FTP" chce przesłać pewną paczkę danych
0 nazwie PLIK.MP3 do aplikacji o nazwie „Klient FTP" na innym komputerze w sieci. Paczka danych obsługiwana jest w warstwie aplikacji przez protokół FTP, służący do transmisji danych. Protokół ten dodaje do PLIK.MP3 swój własny nagłówek Nagł_FTP
1 przekazuje całość do warstwy transportowej (rysunek 1.7). Warstwą transportową dla protokołu FTP jest protokół TCP. Protokół ten otrzymuje dane w postaci sklejonych: Nagł_FTP+PLIK.MP3. Następnie adresuje te dane za pomocą numerów portu na komputerze lokalnym i numeru portu na komputerze odległym (numer portu jest po prostu liczbą z zakresu 1 - 65 535; dokładniej znaczeniem numerów portów zajmę się w rozdziale dotyczącym protokołów TCP i UDP). Numery te umieszcza w swoim własnym nagłówku, który dokleja do danych i przekazuje do warstwy Internetu. Protokół IP działający w warstwie Internetu otrzymuje dane w postaci: Nagł_TCP+Nagł_FTP+ PLIK.MP3, a następnie również adresuje je (bez zaglądania do środka) numerem IP komputera lokalnego (źródłowego) i numerem komputera docelowego. Oba numery są zawarte w nagłówku protokołu IP, doklejanym do danych. Następnie protokół IP przekazuje paczkę danych w postaci: Nagł_IP+Nagł_TCP+Nag_FTP+PLIK.MP3 do protokołu warstwy dostępu do sieci. Przyjmijmy, że komputer wysyłający dane jest podłączony poprzez sieć Ethernet. Dalszym przesyłaniem danych zajmuje się protokół Ethernet, który również dokleja swój nagłówek z adresem karty sieciowej komputera lokalnego i adresem karty sieciowej komputera docelowego; powstaje paczka danych postaci: Nagł_Ethernet+Nagł_IP+Nagł_TCP+Nagł_FTP+PLIK.MP3. Paczka ta zapisywana jest w formie impulsów elektrycznych i wysyłana przez kabel podłączony do karty sieciowej komputera nadającego dane.
Rysunek 1.7. Proces transmisji pliku za pomocą protokołu FTP
Komputer docelowy po odebraniu danych rozpoznaje po nagłówku warstwy dostępu do sieci, że paczka jest skierowana do niego (jest zaadresowana jego adresem ethernetowym), usuwa ten nagłówek i przekazuje dane wyżej do warstwy Internetu (rysunek 1.8). Tam protokół IP po docelowym adresie IP rozpoznaje, że dane są skierowane do tego komputera (gdyby było inaczej, mógłby np. przekazać je dalej, co właśnie czynią routery), kasuje nagłówek i przekazuje dane wyżej, do warstwy transportowej. W niej protokół TCP również usuwa swój nagłówek i po odczytaniu numeru portu docelowego podaje dane dalej do protokołu FTP działającego w warstwie aplikacji. Protokół FTP usuwa również swój nagłówek, po czym otrzymuje dane w postaci PLIK.MP3 i przekazuje je użytkownikowi. Użytkownik po zapisaniu danych na dysk może sobie w końcu posłuchać muzyki. W tym momencie staje się jasne, jak wiele złożonych mechanizmów zaangażowanych jest w prostą transmisję pliku poprzez sieć TCP/IP. W rzeczywistości jest to jeszcze bardziej skomplikowane, co przedstawię w kolejnych rozdziałach tej książki.
Rysunek 1.8. Proces odbierania pliku za pomocą protokołu FTP
Każda warstwa ma swoją terminologię określającą dane aktualnie przez nią opracowywane. Ponieważ protokół TCP/IP składa się z dwóch głównych protokołów warstwy transportowej TCP i UDP, również w nazewnictwie wprowadzono podział (tabela 1.1).
Tabela 1.1. Nazwy jednostek danych dla kolejnych warstw modelu TCP/IP
Warstwa |
TCP |
|
UDP |
Aplikacji |
strumień |
|
wiadomość |
Transportowa |
segment |
|
pakiet |
Internetu |
|
datagram |
|
Dostępu do sieci |
|
ramka |
|
Częściej jednak spotkasz się z prostszą nomenklaturą (np. w dokumentacji firmy Cisco), w której nie pojawia się podział na protokoły TCP i UDP. Nazwa jednostki danych dla warstwy Internetu to pakiet, a dla Warstwy transportowej uogólnioną nazwą jest segment.
Ponieważ model taki bardzo logicznie dzieli na części zagadnienie działania sieci TCP/IP, na nim właśnie oparłem konstrukcję pierwszych rozdziałów książki. Omówię kolejno warstwy modelu protokołu TCP/IP, ich zadania, protokoły oraz technologie w nich działające. Sposób rozważania działania sieci na podstawie modelu warstwowego nie jest jedynie niepotrzebną teorią. Podział na poziomy bardzo przydaje się podczas praktycznego rozwiązywania problemów w pracy sieci. Sprawdzając po kolei działanie poszczególnych warstw tego modelu, możemy szybko określić źródło problemu i wykryć konkretny element powodujący zakłócenia.