Sieci  komputerowe 
Kompendium 

Karol Krysiak

Sieci komputerowe. Kompendium.

Włóż do koszyka

Więcej informacji


4. Warstwa Internetu [2].

4.1 Protokół IP.

Najważniejszą częścią warstwy Internetu jest protokół IP (Internet Protocol), jest to protokół transportowy sieci Internet.

Zadania protokołu IP:

-      definiowanie datagramu,
-      definiowanie schematu adresowania używanego w całym Internecie,
-      trasowanie (rutowanie) datagramów skierowanych do odległych hostów,
-      dokonywanie fragmentacji i ponownej defragmentacji  datagramów.

Cechy protokołu IP:

1.      IP protokołem bezpołączeniowym, tzn. nie ustanawia w żaden sposób połączenia i nie sprawdza gotowości odległego komputera do odebrania przesyłanych danych.

2.      IP jest protokołem niepewnym, tzn. nie zapewnia korekcji i wykrywania błędów transmisji.

Obie te funkcje musza być wykonane poprzez protokoły innych warstw.

Budowa datagramu IP.

 

bity

 

słowa

0

4

8

12

16

20

24

28     31

1

Wersja

IHL

Typ usługi

Długość całkowita

Nagłówek

2

Identyfikator

Flagi

Przesunięcie fragmentacji

3

Czas życia

Protokół

Suma kontrolna

4

Adres źródła

5

Adres przeznaczenia

6

Opcje

Uzupełnienie

7

DANE ...

 

Rys 4.1 Budowa datagramu IP.

Wersja            – [4 bity] – numer wersji protokołu IP. Opisana została wersja nr 4.

IHL                   – [4 bity] – (Internet Header Length) jest długością nagłówka w słowach. Minimalna wartość to 5.

Typ usługi     – [8 bitów] – TOS (Type of Service) opisuje jakość wymaganej usługi. Kolejne bity oznaczają:

                        0-2:      pierwszeństwo:

                                   111 – sterowanie siecią

                                   110 – sterowanie siecią wewnętrzną

                                   101 – CRITIC/ECP

                                   100 – natychmiastowe zastąpienie

                                   011 – zastąpienie

                                   010 – natychmiastowe

                                   001 – priorytet

                                   000 – program standardowy;

                        3:         opóźnienie,                  0 – normalne,   1- małe;

                        4:         wydajność,                  0 – normalna,   1 – wysoka;

                        5:         niezawodność,             0 – normalna,   1 – wysoka;

                        6-7:      zarezerwowane do użycia w przyszłości.

Długość całkowita – [16 bitów] – jest długością pakietu IP w bajtach (zawierającego nagłówek i dane).

Identyfikator     – [16 bitów] – wartość identyfikacyjna przypisana nadawanemu pakietowi przed fragmentacją (jeżeli miałaby ona miejsce). W przypadku fragmentacji określa ona przynależność fragmentu do datagramu.

Flagi                – [3 bity] – flagi sterujące:

                        bit nr 0:            - zarezerwowany, musi mieć wartość zero;

                        bit nr 1:  DF     - 0 – można fragmentować, 1- nie wolno fragmentować;

                        bit nr 2:  MF    - 0 – ostatnia fragmentacja, 1 - więcej fragmentacji.

Przesunięcie fragmentacji – [13 bity] – pole to wskazuje, do którego miejsca pakietu danych należy ten fragment. Przesunięcie fragmentu jest mierzone w jednostkach 8 bajtów (64 bitów). Pierwszy fragment ma przesunięcie równe zeru.

Czas życia      – [8 bitów] – TTL - pole to wskazuje maksymalny czas przebywania pakietu w Internecie (Time-to-Live).

Protokół           – [8 bitów] – pole to wskazuje numer protokołu warstwy wyższej, do którego zostaną przekazane dane z tego pakietu.

Suma kontrolna – [16 bitów] – suma kontrolna nagłówka. Ponieważ nagłówek ulega ciągłym zmianom (np. czas życia) jest ona obliczana i sprawdzana za każdym razem, gdy dany nagłówek jest przetwarzany.

