next up previous contents
Next: Symulacja i wizualizacja Up: Wprowadzenie w tematykę pracy Previous: Motywacje i cel pracy   Contents

Sieci komputerowe i protokoły komunikacyjne

W dzisiejszych czasach komputery dotarły niemal do każdej dziedziny życia. Obserwuje się zależność podwajania wydajności i zasobów (pamięci masowej i podręcznej) typowego komputera. Wraz ze wzrostem liczby komputerów i ilości gromadzonych na nich informacji, pojawiła się potrzeba łączenia oddzielnych maszyn w sieci komputerowe. Pozwoliło to na korzystanie ze wspólnych danych, udostępnianie urządzeń peryferyjnych.

Kolejnym krokiem było łączenie pomiędzy sobą sieci lokalnych. Wymagało to opracowania sieciowych protokołów komunikacyjnych. W latach siedemdziesiątych opracowano nowy, udoskonalony zestaw protokołów sieciowych. Zestaw ten stał się trzonem TCP/IP. W 1978 roku zestaw był na tyle kompletny i spójny, że mógł zostać ogłoszony światu.

Początek lat osiemdziesiątych uważa się za datę powstania Internetu. W 1982 roku Departament Obrony USA utworzył sieć DDN, zaprojektowaną jako coś w rodzaju centralnego obszaru dla rozproszonych sieci tworzących Internet. Rok później, Departament Obrony wydał oświadczenie akceptujące TCP/IP jako zestaw protokołów obowiązujących w Internecie.

Internet, nazywany także intersiecią, łączy ze sobą sieci fizyczne o różnych architekturach, narzucając zbiór konwencji korzystania z sieci, umożliwiający wzajemną współpracę połączonych komputerów.

Sieć fizyczną (lokalną) można określić jako zestaw urządzeń komputerowych połączonych wspólnym medium komunikacyjnym. Sieci lokalne mogą posiadać różną architekturę. Najbardziej znane architektury to:

Największą popularnością spośród technologii sieciowych cieszy się jak na razie Ethernet. Technologia ta została opracowana na początku lat siedemdziesiątych w laboratoriach Xerox PARC. W 1978 roku Xerox Corporation, Intel Corporation i Digital Equipment Corporation opracowały standard Ethernetu. Został on opublikowany jako standard IEEE (Institute for Electrical and Electronic Engineers) o numerze 802.3. Ze względu na swą popularność technologia ta zyskała wiele odmian:

Wszystkie odmiany oparte są na tej samej pakietowej technologii komunikacyjnej. W technologii ethernetowej sprzęt nie wspiera niezawodnego przenoszenia danych -- nadawca nie jest informowany o tym, czy pakiet został dostarczony. Gdy komputer odbiorca zostanie wyłączony, pakiety skierowane do niego będą po prostu gubione w sieci.

Komunikacja w sieci Ethernet oparta jest na wymianie pakietów o ustalonym formacie. Pakiet przenoszony przez Ethernet nazywany jest ramką ethernetową. Jedną z podstawowych informacji przenoszonych przez ramkę jest adres sprzętowy odbiorcy, na podstawie którego komputer odbierający ramkę rozpoznaje, że ramka została skierowana właśnie do niego.

Adresy ethernetowe są adresami sprzętowymi. Są to 48-bitowe adresy przypisane na stałe do interfejsów sieciowych. Producenci interfejsów wykupują zakresy adresów ethernetowych od IEEE (instytucja zajmuje się m. in. zarządzaniem i przydzielaniem adresów ethernetowych) i przypisują je po kolei kolejnym egzemplarzom kart. Dzięki temu żadne dwie karty interfejsu nie mają tego samego adresu ethernetowego.

Aby dowolne dwa komputery połączone w sieci mogły się ze sobą komunikować, niezbędne jest określenie zasad przebiegu komunikacji i przesyłania danych. Zbiór takich zasad nazywany jest protokołem komunikacyjnym.

Protokół komunikacyjny, wspólny dla współdziałających rozmówców, musi być określony w sposób jednoznaczny, wykluczający możliwość jakichkolwiek niejasności i nieporozumień. Takie określenie nazywamy specyfikacją protokołu i wymaga ono użycia bardziej precyzyjnych narzędzi niż język potoczny. Wśród metod specyfikacji protokołów przeważają te, związane z pojęciem automatu o skończonej liczbie stanów.

