01.doc

(1031 KB) Pobierz
Rozdział X

 

Rozdział 1. ¨ Protokoły komunikacyjne              41



Rozdział 1.
Protokoły komunikacyjne

W przybliżeniu 30 lat temu zaprojektowane zostały protokoły komunikacyjne pozwalające łączyć pojedyncze stacje robocze w sieci lokalne (LAN). Komputery i inne urządzenia, rozsiane na stosunkowo niewielkim obszarze, mogły dzięki temu komunikować się ze sobą, udostępniając swoje zasoby (takie jak na przykład drukarki czy duże dyski twarde).

Ten oraz kolejny rozdział omawiają protokoły komunikacyjne, regulujące sposób komunikowania się i wymieniania informacji między pojedynczymi komputerami i innymi urządzeniami sieciowymi. Każdy z tych protokołów mieści się w odpowiedniej warstwie modelu OSI (Open Systems Interconnection). Zanim ktokolwiek zacznie definiować, implementować czy testować zasady bezpieczeństwa, musi posiadać solidną wiedzę na temat podstawowych protokołów. W rozdziałach tych opisane zostaną zasady odnoszące się do protokołów TCP/IP, ARP, UDP, ICMP, IPX, SPX, NetBIOS oraz NetBEUI.

Krótka historia Internetu