Adres źródła   – [32 bity] – adres IP źródła danych.

Adres przeznaczenia – [32 bity] – adres IP komputera docelowego.

Opcje              – [długość pola jest zmienna] – mogą zajmować przestrzeń na końcu nagłówka IP.

Uzupełnienie   – [długość pola jest zmienna] – jeśli pole opcji nie zajmuje pełnego słowa to zostaje uzupełnione do 32 bitów.

Protokół IP jest na tyle uniwersalny, że zapewnia transport danych przez różnorodne strukturalnie sieci (np. Token Ring, X.25). Każdy rodzaj sieci ma określony maksymalny rozmiar pakietu MTU (Maximum Transmission Unit). W trakcie przekazywania danych, może się okazać, że MTU właściwy dla jednej z sieci, jest zbyt duży dla następnej. Zachodzi wtedy zjawisko fragmentacji pakietu. W tym momencie rolę zaczynają odgrywać pola identyfikator, przesunięcie fragmentacji oraz pole flagi w nagłówku datagramu.

Numer protokołu

            Pole protokół w nagłówku datagramu jest numerem protokołu, do którego mają zostać dostarczone dane z tego datagramu. Z numeru tego korzystają warstwy wyższe w celu identyfikacji protokołu, który zapewni dalszą obróbkę danych. W systemach Unixowych numery protokołów zapisane są w pliku /etc/protocols. Plik ten może wyglądać w podany poniżej sposób.

ip   0    IP   # internet protocol, pseudo protocol number

icmp 1    ICMP # internet control message protocol

igmp 2    IGMP # internet group multicast protocol

ggp  3    GGP  # gateway-gateway protocol

tcp  6    TCP  # transmission control protocol

pup  12   PUP  # PARC universal packet protocol

udp  17   UDP  # user datagram protocol

idp  22   IDP  # Internet Datagram Protocol

raw  255  RAW  # RAW IP interface

Tab 3.8 Plik /etc/protocols.

Druga kolumna zawiera numer protokołu. Najciekawsze dla nas są protokoły warstwy transportowej TCP i UDP, które zostaną omówione w następnym rozdziale pracy. Ponadto z IP korzysta również wiele innych protokołów, m.in. ICMP (zostanie omówiony w tym rozdziale).


4.2 Adresowanie IP.

Adresy wszystkich komputerów w Internecie są wyznaczane przez właściwości protokołu IP. Z rysunku 4.1 widzimy, że pola „Adres źródła” i „Adres przeznaczenia” składają się z czterech bajtów (oktetów) każde. Z tego wynika konstrukcja adresu Internetowego, który składa się z czterech liczb dziesiętnych z zakresu 0-255 przedzielonych kropkami. Można go również zapisać jako jeden ciąg 32 bitów lub też cztery ciągi po osiem bitów każdy, przedzielone kropkami.

Każdy taki adres można podzielić na dwie części:

-      część identyfikującą daną sieć w Internecie

-      część identyfikującą konkretny komputer w tej sieci.

Podział ten wynika z faktu, że każde przedsiębiorstwo, które otrzymuje adresy Internetowe do własnego wykorzystania, otrzymuje tylko jakiś wydzielony zakres tych adresów, określany mianem: przestrzeń adresowa.

Klasy adresów w TCP/IP:

Pierwotnie bity określające sieć i bity określające komputer były rozróżniane za pomocą tzw. klas adresów IP. Klasy były definiowane za pomocą kilku pierwszych bitów adresu. Na podstawie ich wartości oprogramowanie określało klasę adresu, a tym samym które bity odpowiadają za adres podsieci, a które za adres hosta.

0nnnnnnn.hhhhhhhh.hhhhhhhh.hhhhhhhh  -   klasa A

10nnnnnn.nnnnnnnn.hhhhhhhh.hhhhhhhh  -   klasa B

110nnnnn.nnnnnnnn.nnnnnnnn.hhhhhhhh  -   klasa C

1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  -   multicast

1111xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  -   adresy zarezerwowane