Wśród ogromnej liczby protokołów wykorzystywanych do komunikacji w sieciach, na szczególną uwagę zasługują protokoły z rodziny TCP/IP. Jest to rodzina protokołów, na których opiera się wiele sieci lokalnych oraz Internet. W skład tej rodziny wchodzą między innymi protokoły:

Zadania stawiane przed protokołami są tak rozległe, że zdecydowano się na implementację wielowarstwową. Protokoły korzystają z usług udostępnianych i obsługiwanych przez inne protokoły -- np. pakiety jednego protokołu mogą wymagać przenoszenia przez sieć wewnątrz pakietu innego protokołu. Na tej podstawie mówi się o poziomie danego protokołu. Pakiety protokołów niskopoziomowych podróżują przez sieć bezpośrednio w ramkach ethernetowych, im wyższy poziom protokołu tym większa liczba pakietów innych protokołów musi obudowywać pakiet podczas podróży przez sieć.

Opublikowano model warstwowy protokołów sieciowych (nazywany modelem ISO-OSI), opracowany z przeznaczeniem dla sieci lokalnych. Zbudowany jest on z siedmiu warstw.

  1. Warstwa fizyczna (ang. physical layer) -- umożliwia przesyłanie pojedynczych bitów między dwiema lub wieloma stacjami sprzężonymi bezpośrednio medium komunikacyjnym (np. kablem). Zarówno jednostką usług, jak i jednostką protokołu tej warstwy jest bit, a dostępne usługi obejmują przesłanie ciągu bitów z zachowaniem ich sekwencji. Istnieje możliwość wykrywania nieprawidłowości transmisji przez odbiorcę (dyskwalifikacja bitu) oraz wykrywania stanów specjalnych łącza. Większość parametrów tej warstwy zależy od rodzaju użytego łącza fizycznego.
  2. Warstwa łącza danych (ang. link layer) -- zapewnia prawidłową transmisję informacji między stacjami sprzężonymi bezpośrednio łączem fizycznym. W szczególności zapewnia ona wykrywanie, a często też korygowanie błędów powstałych w warstwie fizycznej. Jeśli łącze sprzęga wiele stacji, to protokoły tej warstwy muszą zapewnić bezkolizyjny dostęp do łącza.
  3. Warstwa sieciowa (ang. network layer) -- zapewnia utworzenie drogi (lub dróg) transmisji informacji między stacjami końcowymi przy użyciu systemów pośrednich (węzłów). Droga ta może prowadzić przez odcinki łączy lub całe podsieci o bardzo zróżnicowanych charakterystykach.
  4. Warstwa transportu (ang. transport layer) -- oddziela wyższe warstwy od problemów przesyłania informacji między procesami w stacjach końcowych, zapewniając bezbłędną transmisję z wymaganymi charakterystykami, takimi jak przepustowość, stopa błędów, opóźnienia transmisyjne. W tym celu może być konieczne skorygowanie charakterystyk usług sieciowych. Warstwa transportowa optymalizuje użycie usług sieciowych tak, aby wymagane warunki techniczne spełnić w sposób możliwie najbardziej ekonomiczny, uwzględniając koszt usług sieciowych.
  5. Warstwa sesji (ang. session layer) -- rozszerza usługi warstwy transportowej o środki umożliwiające synchronizację dialogu i zarządzanie wymianą danych między jej usługobiorcami. Ustala, który z partnerów ma prawo nadawania, by zapewnić jednoznaczność działań, a także określa czy komunikacja jest naprzemienna, czy równoczesna w obu kierunkach. Warstwa sesji umożliwia też definiowanie tzw. punktów synchronizacji oraz wymuszanie odtworzenia, tj. powrotu obu uczestników dialogu do jednoznacznego dla nich stanu określonego przez taki punkt synchronizacji.
  6. Warstwa prezentacji (ang. presentation layer) -- zapewnia przekształcenie używanej w poszczególnych stacjach postaci informacji na pewną jednorodną postać. Przekształcenie dotyczy wyłącznie syntaktyki, a nie semantyki informacji. Na tym poziomie możliwa jest także kompresja informacji bądź jej zaszyfrowanie.
  7. Warstwa zastosowań (ang. application layer) -- jest to warstwa najwyższa, bezpośrednio oferująca całość usług komunikacyjnych procesom użytkowym. Wyróżnione i szczegółowo opracowane zadania tej warstwy to przede wszystkim:

Figure: Model ISO warstw oprogramowania sieciowego
\resizebox*{0.4\columnwidth}{!}{\includegraphics{warstwyISO.ps}}

Przedstawiony model (rys. [*]) powstał w wyniku prac komitetów standaryzacji. Innym modelem warstw oprogramowania sieciowego jest model realizowany przez oprogramowanie rodziny protokołów TCP/IP (rys. [*]). Powstał on w oparciu o badania prowadzone równolegle z tworzeniem protokołów. Jest to model pięciowarstwowy -- TCP/IP jest zorganizowane w cztery koncepcyjne warstwy stanowiące nadbudowę nad piątą warstwą sprzętu:

Figure: Model warstwowy oprogramowania sieciowego TCP/IP
\resizebox*{0.9\columnwidth}{!}{\rotatebox{270}{\includegraphics{warstwytcpip.ps}}}

Na rys. [*] oraz [*] przedstawiono zasady realizacji modelu warstwowego TCP/IP oraz przykładowe zależności pomiędzy najbardziej popularnymi protokołami TCP/IP.

Figure: Realizacja modelu warstwowego w TCP/IP
\resizebox*{1\columnwidth}{!}{\rotatebox{270}{\includegraphics{warstwyTCPIP-dzialanie.ps}}}

Figure: Wzajemne zanurzenie pakietów protokołów sieciowych
\resizebox*{0.5\textwidth}{!}{\rotatebox{270}{\includegraphics{protocols.ps}}}

Podstawowym protokołem w rodzinie TCP/IP jest protokół IP. Definiuje on identyfikację komputerów niezależną od sprzętu oraz steruje przepływem pakietów przez sieć. Podstawową informacją identyfikującą komputer na poziomie fizycznym jest adres sprzętowy -- w przypadku TCP/IP jest to 32-bitowy adres IP. W odróżnieniu od adresu sprzętowego adres IP jest adresem niezależnym od sprzętu, nadawanym i przechowywanym przez oprogramowanie. Adresy IP podawane ludziom zapisuje się w postaci czterech liczb dziesiętnych oddzielonych kropkami. Każda z tych liczb odpowiada jednemu oktetowi adresu IP. Przykładowo, adres w postaci bitowej 10000000 00001010 00000010 00011110 jest zapisywany jako 128.10.2.30.

Każdy adres można traktować jako parę (identyfikator sieci, identyfikator maszyny). W obszarze sieci lokalnej adresy IP wszystkich komputerów charakteryzują się jednakowym prefiksem identyfikatora sieci, którego długość zależy od klasy adresu. Klasa adresu IP jest określana przez pięć najstarszych bitów (rys. [*]):

Figure: Klasy adresów IP
\resizebox*{1\textwidth}{!}{\rotatebox{270}{\includegraphics{klasyip.ps}}}

W celu umożliwienia komunikacji pomiędzy różnymi sieciami lokalnymi, sieci są łączone maszynami z wieloma interfejsami sieciowymi i adresami IP (nazywanymi ruterami), których zadaniem jest między innymi wyznaczanie trasy dla pakietów przeznaczonych do innych sieci lokalnych. Proces znajdowania trasy i przesyłania pakietów do innych sieci nazywany jest rutingiem lub rutowaniem. Aby mieć podstawę do wyznaczania trasy dla pakietu na podstawie adresu odbiorcy, ruter musi posiadać pewien zestaw danych charakteryzujących topologię sieci w jego otoczeniu. Zestaw takich danych nazywany jest tablicą rutingu.

Figure: Przykład łączenia sieci fizycznych za pomocą ruterów
\resizebox*{0.7\textwidth}{!}{\rotatebox{270}{\includegraphics{rutery.ps}}}

Protokół IP implementuje warstwę intersieci w modelu warstw oprogramowania sieciowego TCP/IP. Większość protokołów z rodziny TCP/IP korzysta w sposób pośredni lub bezpośredni z protokołu IP.


next up previous contents
Next: Symulacja i wizualizacja Up: Wprowadzenie w tematykę pracy Previous: Motywacje i cel pracy   Contents
Symulator protokołów sieciowych TCP/IP