W latach 60. ARPA (Department of Defense's Advanced Research Projects Agency), później DARPA, zapoczątkowała budowę eksperymentalnej sieci dużego zasięgu (WAN), która w krótkim czasie pokryła teren Stanów Zjednoczonych. Zadaniem ARPANET, bo tak ją nazwano, było połączenie instytucji rządowych, naukowych i laboratoriów, dzięki czemu mogły one wymieniać ze sobą pliki i pocztę elektroniczną oraz dzielić, drogie wówczas, zasoby systemowe. Nie minęło wiele czasu, a DARPA zdała sobie sprawę z możliwości, jakie stwarza rozprzestrzenienie sieci na cały świat.

W latach 70. DARPA finansowała ARPANET i kierowała dalszym jego rozwojem, starając się utworzyć szkielet, na którym miały opierać się technologie sieciowe. Rezultatem tych działań był zestaw protokołów TCP (Transmission Control Protocol) oraz IP (Internet Protocol). Uproszczone wersje protokołów zostały przez DARPA udostępnione, niewielkiej jeszcze wtedy, społeczności sieciowej w celu rozpowszechnienia. Pierwszą eksperymentalną platformą tego projektu był BSD UNIX używany w University of California. W tym celu DARPA założyła przedsiębiorstwo Bolt Beranek and Newman, Inc. (BBN), którego zadaniem była pomoc w opracowaniu zestawu TCP/IP dla BSD UNIX.

Technologia ta pojawiła się mniej więcej w czasie, gdy wiele różnych organizacji opracowywało własne sposoby łączenia komputerów w sieci. Od stycznia 1983 roku wszystkie komputery podłączone do ARPANET-u używały TCP/IP jako protokołu komunikacyjnego. W 1989 roku w CERN (Conseil Europeén pour la Recherche Nucléaire) narodził się WWW (World Wide Web). Głównym celem pomysłu było ułatwienie komunikowania się fizyków z całego świata, które miano osiągnąć przy użyciu dokumentów hipertekstowych. W tym czasie dokumenty hipertekstowe tworzone były za pomocą wstawienia do zwykłego dokumentu specjalnych znaczników otoczonych nawiasami kątowymi (< >). Znaczniki używane były do oznaczenia logicznej budowy tekstu, na przykład do wyróżnienia tytułu, nagłówków czy paragrafów. Na tej podstawie w krótkim czasie powstał nowy język, przy użyciu którego programiści mogli tworzyć odpowiednio sformatowane dokumenty. Język ten otrzymał nazwę Hypertext Markup Language (HTML). W lutym 1993 NCSA (National Center of Supercomputing Applications) na University of Illinois opublikowało legendarną już przeglądarkę — Mosaic. Za pomocą tej przeglądarki użytkownicy mogli oglądać odpowiednio przygotowane dokumenty HTML w postaci graficznej.

W tym czasie istniało około 50 serwerów Webowych udostępniających archiwa dokumentów HTML, przeznaczone do przetworzenia na postać graficzną przez przeglądarkę. Zaledwie dziewięć miesięcy później ich liczba wzrosła do 500. Rok później ogólna liczba serwerów WWW w 84 państwach przekroczyła 10 000 — wszystkie były podłączone do szkieletu ARPANET, nazywanego już w tym czasie Internetem.

Dziś Internet pozwala komunikować się milionom komputerów na całym świecie. Obecny szkielet Internetu może przenieść sporo ponad 45 megabitów danych na sekundę, czyli około 1000 razy więcej niż przepustowość oryginalnej ARPANET (przepustowość jest miarą zdolności kanału informacyjnego do przenoszenia informacji, mierzoną stosunkiem ilości informacji do czasu ich przesyłania, wyrażaną w bitach na sekundę).

IP — Internet Protocol

Zestaw TCP/IP jest oparty na czterowarstwowym modelu (patrz rysunek 1.1), w którym warstwa IP odpowiada za połączenie sieci tworzących Internet oraz przesyłanie danych między dowolnymi komputerami w sieci. Protokół IP zawiera informacje dotyczące adresowania oraz detekcji błędów, co pozwala na właściwe wyznaczanie trasy pakietów (pakiet to logiczna grupa informacji, złożona z nagłówka zawierającego informacje sterujące procesem transmisji pakietu oraz danych protokołów wyższej warstwy). Urządzenie sieciowe, takie jak router, po przyjęciu pakietu odczytuje nagłówek, na jego podstawie stara się ustalić najlepszą trasę pakietu. Po modyfikacji nagłówka, pakiet jest wysyłany w dalszą drogę.

Rysunek 1.1.

Cztery warstwy modelu TCP/IP

Nagłówki pakietów zawierają informacje sterujące transmisją pakietu, jak również inne użyteczne dane. Informacje te mogą zostać skopiowane, zmodyfikowane lub podmienione przez hakerów.

Jednym z podstawowych zadań protokołu IP jest umożliwienie bezpołączeniowego transportowania danych przez Internet w postaci datagramów. Datagram może zostać opisany jako logiczna grupa informacji, wysyłana przez warstwę sieciową medium komunikacyjnego. Datagramy IP są podstawowymi jednostkami danych przesyłanych Internetem. Dodatkową własnością datagramów IP jest możliwość dzielenia ich na części (fragmenty) podczas transportu, co pozwala wykorzystywać łącza transmisji o różnych rozmiarach ramek.

Każdy pakiet IP składa się z następujących bloków informacji (patrz rysunek 1.2).

Rysunek 1.2.

Pakiet IP

Wersja.Wersja protokołu IP.

Długość. Rozmiar nagłówka datagramu mierzony w 32-bitowych słowach.

Typ usługi (ToS). Określa sposób obsługi datagramu przez protokół wyższej warstwy (na przykład TCP lub UDP).

Rozmiar pakietu. Rozmiar całego pakietu IP mierzony w bajtach.

Identyfikator. Liczba pozwalająca połączyć w całość fragmenty datagramu.

Flagi. 3-bitowe pole, w którym pierwszy bit określa, czy pakiet może zostać podzielony na fragmenty. Drugi informuje, czy pakiet jest ostatnim fragmentem. Ostatni nie jest używany.

Przesunięcie fragmentu. Położenie danych fragmentu liczone w bajtach od początku danych pakietu przed fragmentacją. Informacja ta ułatwia prawidłową rekonstrukcję pakietu.

Time-to-Live (TTL). Specjalny licznik, którego wartość jest zmniejszana przez każde urządzenie sieciowe (głównie przez routery). Gdy jego zawartość osiągnie zero, pakiet nie będzie dalej transmitowany, a nadawca zostanie poinformowany, że pakietu nie można dostarczyć. Taki sposób postępowania zabezpiecza przed wędrowaniem pakietów w nieskończoność.

Protokół. Kod protokołu wyższej warstwy.

Suma kontrolna nagłówka. Suma wszystkich 16-bitowych słów nagłówka IP policzona modulo 216. Przed jej wyliczeniem wartość tego pola wynosi 0. Po odebraniu pakietu pole to jest liczone ponownie i porównywane z oryginalną wartością. Suma kontrolna nagłówka pozwala wykryć ewentualne uszkodzenia nagłówka pakietu.

Adresy źródła i przeznaczenia pakietu. Adresy IP nadawcy oraz odbiorcy pakietu.

Opcje. Dodatkowe informacje dotyczące na przykład bezpieczeństwa.

Dane. Pole zawierające dane pakietu lub jego fragmentu.

Szczególnie interesującymi informacjami zawartymi w datagramie IP są: adres nadawcy i odbiorcy datagramu, opcje oraz dane.

Porównajmy przykładowe zrzuty nagłówków pakietów otrzymane za pomocą sniffera (patrz rysunek 1.3a oraz 1.3b).

Datagramy IP — transportowanie,
rozmiar i fragmentacja

Datagramy IP są podstawową jednostką transportową w Internecie. Datagram IP jest jednostką danych, przesyłaną między dwoma modułami IP. Datagramy te posiadają nagłówki z polami zawierającymi dane konieczne do właściwego wyznaczania trasy pakietu i wykorzystywane przez urządzenia sieciowe, takie jak routery (patrz rysunek 1.4).

Rysunek 1.3a.

Nagłówek pakietu IP wskazujący na to, że pakiet został wysłany przy użyciu protokołu ICMP (omawianego w dalszej części rozdziału)

Rysunek 1.3b.

Zawartość pakietu wskazuje na to, że jest on częścią sesji TCP

Rysunek 1.4.

Datagram IP

Należy zwrócić uwagę na to, że dane transportowane przez pakiet pełnią w nim rolę drugoplanową. W rzeczywistości pakiet może się obyć bez jakichkolwiek danych, są one do niego bowiem niejako „doklejane”. Najważniejszą rolę w pakiecie pełni jego nagłówek, gdyż to dzięki niemu jest możliwe dostarczenie informacji do celu, niesie też informacje dla protokołów wyższych warstw, pozwalając im na przykład połączyć dane doklejane do pakietów w użyteczną całość.

Nagłówek datagramu IP jest przydatnym źródłem zdobywania informacji, jak również prowadzenia kontroli.

Ważne jest, by zrozumieć sposób, w jaki datagram podróżuje do celu przez sieć. Oczywiście, aby datagram mógł przemierzać Internet, korzystając z fizycznych kanałów informacyjnych, musi mieć postać fizycznej ramki.

Przyjrzyjmy się teraz rzeczywistemu scenariuszowi transportowania datagramu, aby na jego przykładzie wytłumaczyć metody transmitowania datagramów (patrz rysunek 1.5). Załóżmy, że przedsiębiorstwo posiada trzy oddziały połączone z Internetem, wyposażone kolejno w sieć typu Ethernet, Token Ring oraz FDDI (Fiber Distributed Data Interface).

Rysunek 1.5.

Przykład rzeczywistego podróżowania datagramu

W sytuacji idealnej pakiet, podróżujący między dwoma oddziałami, mieści się w pojedynczej ramce w każdej sieci, która bierze udział w transmisji. Jednakże wiemy, że nie zawsze tak jest. Problem polega na tym, że wprawdzie dwa końce połączenia uzgad­niają ze sobą MTU (Maximum Transfer Unit — największy pakiet protokołu IP, jaki może zostać przetransportowany podczas konkretnego połączenia), nie oznacza to jednak, że pakiet o rozmiarze mniejszym niż MTU mieści się w ramce we wszystkich sieciach, przez które jest transmitowany. Różne typy sieci posiadają swoje własne limity rozmiaru ramek, na przykład MTU sieci Ethernet wynosi 1500, zaś dla FDDI — 4470. Z tego powodu, gdy pakiet jest transmitowany przez sieci o różnych rozmiarach ramek fizycznych, czasem okazuje się, że router lub bramka musi podzielić pakiet na mniejsze fragmenty, by odpowiadały one lokalnym parametrom sieci. U celu podróży pakiet taki jest z powrotem łączony w całość. Może jednak zaistnieć sytuacja, w której okazuje się, że pakietu nie da się podzielić, bo ma na przykład ustawiony bit „nie fragmentuj” (Don't Fragment). Wtedy pakiet zostanie porzucony, a nadawca otrzyma informację o zaistniałym błędzie.

Routery stają się podatne na specyficzne rodzaje ataków, bo to one są odpowiedzialne za dzielenie pakietów na fragmenty.

Adresy IP, klasy i maski podsieci

Komunikacja za pomocą Internetu byłaby prawie niemożliwa bez właściwego systemu adresowania. System obecnie używany opiera się na unikalnym adresie przydzielanym każdemu komputerowi podłączonemu do sieci. Aby zapobiec używaniu tego samego adresu przez różne komputery, wyznaczanie trasy między dwoma komputerami oparte jest na adresach przydzielonych z puli zarządzanej przez InterNetwork Information Center (InterNIC). InterNIC przydziela i kontroluje wszystkie adresy sieci używane w Internecie, należące do klas A, B i C. W klasie A 32-bitowych adresów sieciowych starsze 8 bitów przeznaczone jest na adres sieci, natomiast w klasach B i C są to kolejno 16 i 24 bity. Ten sposób przydzielania adresów jest używany od lat 70, ich zakresy przedstawiono na rysunku 1.6, zaś przykład adresu IP znajduje się na rysunku 1.7.

Rysunek 1.6.

Tabela klas adresów IP

Rysunek 1.7.

Przykładowy adres IP składający się z 4 bajtów (32 bitów), z których 3 przydzielono na adres sieci

Pierwszy oktet adresu (206) wskazuje na adres klasy C, a więc jest zbudowany według schematu network.network.network.host, któremu odpowiada maska bitowa 255.255.255.0. Oznacza to, że do rozróżnienia poszczególnych komputerów wewnątrz sieci pozostaje nam 8 bitów ostatniego oktetu. Te 8 ostatnich bitów rozpoznają urządzenia i oprogramowanie sieciowe w następujący sposób.

Bit:

1

2

3

4

5

6

7

8

 

Wartość:

128

64

32

16

8

4

2

1

= 255 (254 użyteczne adresy)

W przykładzie tym mamy jedynie 254 użyteczne adresy dla komputerów w sieci, gdyż 0 i 255 są zarezerwowane (0 to numer sieci, zaś 255 jest adresem rozgłoszeniowym).

We wczesnych latach 90. wprowadzono system CIR (Classless Interdomain Routing) z powodu wyczerpywania się wolnych adresów sieci klasy B i C. W uproszczeniu system ten polega na wyznaczaniu trasy nie tylko na podstawie adresu IP, lecz również za pomocą maski podsieci, co pozwala na podział dostępnej w sieci przestrzeni adresowej na kolejne podsieci oraz drastyczne zmniejszenie rozmiaru tablic routingu.

VLSM — krótka instrukcja tworzenia podsieci
i odczytywania adresu IP

Tworzenie podsieci oznacza dzielenie otrzymanego lub odziedziczonego adresu sieci na mniejsze, lecz powiązane ze sobą sieci fizyczne. VLSM (Variable-Length Subnet Masking) realizowany jest za pomocą rozprzestrzeniania informacji o podsieciach przy użyciu istniejących protokołów routingu (zagadnienie to zostanie dokładniej omówione w kolejnym rozdziale). Maska podsieci jest 32-bitową liczbą określającą podział sieci na adresy IP na poziomie bitowym.

Przykład 1.

Przyjrzyjmy się teraz przykładowi wykorzystania przydzielonego adresu IP dla sieci podłączonej do Internetu (patrz rysunek 1.8).

Rysunek 1.8.

Przykład 1 — Schemat budowy sieci

Dane: adres sieci 206.0.125.0 (adres klasy C)...

Zgłoś jeśli naruszono regulamin