Tab. 4.1 Klasy adresów IP w Internecie.
         n – bit należący do adresu sieci,
         h – bit należący do adresu hosta.

W ten sposób, na podstawie wartości N pierwszego bajtu adresu IP możemy zdefiniować do jakiej klasy należy dany adres:

          N < 128               – klasa A

         128 < N < 191      – klasa B

         192 < N < 223      – klasa C

         224 < N < 239      – multicast

         N > 239                – adresy zarezerwowane

Adresy multicast są adresami transmisji grupowej, wykorzystywanymi przy np.: wideo-konferencjach.

Maska sieci, adres rozgłoszeniowy (broadcast):

W pewnym momencie rozwoju Internetu okazało się, że ten sposób przydzielania adresów sieci jest  bardzo nieekonomiczny. Dostępne klasy adresów zaczęły się bardzo szybko kurczyć. Wprowadzono system zwany: bezklasowym rutowaniem międzydomenowym CIDR (Classless Inter-Domain Routing). Pojawiło się pojęcie maski sieci. Maska sieci składa się podobnie jak adres IP z 4 bajtów, używana jest do wydzielenia części adresu odpowiadającej za identyfikację sieci i części odpowiadającej za identyfikację komputera z adresu IP. Poniżej zamieszczam ilustrację tej metody.

Adres IP:    212.51.219.50

Maska sieci: 255.255.255.192

Adres IP:    11010100.00110011.11011011.00110010

Maska:       11111111.11111111.11111111.11000000

Adres sieci: 11010100.00110011.11011011.00000000

Broadcast:   11010100.00110011.11011011.00111111

Adres sieci: 212.51.219.0

Broadcast:   212.51.219.63

Tab. 4.2 Wyznaczanie adresu sieci i  adresu rozgłoszeniowego.

Adres sieci tworzymy przepisując niezmienione wszystkie bity adresu IP, dla których odpowiednie bity maski mają wartość jeden. Resztę uzupełniamy zerami. Adres broadcast jest adresem rozgłoszeniowym sieci. Używa się go do jednoczesnego zaadresowania wszystkich komputerów w danej sieci (jest przetwarzany przez wszystkie komputery w sieci). Tworzymy go podobnie do adresu sieci, jednak dopełniamy jedynkami zamiast zerami.

Mając adres sieci i adres broadcast możemy łatwo wyznaczyć możliwy zakres numerów IP komputerów w danej sieci. Dla podanych powyżej adresów sieci i broadcast, komputerów w sieci mogą przyjmować adresy IP od numeru: 212.51.219.1 do 212.51.219.62.

Adres 212.51.219.50 z maską 255.255.255.192 możemy w skrócie zapisać 212.51.219.50/26. W tym przypadku ostatnia liczba oznacza ilość bitów o wartości jeden w masce.

Adresy specjalne, klasy nierutowalne.

Istnieją pewne adresy, których nie można wykorzystać do normalnych zastosowań (przydzielić ich komputerom). Dla danej sieci (przestrzeni adresowej) takim adresem jest adres sieci. W omawianym przykładzie tym adresem jest 212.51.219.0; adres ten symbolizuje całą sieć. Drugim takim adresem jest wyznaczony powyżej broadcast, czyli adres rozgłoszeniowy. Każdy datagram IP o tym adresie zostanie odczytany i przetworzony przez wszystkie komputery danej sieci. Adres sieci i broadcast zmieniają się w zależności od aktualnej przestrzeni adresowej.

Ponadto adresem specjalnego przeznaczenia jest adres: 0.0.0.0. oznacza on wszystkie komputery w Internecie. Często podczas odczytywania tablicy rutingu zastępowany jest on słowem: „default”.

Następnym adresem specjalnym jest 127.0.0.1, jest to adres pętli (loop-back address). Adres ten służy do komunikacji z wykorzystaniem protokołu IP z lokalnym komputerem (localhost). Jest to adres zawsze przypisany komputerowi, na którym właśnie pracujemy, ponieważ pakiety z takimi adresami nie powinny wydostawać się na zewnątrz komputera, nie powoduje to żadnych konfliktów.

