Moduł 7 Protokoły sieciowe 1. Protokoły dostępowe w sieciach lokalnych 2. Protokół IP i protokoły pomocnicze 3. Protokoły warstwy transportowej 4. Protokoły warstwy aplikacji 5. Inne protokoły sieciowe
1. Protokoły dostępowe w sieciach lokalnych Lokalne sieci komputerowe w ostatnich latach zostały zdominowane w warstwie pierwszej i drugiej modelu OSI przez grupę protokołów Ethernet. Standard opracowany w latach 80. ewoluował przez lata w kierunku dużych prędkości, zmieniając przy okazji medium transmisyjne. Pierwsze rozwiązania z grupy Ethernet, czyli 10Base5 i 10Base2, wykorzystywały kabel koncentryczny, współosiowy. Od czasu pojawienia się rozwiązania i nazwie 10BaseT rozpoczęła się w sieciach Ethernet era okablowania typu skrętka. Rozwiązanie to mimo upływu lat i wprowadzaniu coraz to wyższych prędkości nadal dominuje w sieciach lokalnych. Podczas wprowadzania w roku 1995 kolejnej wersji Ethernetu o nazwie Fast Ethernet, uwzględniono możliwość użycia światłowodu jako medium. Chociaż zalety tego rozwiązania pozwalały przypuszczać, że zyska ono szybko wielu zwolenników, nadal najważniejsze w sieciach lokalnych pozostaje okablowanie miedziane. Medium fizyczne wymaga od użytkowników ustalenia zasad dostępu i wykorzystania, szczególnie jeżeli mamy do czynienia z medium współdzielonym. Standard Ethernet do obsługi dostępu do medium wykorzystuje protokół CSMA/CD. To przy jego pomocy uczestnicy ruchu sprawdzają zajętość kanału transmisyjnego, a także rozwiązują sytuacje sporne związane z kolizjami. Informacje, które mają zostać przesłane przez sieć, napływają do protokołu Ethernet z warstwy wyższej, czyli najczęściej od protokołu IP. Uporządkowane informacje trafiają w pole danych ramek Ethernet i są opatrzone nagłówkiem oraz stopką, a następnie zostają przygotowywane do transportu przez sieć fizyczną. Strukturę danych w ramce pokazuje rysunek 7.1 Rys. 7.1 Struktura ramki Ethernet Źródło: http://gmk007.w.interia.pl/sieci/ramka.jpg Pierwsze dwa pola nagłówka ramki są wykorzystywane do synchronizacji urządzenia odbiorczego oraz do poinformowania o rozpoczynającej się ramce (pole SFD). W następnej kolejności przekazywane są bardzo ważne dwa pola zawierające informacje o odbiorcy i nadawcy tej konkretnej porcji danych. Jako adresy: źródłowy i docelowy wykorzystywane są adresy fizyczne urządzeń, tzw. MAC adresy, nadane im przez producentów w trakcie produkcji. To przy pomocy tych niepowtarzalnych numerów, w sieci lokalnej rozpoznawane są urządzenia od i do których kierowany jest ruch sieciowy. Na kolejnych dwóch bajtach przekazywana jest informacja o rozmiarze pola danych, które może mieć zmienną długość. Zwieńczeniem ramki Ethernet jest stopka zawierająca sumy kontrolne CRC (Cyclic Redundancy Check) pozwalające na określenie, czy transportowane ramki nie uległy zniekształceniu podczas pokonywania drogi od nadawcy do odbiorcy. Odbiorca na podstawie zawartości ramki sam wylicza sumę kontrolną i porównuje do przesłanej przez nadawcę. Taka konstrukcja ramki pozwala na sprawne przesyłanie informacji. 2
Szczególnie ważne jest pierwsze wykorzystywane pole nagłówka, które przedstawia adres docelowy. Tuż po uzyskaniu synchronizacji otrzymujemy 6 bajtów danych jednoznacznie określających, czy transmitowana ramka przeznaczona jest dla nas czy innego odbiorcy. Innym rozwiązaniem stosowanym w sieciach lokalnych jest protokół Token Ring. Rozwiązanie firmy IBM oparte o topologię pierścieniową zakładało wprowadzenie elektronicznego znacznika w sieci, zwanego tokenem. Użytkownik, który chciał przesłać informację w sieci, oczekiwał na token i zawłaszczał go na czas transmisji. W sieci istniał tylko jeden token, dlatego jego zajęcie powodowało, że reszta użytkowników oczekiwała na prawo nadawania, podczas gdy informacje nadawała jedna stacja. W ten sposób został rozwiązany problem kolizji, który za priorytet postawili sobie twórcy tego standardu. Innym rozwiązaniem stosującym zasadę żetonu (token) jest FDDI. Stosowany raczej jako rozwiązanie kampusowe niż w sieciach lokalnych, wykorzystywał podwójny pierścień światłowodowy, co dawało mu większą przepływność oraz bezpieczeństwo w przypadku awarii. Nie możemy zapomnieć o sieciach radiowych, które w ostatnich latach nieprzerwanie zyskują na popularności. Standard IEEE 802.11 ze wszystkimi odmianami nieprzerwanie od kilku lat jest wyznacznikiem w warstwie fizycznej lokalnych sieci radiowych. Popularne WiFi, które rozpoczynało od transmisji na poziomie 11Mb/s, dziś pozwala uzyskiwać prędkości ok 300Mb/s, chociaż opracowane standardy już zakładają większe prędkości. Transmisja odbywa się na nielicencjonowanych częstotliwościach radiowych w okolicach 2,4 oraz 5GHz. Dopuszczalne moce są ustalane indywidualnie przez odpowiednie instytucje w państwach. Tak prezentują się najczęściej używane protokoły dostępowe w sieciach lokalnych. Rozwiązania kablowe zostały zdominowane przez standardy Ethernet, podczas gdy sieci radiowe to najczęściej rozwiązania z grupy 802.11. 2. Protokół IP i protokoły pomocnicze Warstwa trzecia modelu OSI/ISO jest zdominowana w większości przez jeden protokół. Popularność sieci Internet sprawiła, że pomimo występowania innych rozwiązań, w warstwie sieci najważniejszy pozostaje protokół IP (Internet Protocol). Do pewnego momentu firmy, takie jak Apple czy Novell, próbowały rozwijać własne protokoły. Przez wiele lat firma spod znaku ugryzionego jabłka starała się rozwijać swój protokół Apple Talk, przy pomocy którego komunikowały się jej urządzenia. Firma Novell, twórca popularnego systemu sieciowego Novell NetWare, posługiwała się stosem protokołów IPX/SPX. Rozwój technik wykorzystujących sieć Internet sprawił, że mimo wielu zalet, producenci Ci porzucili jednak swoje protokoły na rzecz wszechobecnego IP. Co takiego wyjątkowego jest w protokole IP, że zdominował pozostałe rozwiązania? Odpowiedź jest dosyć oczywista, jest standardem w sieci Internet to wystarczy. Warstwa trzecia modelu OSI odpowiada za adresację logiczną sieci. Każde urządzenie w swojej sieci dostaje niepowtarzalny adres, który pozwala go identyfikować w tej sieci, a także w innych sieciach przyłączonych. Każdy adres IP składa się z dwóch części. Pierwszy fragment adresu jest wspólny dla wszystkich w danej sieci i mówimy, że należy do sieci. Drugi fragment jednoznacznie identyfikuje urządzenie zwane w sieci hostem i pozwala rozróżnić je w ramach danej sieci. Posiadając cały adres, możemy wskazać, do której sieci należy dany host i gdzie go poszukiwać. Poruszanie się pomiędzy sieciami 3
w celu dotarcia do określonego hosta nazywa się routingiem, czasami po polsku trasowaniem. Wróćmy jeszcze raz do adresu IP. Aktualnie najczęściej wykorzystywaną odmianą protokołu IP jest wersja czwarta (IPv4). Chociaż od wielu lat mówi się o kończących się adresach w tej odsłonie protokołu, nadal jest on wykorzystywany w sieci Internet i pewnie jeszcze trochę czasu minie zanim wszyscy zamienimy wysłużone IPv4 na IPv6. Adres w wersji czwartej składa się z 32 bitów. Zwyczajowo zapisujemy go w postaci kropkowo-dziesiętnej, czyli każde osiem bitów zamieniamy na postać dziesiętną i oddzielamy kropką od następnych ośmiu bitów. Przykładowy adres może wyglądać tak: 174.220.213.103 Pierwotnie część sieci i hosta była arbitralnie oddzielona przez podział całej przestrzeni adresowej na klasy. Wszystkie dostępne adresy zostały podzielone na pięć klas adresów oznaczonych literami A, B, C, D i E. Pierwsze trzy klasy zostały przeznaczone na adresację sieci i hostów przyłączonych do Internetu. Klasa D została zarezerwowana na potrzeby specjalnego rodzaju transmisji w Internecie, jakim jest multiemisja (jeden do wielu). Ostatnia klasa E została przeznaczona na badania nad siecią. Dokonany podział adresów zamieszczony został w tabeli 7.1. klasa zakres adresów liczba bitów liczba bitów przeznaczenie sieci hosta A 0.0.0.0 127.255.255.255 8 24 bardzo duże sieci B 128.0.0.0 191.255.255.255 16 16 duże sieci C 192.0.0.0 223.255.255.255 24 8 małe sieci D 224.0.0.0 239.255.255.255 - - multicasting E 240.0.0.0 255.255.255.255 - - badania Tabela 7.1 Podział klasowy adresów IPv4 Źródło: materiały własne Analizując tabelę, można zauważyć, że podział klasowy przewidział połowę adresacji na potrzeby bardzo dużych sieci. Przestrzeń hosta dla tych sieci to aż 24 bity, co pozwalało zaadresować 16,7 mln hostów. Trudno sobie wyobrazić firmę, która potrzebowałaby tak dużej liczby adresów, ale za tym sposobem rozumowania kryje się jeszcze jedno założenie. Stosowanie podziału klasowego miało ułatwić routing, który opierał się na adresie przynależnym do konkretnej klasy. Już po analizie pierwszych bitów router otrzymał informacje na temat klasy i przestrzeni adresowej, z którą ma do czynienia. Spójrzmy, jak wygląda zapis binarny najstarszego bajtu adresu w poszczególnych klasach. klasa zakres adresów najstarszy bajt binarnie A 0.0.0.0 127.255.255.255 0xxxxxxx B 128.0.0.0 191.255.255.255 10xxxxxx C 192.0.0.0 223.255.255.255 110xxxxx D 224.0.0.0 239.255.255.255 1110xxxx E 240.0.0.0 255.255.255.255 1111xxxx Tabela 7.2 Zapis binarny najstarszego bajtu adresu IPv4 przy podziale klasowym Źródło: materiały własne 4
Jak łatwo zauważyć, router, czyli urządzenie odpowiedzialne za kierowanie ruchem w sieciach IP, już po przeanalizowaniu pierwszych bitów adresu docelowego otrzymał informację z jaką klasą i jakim podziałem ma do czynienia. Wracając do problemu klasy A: czy tylko bardzo duże firmy o niebotycznych ilościach komputerów mogły liczyć na pulę adresów z klasy A? Okazuje się, że nie koniecznie. Kolejnym mankamentem podziału klasowego był brak możliwości łączenia kilku zakresów adresów np. z klasy C, w celu stworzenia większej przestrzeni adresowej. Jeżeli firma potrzebowała 240 adresów, dostawała klasę C. Jeżeli potrzebowała 270 adresów, niestety przestrzeń klasy C była niewystarczająca i przyznawany zakres był z klasy B. Jeżeli firma jakimś cudem nie mieściła się w klasie B, czyli wykazała potrzebę zaadresowania powyżej 65,5 tyś. hostów, dostawała klasę A. I tu należy postawić pytanie, czy taka polityka nie doprowadzi do szybkiego wyczerpania adresów? Tak. Dlatego wprowadzono podział bezklasowy z maską o zmiennej długości. Do adresu IP dokładamy tzw. maskę, która informuje o miejscu podziału adresu na część sieci i część hosta. W ten sposób można bardziej elastycznie rozdzielać adresy sieciowe między użytkowników bez tak dużego marnotrawstwa. Podobnie jak w przypadku protokołów dostępowych, protokół IP zakłada dokładanie do porcji danych nagłówków. Tak przygotowany fragment informacji na warstwie trzeciej nosi nazwę pakietu. Przyjrzyjmy się strukturze nagłówka protokołu IPv4. Rys. 7.2 Nagłówek pakietu IPv4 Źródło: http://swiatlan.pl/wp-content/uploads/2010/08/tab6.jpg Już w momencie tworzenia tej wersji protokołu zakładano jego następne wersje, dlatego pojawiło się pole wersja w nagłówku. Kolejne bajty to długość nagłówka (IHL), który posiada pola opcjonalne nie zawsze wykorzystywane. W celu określenia miejsca końca nagłówka i początku danych użytkownika, należy jawnie określić to miejsce. Pole Typ usługi przewidziane jest do określania zawartości pakietu pod względem ważności transmitowanych danych. Różne typy usług sieciowych należy potraktować z różnym priorytetem i temu ma służyć to pole. Szesnaście kolejnych bitów przekazuje informacje o długości całkowitej pakietu łącznie z polem danych. Następne trzy pola nagłówka przeznaczone są do przekazywania informacji dotyczących fragmentacji pakietów. Numeracja fragmentowanych części oraz dodatkowe flagi pozwolą na prawidłowe złożenie przesłanych danych po drugiej stronie łącza. Jednym 5
z najważniejszych pól nagłówka jest Czas życia. To mechanizm, który ma za zadanie uśmiercać zbyt długo krążące po sieci pakiety. Wysyłając informację do hosta docelowego, zakładamy, że pokonując kilka routerów, osiągnie ona swój cel. Jeżeli jednak z jakiegoś powodu dane nie mogą znaleźć adresata, np. dwa routery mają błędnie ustawione trasowanie, nasze dane krążyłyby w nieskończoność. Przed takim zjawiskiem broni nas Czas życia (ang. Time To Live). Pakiet rozpoczynając swoją wędrówkę, dostaje na starcie np. TTL=255. Przekazanie pakietu przez router do innej sieci powoduje zmniejszenie licznika o jeden i tak do momentu, aż TTL osiągnie wartość 1. Router, który dostaje pakiet z TTL=1 ma za zadanie uśmiercić go i wysłać do nadawcy informację o wygaśnięciu jego czasu życia. W ten prosty sposób chronimy sieci IP przed nieskończonym odbijaniem pakietów. Pole Protokół przekazuje informacje o protokole warstwy wyższej, który jest zawarty w polu danych, a suma kontrolna nagłówka pozwala na weryfikację poprawności całego nagłówka pakietu. Pozostałe dwa 32-bitowe pola to adres nadawcy i adres odbiorcy. Podobnie jak w ramce Ethernet, tak i tu nie ma pakietów anonimowych. W warstwie trzeciej oprócz omówionego protokołu IP znajdziemy jeszcze całą grupę protokołów routingu. Odpowiadają one za wymianę informacji pomiędzy routerami i budowanie w każdym z nich tablicy routingu, czyli listy tras, którymi mają być przesyłane dane adresowane do określonych sieci. Przykładem takich protokołów może być RIP, OSPF, IGRP czy E-IGRP. Warstwa trzecia to również protokół kontrolny ICMP (Internet Control Message Protocol) wykorzystywany m.in. do sprawdzania dostępności hostów. Przy jego pomocy działają dobrze wszystkim znane polecenia ping i tracert (traceroute) pozwalające sprawdzić osiągalność hosta na drugim końcu sieci oraz trasę do niego prowadzącą. Przy pomocy ICMP wysyłane są również komunikaty od routerów o przekroczeniu czasu życia pakietu (TTL) do nadawcy. 3. Protokoły warstwy transportowej Warstwa transportowa to pierwsza z warstw modelu OSI, za której funkcjonowanie odpowiada oprogramowanie urządzeń końcowych. To w tej warstwie zawarte dane przypisywane są do portów, które jednoznacznie wskazują na aplikacje, od których pochodzą i do których są kierowane. Warstwa czwarta to również mechanizmy pozwalające zbadać integralność i spójność danych. Wszelkie wady pojawiające się w strumieniu danych mogą zostać wychwycone i odpowiedni protokół może poprosić nadawcę o retransmisję. Głównymi przedstawicielami warstwy czwartej są protokoły TCP i UDP. Zupełnie odmienne, kierowane inną filozofią, skierowane są do obsługi innego rodzaju informacji. Protokół UDP (ang. User Datagram Protocol) jest wykorzystywany do przesyłania informacji w trybie bezpołączeniowym. Jego zastosowanie to przede wszystkim usługi czasu rzeczywistego oraz te, gdzie przesyłane są niewielkie ilości danych. Rys. 7.3 Nagłówek protokołu UDP Źródło: http://www.wdsk01.friko.pl/5.gif 6
Niezwykle prosty nagłówek informuje tylko o portach nadawcy i odbiorcy, długości komunikatu oraz sumie kontrolnej dla pola nagłówka i danych. Na podstawie tych danych można tylko skierować dane do odpowiedniej aplikacji odbiorczej nasłuchującej na określonym porcie. W wyniku ponownego przeliczenia całego datagramu i porównania jego sumy kontrolnej można podjąć ewentualnie decyzję o jego odrzuceniu w przypadku przekłamania. Taki sposób traktowania danych sprzyja szybkiemu przekazywaniu informacji. Skrajnie odmienna filozofia przyświecała twórcom protokołu TCP (Transmission Control Protocol). Rozbudowany nagłówek oraz mechanizmy sprawdzania kompletności przesyłanych informacji sprawiają, że wykorzystując ten protokół, informacje w całości, niezniekształcone trafią do odbiorcy. Spoglądając na rysunek 7.4, widzimy, że oprócz portu nadawcy i odbiorcy, w nagłówku znajduje się mnóstwo innych danych odpowiedzialnych za prawidłowość transmisji end to end (od końca do końca). Protokół TCP należy do grupy protokołów połączeniowych, co oznacza, że przed właściwą wymianą danych następuje chwila nawiązania połączenia, czyli wyrażenia przez strony chęci i gotowości do transmisji. Procedura w przypadku TCP nosi nazwę three-way handshake, a jej przebieg ilustruje rysunek 7.5. Host A z lewej strony wysyła żądanie zestawienia sesji. W odpowiedzi otrzymuje potwierdzenie przyjęcia żądania z propozycją numeracji segmentów od hosta B. Po zaakceptowaniu przez host A propozycji i przesłaniu potwierdzenia (ACK), oba hosty są gotowe do wymiany danych. Rys. 7.4 Nagłówek segmentu w protokole TCP Źródło: http://www.staff.amu.edu.pl/~psi/informatyka/tcpip/tcp_segm.htm Rys. 7.5 Procedura nawiązania połączenia TCP Źródło: http://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/tcp_normal.svg/220px- Tcp_normal.svg.png 7
Wracając do analizy nagłówka TCP, po polach portu nadawcy i odbiorcy pojawiają się 32-bitowe przestrzenie na numer porządkowy i numer potwierdzenia. Na podstawie tych numerów możliwe będzie poskładanie danych w jeden strumień po stronie odbiorcy oraz określenie prawidłowości docierania poszczególnych segmentów po stronie nadawcy. Kolejne pola to długość nagłówka, który podobnie jak w protokole IP może mieć zmienną wielkość, bity kodu oraz tzw. Okno. To 16-bitowe pole informuje nadawcę, ile danych jest w stanie aktualnie przyjąć odbiorca. Wysyłając tą informację, strona odbiorcza broni się przed nadmiernym napływem nowych danych. Jak widać, różnica pomiędzy UDP i TCP jest znacząca. Numeracja segmentów i kontrola dotarcia do adresata to mechanizmy, które pozwolą również na ponowne wysłanie danych w przypadku utraty. TCP jest dopełnieniem dla protokołów warstw niższych, które nie sprawdzały spójności danych. To dzięki kontroli tego protokołu możemy cieszyć się prawidłowo wczytanymi stronami WWW, prawidłowo odebraną, kompletną pocztą elektroniczną czy bezbłędnie przesłanym zdjęciem. Jeżeli chodzi o usługi, gdzie liczy się tu i teraz, czyli czas rzeczywisty, z pomocą przychodzi UDP. Wyobraźmy sobie sytuację. Oglądamy mecz piłkarski w Internecie. W pewnym momencie na łączach zapanował natłok i nie dotarły do nas dwie klatki obrazu. Zawodnicy na ułamek sekundy zamarli i pobiegli dalej. Czy interesuje nas, żeby ktoś dosłał brakujące klatki? Oczywiście, nie. To już się wydarzyło, wręcz szkodliwe byłoby powracanie do tego. 4. Protokoły warstwy aplikacji W uproszczonym modelu TCP/IP, który jest przyjęty za obowiązujący w sieci Internet, warstwa aplikacji jest bezpośrednio nad warstwą transportową. To, co zostało odebrane od aplikacji użytkownika po wstępnym przygotowaniu przez protokoły warstwy aplikacji, trafia do transportu. A cóż to są za protokoły i do czego zostały powołane? Większość z ważnych usług sieciowych doczekało się standardowego traktowania danych przez nie przesyłanych, czyli po prostu protokołu. W warstwie aplikacji odbieramy dane od użytkownika po to, żeby na drugim końcu sieci przekazać je innemu użytkownikowi. Rzadko będzie tak, że korzystać oni będą z takich samych systemów i aplikacji. Dowolność w świecie oprogramowania nie powinna zakłócić im możliwości komunikacji. To dzięki standardowemu podejściu do danych wyznaczonemu przez protokół, różne aplikacje w ten sam sposób interpretują dane w nim przesłane. Przywołajmy kilka najpopularniejszych protokołów aplikacyjnych wraz z ich funkcjami: http protokół hypertekstowy do wyświetlania stron WWW, ftp protokół do przesyłania plików pomiędzy serwerem a klientem, telnet protokół zdalnego dostępu w trybie tekstowym do hostów z systemem linux lub unix, smpt protokół do wysyłania poczty elektronicznej przez użytkownika do serwera, pop3 protokół do odbierania poczty elektronicznej przez użytkownika od serwera, ntp protokół do synchronizowania czasu w sieci, snmp protokół do zarządzania urządzeniami sieciowymi. 8
Te i wiele innych protokołów zostały stworzone, żeby umożliwić dostęp do najpopularniejszych usług w sieci z wykorzystaniem przeróżnych systemów. To możliwość komunikacji w danym protokole determinuje możliwość skorzystania z określonej usługi. 5. Inne protokoły sieciowe Przywołane w tym rozdziale protokoły to tylko część z olbrzymiego wachlarza protokołów sieciowych wykorzystywanych na różnych warstwach modelu OSI/ISO. Pod adresem http://moopository.ideabirth.org/pictures/protocols.gif znajduje się plakat ilustrujący większą liczbę protokołów z dokonanymi podziałami na technologie, jakich dotyczą. Skupialiśmy się do tej pory na protokołach związanych z sieciami lokalnymi, omijając technologie dostępowe i transportowe w sieciach rozległych. Protokoły dostępowe z grupy DSL, ISDN czy Frame Relay będą raczej domeną teleinformatyków. Tajniki sieci ATM też daleko wykraczają poza zakres wiedzy niezbędnej dla technika informatyka. Mając jednak na co dzień do czynienia z różnymi technologiami, warto wiedzieć, do czego dany protokół służy i gdzie może być wykorzystywany. Bibliografia: 1. Halska B., Bensel P., Kwalifikacja E.13. Projektowanie lokalnych sieci komputerowych i administrowanie sieciami. Podręcznik do nauki zawodu technik informatyk. Część 1, Gliwice: Helion 2013. 2. Dye M.A., McDonald R., Ruf A.W., Akademia sieci Cisco. CCNA Exploration. Semestr 1 Podstawy sieci, Warszawa: Wydawnictwo Naukowe PWN 2011. Netografia: 1. Dipol Sp.J. Poradnik Instalatora WLAN http://www.dipol.com.pl/poradnik_instalatora_wlan_bib86.htm 9
10