Next: Symulacja i wizualizacja
Up: Wprowadzenie w tematykę pracy
Previous: Motywacje i cel pracy
  Contents
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:
- Ethernet -- sieć oparta na wymianie pakietów, w której medium komunikacyjnym
jest miedziany kabel;
- FDDI1.1 -- jest rodzajem sieci lokalnej wykorzystującej do przesyłania danych (zakodowanych
jako impulsy świetlne) włókna szklane. Sieć FDDI oparta jest na technice sieci
pierścieniowej z krążącym znacznikiem;
- ATM1.2 -- sieć oparta na kablach optycznych, charakteryzująca się bardzo dużą przepustowością,
używająca pakietów o stałej wielkości, oferująca usługi oparte na połączeniowym
trybie pracy.
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:
- wersja oryginalna (gruby ethernet) oparta na okablowaniu koncentrycznym
o dużej odporności na zakłócenia, pozwala na łączenie dość odległych od siebie
komputerów. Do podłączenia komputera wymagany jest dodatkowy sprzęt: nadajnik-odbiornik
(ang. transceiver) oraz adapter komputera;
- cienki ethernet o cieńszym okablowaniu charakteryzuje się niższym kosztem,
ale i mniejszą odpornością na zakłócenia elektromagnetyczne. Pozwala na połączenia
na krótszych odcinkach niż gruby ethernet. Podłączenie następuje bezpośrednio
do interfejsu sieciowego (karty sieciowej) komputera;
- skrętka -- najnowsza odmiana, nie wymagająca elektromagnetycznej
izolacji w postaci kabla koncentrycznego. W odróżnieniu od poprzednich wersji,
które pozwalają na połączenie biegnące od komputera do komputera, skrętka umożliwia
bezpośrednie połączenie każdego z komputerów wprost do koncentratora lub przełącznika
(ang. switch).
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:
- IP (Internet Protocol) -- podstawowy protokół definiujący mechanizm zawodnego
przenoszenia bez użycia połączenia. Oparty jest na adresach IP konfigurowanych
na komputerach w oprogramowaniu oraz na rutowaniu czyli przekazywaniu pakietów
pomiędzy podsieciami;
- ARP (Address Resolution Protocol) -- niskopoziomowy protokół służący do dynamicznego
odwzorowywania adresów IP na adresy sprzętowe. Ideą tego protokołu jest możliwość
uzyskania adresu sprzętowego komputera docelowego (w celu zaadresowania ramki
ethernetowej) poprzez wysłanie zapytania rozgłaszanego w sieci lokalnej;
- ICMP (Internet Control Message Protocol) -- protokół definiujący mechanizm
specjalnych komunikatów kontrolnych (traktowany jako wymagana część IP). Protokół
ten przenosi informacje istotne ze względu na poprawność działania sieci oraz
pozwala na autodetekcję i autokorekcję błędów konfiguracyjnych;
- UDP (User Datagram Protocol) -- protokół zapewniający podstawowy mechanizm
portów wykorzystywany przez programy użytkowe przy przesyłaniu datagramów do
innych programów użytkowych;
- TCP (Transmission Control Protocol) -- protokół udostępniający usługę przesyłania
danych niezawodnymi strumieniami.
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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:
- transmisja plików oraz działanie na plikach zdalnych,
- dostęp i działanie na zdalnych bazach danych,
- praca procesu użytkowego jako terminala zdalnego komputera,
- zarządzanie transmisją i wykonywaniem zadań obliczeniowych.
Figure:
Model ISO warstw oprogramowania sieciowego
|
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:
- warstwa fizyczna -- warstwa leżąca poza TCP/IP, realizowana przez
konkretne medium fizyczne łączące maszyny w sieci;
- warstwa interfejsu sieciowego -- najniższy poziom oprogramowania
TCP/IP, odpowiedzialny za przyjmowanie datagramów IP i przesyłanie ich poprzez
daną sieć;
- warstwa intersieci -- warstwa ta odpowiada za obsługę komunikacji
jednej maszyny z drugą. W tej warstwie zaimplementowany jest algorytm trasowania
oraz obsługa komunikatów kontrolnych i błędów zgodnych z protokołem ICMP;
- warstwa transportowa -- podstawowym zadaniem warstwy transportowej
jest zapewnienie komunikacji między jednym programem użytkownika a drugim. Warstwa
transportowa może regulować przepływ informacji, może też zapewniać niezawodne
przesyłanie: dane przychodzą bez błędów i w dobrej kolejności. Warstwa transportowa
musi umożliwiać jednoczesną obsługę kilku programów z warstwy programów użytkowych;
- warstwa programów użytkowych -- na tym poziomie użytkownicy wywołują
programy użytkowe, które mają dostęp do usług intersieci TCP/IP. Programy użytkowe
współpracują z jednym z protokołów na poziomie transportu i wysyłają lub odbierają
dane.
Figure:
Model warstwowy oprogramowania sieciowego TCP/IP
|
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
|
Figure:
Wzajemne zanurzenie pakietów protokołów
sieciowych
|
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. ):
- Klasa A -- pierwszy bit równy 0, siedem bitów przeznaczonych na identyfikację
sieci, 24 bity przeznaczone na adres maszyny. Klasa ta jest przeznaczona dla
dużych sieci, które mają ponad komputerów;
- Klasa B -- pierwsze dwa bity to 10, następne 14 bitów identyfikuje
sieć, 16 bitów przeznaczonych jest do identyfikacji komputera. Klasa jest przeznaczona
dla sieci, w których liczba komputerów leży w przedziale ;
- Klasa C -- pierwsze trzy bity to 110, następne 21 bitów przeznaczanych
jest na identyfikator sieci, 8 bitów identyfikuje komputer. Klasa jest przeznaczona
dla sieci obejmujących mniej niż maszyn;
- Klasa D -- pierwsze cztery bity to 1110. Klasa jest przeznaczona
jest do rozsyłania grupowego (pozostałe bity to adres rozsyłania grupowego);
- Klasa E -- pierwsze 5 bitów to 11110. Jest to klasa adresów zarezerwowana
na przyszłość.
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
|
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: Symulacja i wizualizacja
Up: Wprowadzenie w tematykę pracy
Previous: Motywacje i cel pracy
  Contents
Symulator protokołów sieciowych TCP/IP