Należy również pamiętać o adresach klasach adresów multicast i zarezerwowanych przedstawionych w Tab. 4.1, których też nie możemy wykorzystać do normalnych zastosowań.

Pewna grupa adresów została zarezerwowana do powszechnego wykorzystania. Można z wykorzystaniem tych adresów budować lokalne intranety (sieci IP świadczące takie same usługi jak Internet, ale dla pojedynczego przedsiębiorstwa). Adresy te czasem nazywane są adresami nierutowalnymi. Nazwa ta powstała, ponieważ pakiety z takich sieci nie powinny być przekazywane przez rutery. Wynika stąd, że możemy założyć sobie sieć przestrzenią adresową z takiego zakresu i sieć ta nie będzie widziana na zewnątrz w Internecie.

A   255.0.0.0         10.  0.0.0 -  10.255.255.255

B   255.255.0.0      172. 16.0.0 - 172. 31.255.255

C   255.255.255.0    192.168.0.0 - 192.168.255.255

Tab. 4.3 Zarezerwowane zakresy adresów IP.[13i]



4.3 Rutowanie datagramów IP.

Gdy host musi przesłać coś za pomocą protokołu IP, podejmuje decyzję o sposobie przekazania pakietu do warstwy niższej. Na podstawie adresu przeznaczenia pakietu (wykorzystując technologię omówioną powyżej) stwierdza, czy komputer docelowy należy do tej samej sieci. Jeżeli tak, to wysyła pakiet do sieci lokalnej. Znalezieniem adresu Ethernetowego (protokół ARP) i dostarczeniem pakietu do odpowiedniej stacji (protokół IEEE 802.3) zajmują się już protokoły warstwy niższej (warstwy dostępu do sieci). Jeżeli adres IP przeznaczenia nie należy do tej samej sieci, komputer źródłowy przesyła pakiet na adres lokalnej bramki.

Bramka (gateway) - wymiennie stosowane jest określenie ruter (router) - jest to urządzenie zapewniające łączność pomiędzy sieciami lokalnymi. Urządzenie to (najczęściej komputer) jest podłączone do przynajmniej dwóch różnych sieci i otrzymując pakiety z jednej z nich podejmuje decyzję, czy przesłać je do kolejnej (w przypadku większej ilości sieci – do której).

Tablica rutingu

W obu przypadkach (komputer lokalny, bramka) decyzja o losie datagramu IP podejmowana jest na podstawie tablicy rutowania. Tablica ta jest tworzona przez administaratora systemu lub przez protokoły rutujące. Adres każdego wysyłanego datagramu zostaje porównany z wpisami destination i genmask, a następnie na podstawie pozostałych wpisów zostaje podjęta decyzja co do dalszego losu datagramu IP.

Kernel IP routing table

Destination   Gateway       Genmask         Flags Metric Ref  Use Iface

212.51.219.0  0.0.0.0       255.255.255.192 U     0      0      0 eth0

127.0.0.0     0.0.0.0       255.0.0.0       U     0      0      0 lo

0.0.0.0       212.51.219.3  0.0.0.0         UG    1      0      0 eth0

Tab. 4.1 tablica rutingu.

Przykładowo, jeśli mamy wysłać dane do komputera o adresie IP 212.51.219.4 okazuje się, że adres ten pasuje do pierwszego wpisu. Adres przeznaczenia znajduje się w sieci 212.51.219.0 o masce 255.255.255.192. Wpis ten dotyczy w tym przypadku sieci lokalnej i okazuje się, że komputer docelowy jest w tej samej sieci. Następnie wyszukiwane jest pole Iface (interface), które mówi z jakiego interfejsu sieciowego (karty sieciowej) należy skorzystać, aby wysłać te dane. Jeżeli pole gateway ma wartość 0.0.0.0, to datagram jest bez żadnych zmian wysyłany przez podaną kartę sieciową. Jednak, gdy pole to ma wpisaną jakąś wartość, w ramce Ethernetowej adres przeznaczenia zamieniany jest na adres MAC bramki (routera). W momencie, gdy otrzyma on pakiet Ethernetowy z innym niż jego własny adresem IP, to w analogiczny do omówionego sposób przesyła datagram dalej.

