Sieci komputerowe Karol Krysiak |
![]() |
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.
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.
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).
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.
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.
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.
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]
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).
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.
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.
( 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.
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 Host8 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
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 Karol Krysiak |
![]() |