Wpis postaci 0.0.0.0 oznacza wszystkie adresy IP. Znajduje się on najczęściej na końcu tablicy routingu, jeżeli poszukiwany adres nie pasował do żadnej z wcześniejszych sieci (wpisów w tablicy), to zostaje wysłany do domyślnej (default) bramki zapewniającej dostęp do sieci Internet dla danego komputera.

W polu flagi wpisy oznaczają:

-         U – dana trasa istnieje i do tej chwili nie było z nią żadnych kłopotów.

-         G – dany wpis dotyczy bramki,

-         H – wpis dotyczy pojedynczego komputera,

-         D – wpis został zmieniony przez protokół kontrolny ICMP.




4.4 Protokół ICMP[2].

Protokół ICMP (Internet Control Message Protocol) jest częścią warstwy Internetu, do swojego transportu wykorzystuje datagramy IP.

Pełni on następujące funkcje:

1.      Sterowanie przepływem danych – w przypadku, gdy komputer docelowy transmisji IP nie nadąża za obróbką przychodzących datagramów IP, ICMP wysyła komunikat Source Quench, po którym nadawca czasowo wstrzymuje transmisję.

2.      Wykrywanie nieosiągalnych miejsc przeznaczenia – jeśli komputer docelowy nie odpowiada system, który wykrył problem wysyła do nadawcy komunikat Destination Unreachable. Jeśli komunikat ten jest wysyłany przez ruter, oznacza, że ruter nie może wysyłać pakietów do danego komputera. Może to nastąpić w dwóch przypadkach:

W momencie, gdy komunikat ten jest wysyłany przez host, może to oznaczać, że:

3.      Przekierowywanie ścieżek – jeśli komputer, do którego dotarł datagram IP uzna, że właściwszą bramką będzie inny komputer z tej samej sieci, wysyła komunikat Redirect wskazujący na ten właśnie komputer (musi znajdować się w tej samej sieci). Po otrzymaniu takiego komunikatu nadawca aktualizuje swoją tablicę rutingu.

4.      Sprawdzanie zdalnego hosta – odbywa się podczas wywołania komendy ping. Wysyłany jest komunikat Echo Message, po otrzymaniu którego komputer docelowy musi odpowiedzieć. Jeśli tego nie zrobi, uznawany jest za nieosiągalny.

5.      Jeśli jakiś datagram, podczas przechodzenia przez ruter osiągnie zerowy limit „czasu życia” (Time-to-Live) jest usuwany. Do komputera źródłowego danego datagramu wysyłany jest komunikat ICMP Time-exceeded.

Protokół ten jest bardzo ważnym protokołem kontrolnym w Internecie. Obsługuje on większość sytuacji awaryjnych i informuje o nich zainteresowane hosty. Bardzo często wykorzystywany jest przy rozwiązywaniu wszelakich typów problemów przez używanie popularnych komend ping i traceroute (w systemach Windows komenda tracert) zaimplementowanych w większości sieciowych systemów operacyjnych.

Format komunikatu Destination Unreachable Message

( podany za RFC 792 definiującym ICMP)

0                   1                   2                     3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code |            Checksum                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| unused                                                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Internet Header + 64 bits of Original Data Datagram           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

 

Wiadomość wysyłana wewnątrz datagramu IP na adres docelowy pobrany z orginalnego datagramu.

Pola ICMP:

Type - 3

Code

0 = net unreachable - sieć nieosiągalna
1 = host unreachable - host (komputar) nieosiągalny
2 = protocol unreachable - host docelowy nie obsługuje protokołu warstwy wyższej
3 = port unreachable - port nieosiągalny
4 = fragmentation needed and DF set - gdy datagram nie może być sfragmentowany w celu dostarczenia do sieci docelowej
5 = source route failed - gdy datagram nie może być dostarczony w wyniku problemów z rutingiem lub odłączenia sieci docelowej

Checksum

Suma kontrolna.

Internet Header + 64 bits of Data Datagram

Nagłówek datagramu na który odpowiadamy oraz 64 bity pola danych.

Podsumowanie typów wiadomości i wartości pola code

0 Echo

0

3 Destination Unreachable

0 = net unreachable;
1 = host unreachable;
2 = protocol unreachable;
3 = port unreachable;
4 = fragmentation needed and DF set;
5 = source route failed.

4 Source Quench

0

5 Redirect

0 = Redirect datagrams for the Network.
1 = Redirect datagrams for the Host.
2 = Redirect datagrams for the Type of Service and Network.
3 = Redirect datagrams for the Type of Service and Host

8 Echo

0

11 Time Exceeded

0 = time to live exceeded in transit;
1 = fragment reassembly time exceeded.

12 Parameter Problem

0 = pointer indicates the error.

13 Timestamp

0

14 Timestamp Reply

0

15 Information Request

0

16 Information Reply

0




4.5 Urządzenia pracujące w warstwie Internetu [1].

Ruter.

Ruter (router) nazywany również bramką (gateway) jest urządzeniem sprzęgającym sieci, funkcjonującym w warstwach fizycznej, łącza danych i sieciowej modelu ISO/OSI. Ruter jest zaawansowanym urządzeniem do łączenia ze sobą poszczególnych segmentów sieci i zwiększania jej rozmiarów. Jest urządzeniem konfigurowalnym, pozwala na sterowanie przepustowością sieci oraz na pełną izolację segmentów sieci. Potrafi przekazywać dane pomiędzy sieciami opartymi na różnych technologiach. W sieciach rozległych dane przekazywane są pomiędzy konkretnymi węzłami, po drodze przechodzą przez wiele węzłów pośrednich i mogą podróżować różnymi trasami. Router jest jednym z takich węzłów, ma za zadanie przesyłania danych jak najlepszą i najszybszą drogą.

Pracuje w warstwie sieciowej modelu referencyjnego OSI co oznacza, że potrafi odczytywać adresy z poszczególnych pakietów tak, aby znać ich miejsce przeznaczenia. Procedura dostarczania pakietów bliżej ich miejsca przeznaczenia nosi nazwę przekierowywania (rutowania) pakietów. Do kierowania danych używana jest tzw. tabela (lub tablica) routingu, która zawiera informacje o sąsiadujących routerach, sieciach lokalnych oraz ich stanie. Na podstawie tych danych wyszukiwana jest optymalna droga dla danego pakietu. Tablica routingu może być statyczna – aktualizowana ręcznie przez administratora sieci, lub dynamiczna – aktualizowana automatycznie przez oprogramowanie sieciowe. Zaletą drugiego rozwiązania jest to, że w razie dużego ruchu oprogramowanie może zmienić tablice routingu tak, aby pakiety omijały powstały zator.

Routery mogą być także wykorzystywane jako „zapora ogniowa”, zabezpieczając sieć przed nieautoryzowanym dostępem. Przy odpowiedniej konfiguracji wszyscy użytkownicy sieci lokalnej korzystają z Internetu, natomiast pozostali użytkownicy Internetu maja ograniczony dostęp do sieci lokalnej.

Ponadto ruter można wykorzystać jako urządzenie tłumaczące adresy sieciowe (Network Address Translation - NAT), którego funkcje zostały częściowo zaimplementowane np. w systemie operacyjnym Linux jako IP-masquerading (maskarada, maskowanie adresów IP). Działanie NAT polega na umożliwieniu przedostawania się pakietów z sieci lokalnej  o adresach z zakresu nierutowalnego (lub innych) do Internetu. Każdy z pakietów z sieci lokalnej ma zamieniany adres źródłowy na adres rutera wykonującego funkcję NAT. W ten sposób komputery w sieci lokalnej są niewidoczne z Internetu. Można powiedzieć, że cała sieć jest reprezentowana przez ruter.


Sieci  komputerowe 
Kompendium 

Karol Krysiak

Sieci komputerowe. Kompendium.

Włóż do koszyka

Więcej informacji