Uploaded by pdkaminski

Sieci Komputerowe Scalone

advertisement
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
Podstawowe pojęcia, programowe i sprzętowe elementy tworzące
sieć komputerową, ramki, topologie sieci LAN, Internet.
Przez sieć komputerową rozumiemy zbiór połączonych komputerów i urządzeń, które mogą
komunikować się ze sobą z wykorzystaniem odpowiednich technologii i standardów. Sieci
komputerowe obejmują też wszystko to, co umożliwia urządzeniom komunikowanie się ze
sobą oraz współdzielenie zasobów (np. dysków, drukarek), w szczególności oprogramowanie
i protokoły komunikacyjne a także media transmisyjne (np. kable miedziane, światłowody).
W trakcie kursu będziemy rozważać głównie dwie kategorie sieci:
•
•
LAN (Local Area Networks) – sieci lokalne.
WAN (Wide Area Networks) – sieci rozległe.
Jako przybliżone kryterium rozróżnienia LAN od WAN (i innych podanych niżej kategorii)
przyjmuje się odległości między łączonymi komputerami. Na przykład komputery na jednym
piętrze lub na różnych piętrach w obrębie jednego budynku ewentualnie komputery w kilku
sąsiadujących budynkach łączone są z wykorzystaniem technologii i urządzeń
charakterystycznych dla sieci lokalnych (LAN). Sieci rozległe (WAN) to sieci obejmujące
większe obszary, np. województwa, państwa czy kontynenty. Sieci te są budowane z
wykorzystaniem na ogół innych technologii niż sieci LAN.
Kryterium odległości nie jest precyzyjne. Przyjęto jednak, że pewne technologie sieciowe
(omawiane dokładniej w dalszej części kursu), np. Gigabit Ethernet są charakterystyczne dla
sieci lokalnych, inne jak np. T1, E1 czy Frame Relay dla sieci rozległych.
Inne typy sieci (podział według kryterium odległości między komunikującymi się
urządzeniami):
Nanoscale – przedmiot obecnych badań i standaryzacji w ramach organizacji IEEE (P.1906.1),
zastosowanie w nanomedycynie.
NFC (Near Field Communication) – odległości rzędu centymetrów.
BAN (Body Area Network), WBAN (Wireless BAN), inna nazwa to BSN (Body Sensor Network)
– łączenie czujników, „wearable devices”.
PAN (Personal Area Network) – odległości rzędu centymetrów do kilku metrów. Technologie
bezprzewodowe takie jak IrDA, Bluetooth, Wireless USB oraz przewodowe jak USB, FireWire,
Thunderbolt.
NAN (Near-me Area Network) – komunikacja między urządzeniami bezprzewodowymi, które
są blisko siebie, np. między telefonami komórkowymi, które są na terenie dużego sklepu.
Ścieżka komunikacyjna między urządzeniami w jednej sieci NAN może jednak być długa i
może nawet obejmować technologie sieci WAN, np. jeśli do NAN należą telefony
zarejestrowane w różnych firmach telekomunikacyjnych.
SAN (Storage Area Network).
CAN – Campus Area Network, sieci kampusowe.
MAN (Metropolitan Area Network) – obejmuje obszar miasta, dużego kampusu.
Internet jest globalną siecią komputerową złożoną z wielu połączonych ze sobą sieci
komputerowych wykorzystujących protokół o nazwie Internet Protocol (w skrócie IP). Od
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
strony technicznej Internet oparty jest w zasadzie o cały zestaw (stos) protokołów, znanych
pod wspólną nazwą TCP/IP. Można też spotkać nazwę protokół TCP/IP, chociaż w
rzeczywistości jest to cały zestaw protokołów, który oprócz protokołu TCP oraz IP zawiera
jeszcze kilka innych. Od strony logicznej Internet można identyfikować z przestrzenią
adresową protokołu IP (są w użyciu dwie wersje: IPv4 i nowsza IPv6) – ponieważ urządzenia
podłączone do Internetu są identyfikowane przez przydzielony im przez administratora lub
automatycznie adres IP.
Na każdą sieć komputerową składają się sprzętowe oraz programowe elementy składowe.
Sprzętowe elementy składowe sieci komputerowych.
Podstawowymi elementami sprzętowymi są:
a) nośniki transmisji (media transmisyjne), np. kable miedziane, optyczne,
b) urządzenia dostępu do nośnika, np. karty sieciowe,
c) urządzenia wzmacniające, filtrujące i kierujące przesyłane sygnały, np. przełączniki
warstwy drugiej, routery.
Urządzenia transmisji to nośniki transportu sygnałów przesyłanych przez sieć. Są to na
przykład kable koncentryczne, tzw. skrętki, kable światłowodowe, ale też przestrzeń
(przesyłanie fal elektromagnetycznych: radiowych, mikrofal, światła).
Urządzenia dostępu do nośnika transmisji (karty sieciowe w komputerach, porty w
przełącznikach, interfejsy w routerach) są odpowiedzialne za formatowanie danych tak, by
nadawały się do przesyłania poprzez nośnik transmisji, umieszczanie tych danych w nośniku
transmisji oraz odbieranie odpowiednio zaadresowanych danych.
Dane przesyłane w sieciach komputerowych są dzielone na porcje, zwane pakietami. W sieci
Internet pakiety mają standardową strukturę – zgodną z tzw. protokołem IP (Internet
Protocol). Mówimy zatem o pakietach IP. W Internecie podstawowa porcja danych
przekazywana przez różne urządzenia to pakiet IP. Jednak pakiet IP jest na ogół przenoszony
w innej strukturze, zwanej ramką. W większości technologii sieciowych wykorzystywanych w
Internecie, pakiety IP są przenoszone ramkach. Ramka jest czymś w rodzaju koperty, która
zawiera w środku list – pakiet IP.
W sieci LAN urządzeniami, które umieszczają pakiety IP w ramkach, wysyłające i odbierające
ramki są karty sieciowe w komputerach. Analogiczne urządzenia w przełącznikach nazywają
się portami a w routerach – interfejsami.
Urządzenia wzmacniające, filtrujące i kierujące przesyłane sygnały.
Sygnały umieszczane w nośniku transmisji, np. sygnały elektryczne w kablu ulegają
zakłóceniom – tłumieniu i zniekształceniu.
Tłumienie to osłabienie siły sygnału, zniekształcenie to niepożądana zmiana kształtu przebiegu
czasowego.
Jednym ze sposobów przeciwdziałania tłumieniu jest jego unikanie poprzez ograniczenie
długości połączeń (kabli). Innym sposobem jest zainstalowanie urządzenia, które odczytuje
przesyłane sygnały, wzmacnia je i wysyła z powrotem do sieci.
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
Przeciwdziałanie zniekształceniom i ich skutkom polega na przestrzeganiu zaleceń
dotyczących nośnika (stosowanie odpowiedniego typu nośnika, instalacja zgodnie z regułami,
odpowiednie długości przewodów) oraz korzystaniu z protokołów obsługujących korektę
błędów transmisji.
Zadania filtrujące i kierujące sygnały spełniają takie urządzenia jak mosty (pomosty, bridges
już raczej nie używane), koncentratory (hubs) przełączniki (switches), punkty dostępowe
(access points), routery (routers), bramy (gateways). Będą dokładniej omówione w dalszej
części kursu.
Programowe elementy składowe sieci komputerowych.
Elementami programowymi sieci są:
a) protokoły komunikacyjne (sieciowe), określające sposoby komunikowania się
urządzeń i programów,
b) oprogramowanie komunikacyjne, implementujące protokoły,
c) programy poziomu sprzętowego, sterujące pracą elementów sprzętowych, np. kart
sieciowych.
Protokoły sieciowe są zestawami standardów i zasad obowiązujących przy przesyłaniu danych
przez sieć.
Oprogramowanie komunikacyjne to programy umożliwiające użytkownikom korzystanie z
sieci komputerowych np. program telnet, przeglądarki WWW, klienci (klienty) pocztowi,
oprogramowanie umożliwiające mapowanie dysków sieciowych itd.
Programy poziomu sprzętowego to sterowniki, programy obsługi, mikroprogramy
umożliwiające działanie takich urządzeń, jak karty sieciowe.
Pakiety i ramki (data packets, frames).
W sieciach komputerowych dane przesyłane są w porcjach zwanych pakietami. Jak już
wcześniej powiedziano, w sieci Internet wszystkie dane są przesyłane w pakietach zgodnych z
protokołem IP. Pakiety IP są też nazywane datagramami IP. Ze względu na to, że obecnie
wykorzystywane są dwie wersje protokołu IP: wersja 4 (IPv4) ooraz wersja 6 (IPv6), to można
spotkać określenie pakiety IPv4 albo IPv6. Obydwie te wersje nie są ze sobą kompatybilne (nie
są zgodne).
Sieć Internet jest siecią wielu połączonych ze sobą sieci komputerowych. Pakiety przesyłane
między komputerami podłączonymi do Internetu (mogą to być też telefony, tablety, drukarki,
dyski sieciowe, różne urządzenia tworzące IoT – Internet of Things, Internet Rzeczy) zwykle są
przekazywane między specjalnymi urządzeniami, które nazywają się routerami (routery,
rutery). Routery mogą być ze sobą łączone przy użyciu różnych technologii i urządzeń
transmisyjnych (kabli, światłowodów). W wielu technologiach sieciowych pakiety IP są
przesyłane w tzw. ramkach. Ramka przesyłana jest w postaci odpowiednio zakodowanych
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
bitów. Bity są kodowane na różne sposoby, na ogół jako określone impulsy elektryczne,
radiowe lub świetlne (w światłowodach).
Urządzenie zapewniające dostęp do nośnika (np. karta sieciowa) przesyła ramki jako zestawy
zakodowanych bitów.
Od strony logicznej wysyłany ciąg bitów (ramka) zawiera pewne informacje i może być
podzielony na porcje zwane polami.
Typowa ramka zawiera następujące pola:
•
•
•
•
•
ogranicznik początku ramki (jest to ustalony wzór bitów)
adres fizyczny odbiorcy (miejsca docelowego) MAC address, adres MAC
tzw. adres fizyczny nadawcy (źródła danych)
dane
ogranicznik końca ramki (sekwencja kontrolna ramki).
Ogranicznik początku ramki może być poprzedzony lub może zawierać tzw. preambułę, która
w pewnych technologiach sieciowych jest stosowana do synchronizacji nadajnika i odbiornika.
Wielkość pól określana jest w oktetach. Oktet to 8 bitowa porcja danych. Określenie
wprowadzono dla uniknięcia niejednoznaczności związanych z terminem bajt (niektóre starsze
komputery wykorzystywały bajty np. 9, 10 czy 12 bitowe).
Różne technologie sieciowe, np. Token Ring (już nie używana), Ethernet, FDDI, 802.11n,
wykorzystują różne formaty ramek i różne sposoby fizycznego adresowania komputerów.
Wstawienie danych do struktury ramki nazywa się kapsułkowaniem lub enkapsulacją. W
zależności od typu ramki mówi się o różnych sposobach kapsułkowania (enkapsulacji).
Uwaga: nie wszystkie technologie sieciowe wykorzystują ramki o wyżej podanej strukturze.
Topologie sieci lokalnych – wprowadzenie.
Znaczna część tego kursu będzie poświęcona sieciom lokalnym. W takich sieciach komputery
mogą być łączone według różnych topologii fizycznych i logicznych. Topologia fizyczna mówi
w jaki sposób połączone są fizycznie komputery, na przykład, jeśli połączenia są realizowane
tak jak na poniższym rysunku, to mówimy o fizycznej topologii gwiazdy.
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
Komputer 7
Komputer 1
Komputer 2
Koncentrator/
przełącznik
Komputer 6
Komputer 5
Komputer 3
Komputer 4
KONCENTRATOR = HUB, PRZEŁĄCZNIK = SWITCH
Jeśli komputery mogą wysyłać ramki między sobą tak, że ramka wędruje od komputera
wysyłającego tylko do komputera docelowego, to mówimy, że logiczna topologia to również
topologia gwiazdy. Tak budowane są sieci lokalne w różnych odmianach technologii Ethernet
z wykorzystaniem przełączników (switches).
Są jednak takie sieci, w których specjalny koncentrator przekazuje ramki po okręgu, np. jeśli
komputer nr 1 chce wysłać ramkę do komputera nr 5, to najpierw ramka przekazywana jest
do komputera 2, potem do komputera 3, potem do komputera 4 i na końcu do komputera 5.
W takim przypadku mówimy, że fizyczna topologia połączeń to gwiazda, ale logiczna topologia
to topologia pierścienia. Tak działały sieci lokalne budowane w technologii o nazwie Token
Ring (obecnie nie są używane).
Sieci budowane w technologii określanej nazwą FDDI są łączone fizycznie w pierścień
(właściwie jest to podwójny pierścień) a komunikacja między nimi odbywa się również na
zasadzie przekazywania ramek po okręgu, zatem logiczna topologia połączeń to również
pierścień.
Sieci lokalne budowane z wykorzystaniem starszych wersji technologii Ethernet
wykorzystywały fizyczną i logiczną topologię magistrali. W tej topologii wszystkie komputery
podłączone były do wspólnego kabla. Ilustruje to poniższy rysunek.
Komputer 1
Komputer 2
Komputer 3
Komputer 4
Komputer 5
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
Jeśli komputer 1 miał przekazać ramkę do komputera 4, to najpierw sprawdzał, czy przez kabel
żaden komputer nie nadaje swoich ramek, a następnie wprowadzał ramkę do kabla. Ramkę
„widzą” wszystkie komputery podłączone do wspólnego kabla, chociaż na ogół tylko komputer
docelowy pobiera całą ramkę. Ramka zawiera tzw. adres fizyczny MAC, po którym komputery
rozpoznają, czy ramka jest do nich kierowana.
Jeśli komputery wykorzystują jedną z odmian technologii Ethernet z wykorzystaniem
koncentratora (hub), a nie wspomnianego poprzednio przełącznika, wówczas topologia
fizyczna to topologia gwiazdy, ale topologia logiczna to topologia magistrali. Koncentrator
(hub) po otrzymaniu ramki na którymś z portów (tak nazywane są to gniazda połączeniowe w
koncentratorze) przesyła tę ramkę do wszystkich pozostałych portów, a zatem wszystkie
pozostałe komputery „widzą” ramkę tak jak w przypadku fizycznego połączenia w topologii
magistrali.
Są też topologie złożone, np. gdy kilka koncentratorów lub przełączników (do których są
łączone komputery w topologii gwiazdy) łączonych jest w gwiazdę z wykorzystaniem innego
koncentratora lub przełącznika. Jest to tzw. rozszerzona gwiazda.
Ważną i często wykorzystywaną topologią połączeń jest topologia hierarchiczna (wyjaśnienie
na wykładzie lub np. tu: http://wazniak.mimuw.edu.pl/index.php?title=SK_Modu%C5%82_1)
Inne wykorzystywane topologie to siatki (częściowe lub pełne).
Omówienie procesów zachodzących w trakcie komunikacji między
dwoma komputerami połączonymi do jednego przełącznika w
lokalnej sieci Ethernet.
Prześledźmy procesy zachodzące w trakcie przykładowej komunikacji między dwoma
komputerami przyłączonymi do przełącznika (switch) w technologii np. Fast Ethernet.
Każdy komputer (a właściwie każda karta sieciowa) w poniższej sieci posiada dwa adresy: 48bitowy adres MAC (przypisanym przez producenta karty sieciowej) oraz adres IPv4 (przypisany
ręcznie przez administratora lub przypisany dynamicznie przez serwer DHCP).
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
Internet
Komputer 1:
IP: 149.156.65.11
MAC: 68:1b:f2:51:7f:8a
Brama: 149.156.65.1
Adres serwera DNS:
149.156.200.200
Komputer 2
Router
(Brama domyślna):
IP2: 149.156.122.2
MAC2: 7c:1c:42:00:00:09
IP1: 149.156.65.1
MAC1: 7c:1c:42:00:00:09
Przełącznik
(switch)
Komputer 3
Komputer 4
Komputer 6
Komputer 5 (Server WWW):
IP: 149.156.65.15
MAC: 9f-2b-70-7c-67-fa
Brama: 149.156.65.1
Sieć 149.156.65.0, maska 255.255.255.0.
Załóżmy, że na komputerze numer 5 jest uruchomiony serwer WWW, który jest związany z
pewną (wymyśloną, w rzeczywistości nieistniejącą) nazwą domenową np.
www.komputer5.iiuj.edu.pl.
Komputer 5 (jego karta sieciowa) ma adres MAC 9f-2b-70-7c-67-fa oraz adres IP
149.156.65.15. Komputer 1 ma adres MAC 68:1b:f2:51:7f:8a oraz adres IP 149.156.65.11.
Prześledźmy co dzieje się w sieci, jeśli na komputerze 1 uruchomimy przeglądarkę WWW (np.
Mozilla Firefox lub Internet Explorer) i wpiszemy adres www.komputer5.iiuj.edu.pl.
Zadziała system DNS: komputer 5 skontaktuje się ze swoim serwerem DNS (np. o adresie
149.156.200.200) i zapyta jaki jest adres IP komputera związanego z nazwą domenową
www.komputer5.iiuj.edu.pl. Serwer DNS znajdzie odpowiedni adres w swoich zasobach (jeśli
nie znajdzie, to może się komunikować z innymi serwerami DNS – cały system DNS będzie
omówiony w późniejszej części kursu) i odeśle informację do komputera 1.
Przeglądarka utworzy komunikat (wg protokołu HTTP). Do komunikatu zostanie dodany
nagłówek (wg protokołu TCP), który zawiera m.in. tzw. port docelowy (standardowo serwery
WWW wykorzystują port o numerze 80) oraz port źródłowy (przeglądarka wykorzystuje
porty dynamicznie przydzielane, zwykle o „wysokich” numerach). Komunikat razem z
dołączonym nagłówkiem TCP nazywa się segmentem TCP.
Następnie do segmentu TCP zostanie dodany nagłówek IP – w ten sposób powstanie pakiet
IP (inaczej: datagram IP). Nagłówek IP zawiera m.in. adres IP źródłowy (w tym przypadku
149.156.65.11) i adres IP docelowy (tutaj 149.156.65.15).
Pakiet musi być przesłany w ramce. Do pakietu musi zostać dodany nagłówek ramki,
zawierający źródłowy adres MAC (w tym przypadku 68:1b:f2:51:7f:8a – komputer 1 tworzący
ramkę zna swój adres MAC) oraz docelowy adres MAC (w tym przypadku powinien to być
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
adres 9f-2b-70-7c-67-fa). Komputer 1 nie zna jednak adresu MAC komputera 5, zna tylko jego
adres IP. W wersji 4 protokołu IP (IPv4) do poznania adresu docelowego MAC wykorzystywany
jest protokół ARP – Address Resolution Protocol (ARP jest bardziej szczegółowo opisany w
oddzielnym punkcie poniżej).
Komputer 1 wysyła specjalną ramkę ARP Request (zapytanie ARP, ramka ta NIE zawiera w
sobie pakietu IP), która ma adres docelowy składający się z samych jedynek (48 jedynek: ff-ffff-ff-ff-ff). Adres ten nazywa się adresem rozgłoszeniowym.
Ramka ARP Request jest przesyłana przez przełącznik do wszystkich przyłączonych
komputerów (do wszystkich urządzeń podłączonych do przełącznika).
Ramka ta zawiera pytanie, które można byłoby przetłumaczyć tak: „Kto ma adres IP
149.156.65.15? Proszę podać MAC” (czyli zawiera pytanie o adres MAC komputera, którego
adres IP jest przesyłany w ramce ARP Request).
Każdy komputer przyłączony do przełącznika ma obowiązek odebrać ramkę wysłaną na adres
rozgłoszeniowy MAC. Jednak tylko komputer 5 odpowie na ARP Request (ponieważ tylko on
ma adres IP taki, jaki jest przesłany w pytaniu ARP Request). Odpowiedź to specjalna ramka
ARP Reply (odpowiedź ARP). Odpowiedź ARP jest wysyłana na adres MAC komputera 1 (skąd
komputer 5 zna ten adres?).
Po tym, jak komputer 1 pozna adres MAC komputera 5, może już zbudować ramkę
przeznaczoną do komputera 5. Ramka ta zawiera wcześniej zbudowany pakiet IP (który z kolei
zawiera segment TCP, który z kolei zawiera komunikat HTTP).
Ramka jest wysyłana do przełącznika, a przełącznik dostarcza ją tylko do komputera 5.
Uwaga: Przełącznik uczy się adresów MAC przyłączonych komputerów i routerów i
zapamiętuje w specjalnej tablicy przypisanie adresu MAC do konkretnego swojego portu
(gniazdka). Jeśli przełącznik dostanie ramkę ze znanym mu adresem MAC, to kieruje tę ramkę
tylko do odpowiedniego portu. Jeśli przełącznik dostanie ramkę z adresem docelowym MAC,
którego jeszcze nie zna, to wysyła kopię ramki do wszystkich swoich portów (z wyjątkiem tego,
na którym dostał ramkę).
Enkapsulacja (kapsułkowanie):
Nagłówek ramki Nagłówek IP
(zawiera m.in.
(zawiera m.in.
MAC źródłowy i adres IP
MAC docelowy) źródłowy i
docelowy) –
przeważnie 20
bajtów
Nagłówek TCP
(zawiera m.in.
numer portu
docelowy i
źródłowy) –
przeważnie 20
bajtów
Komunikat http
(na ogół
największa
część ramki)
Suma kontrolna
ramki (4 bajty)
Komputer 5 (a właściwie jego karta sieciowa) odbierze ramkę, zaglądnie do środka, sprawdzi
adres MAC docelowy (sprawdza jeszcze sumę kontrolną) i „wyjmuje” z ramki pakiet IP.
Sprawdza adres docelowy IP (czy jest to jego adres) i „wyjmuje” z pakietu segment TCP.
Sprawdza do którego portu należy przekazać zawartość (komunikat HTTP) i ostatecznie
„wyjmuje” komunikat http z segmentu i przekazuje do portu 80, na którym nasłuchuje serwer
WWW.
Serwer WWW skonstruuje odpowiedź – stronę WWW zapisaną z wykorzystaniem języka
HTML). Strona ta zostanie umieszczona w komunikacie http, który następnie musi być
przesłany do komputera 1. Mechanizm jest analogiczny jak poprzednio. Do komunikatu
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
dodawany jest nagłówek TCP (z portem źródłowym 80 i docelowym portem przypisanym do
przeglądarki WWW na komputerze 1) i tak powstaje segment TCP, następnie do segmentu
dodawany jest nagłówek IP i tak powstaje pakiet, następnie pakiet umieszczany jest w ramce
(tj. do pakietu dodawany jest nagłówek ramki oraz suma kontrolna) i ramka przesyłana jest z
komputera 5 do przełącznika, a stamtąd do komputera 1.
Uwaga. Powyższy opis jest nieco uproszczony. Pominięte zostały szczegóły działania systemu
DNS oraz szczegóły działania protokołu TCP. W rzeczywistości zanim zostanie przesłany
pierwszy segment TCP do komputera docelowego, komputery wykorzystujące ten protokół,
muszą zbudować tzw. połączenie TCP. Wymaga to przesłania trzech specjalnych segmentów.
Jeden od przeglądarki WWW do serwera, drugi od serwera do przeglądarki a trzeci znowu od
przeglądarki do serwera. W rzeczywistości więc cały proces odnalezienia adresu MAC na
podstawie adresu IP poprzez protokół ARP jest realizowany już na etapie budowania
połączenia TCP, a nie dopiero podczas przesyłania segmentu TCP zawierającego komunikat
HTTP. Szczegóły będą dokładnie wyjaśnione w dalszej części kursu.
Omówienie procesów zachodzących w trakcie komunikacji między
dwoma komputerami należącymi do różnych sieci lokalnych (tj.
rozdzielonych co najmniej jednym routerem).
Komunikacja między komputerami w jednej sieci lokalnej została opisana w poprzednim
punkcie. Jeśli jednak komputer docelowy jest w innej sieci (czyli źródło i cel są oddzielone
przynajmniej jednym routerem), to komunikacja przebiega nieco inaczej.
Wszystko do skonstruowania pakietu IP włącznie działa tak samo, jednak ramka z pakietem IP
będzie przesyłana nie wprost do komputera docelowego, tylko do routera.
Komputer tworzący ramkę musi więc wykorzystując protokół ARP (i ramkę ARP Request)
poznać MAC adres routera, czyli swojej bramy domyślnej (default gateway). Stąd wniosek, że
elementem konfiguracji komputera powinno być podanie mu nie tylko jego adresu IP, ale
również adresu IP bramy domyślnej.
Router (brama) po otrzymaniu ramki „wyjmuje” z niej pakiet IP, zagląda do nagłówka i
sprawdza jaki jest adres docelowy IP. Na podstawie tego adresu oraz na podstawie specjalnej
tablicy routowania, router wyznacza router następnego skoku i konstruuje i wysyła do niego
nową ramkę, w której umieszcza przesyłany pakiet IP. Ramka to może mieć inną budowę niż
ramka, która dotarła do routera, ponieważ połączenie z routerem następnego skoku może
wykorzystywać inną technologię sieciową. Różne technologie sieciowe wykorzystują ramki o
różnych strukturach. Jednak pakiet IP, przenoszony przez różne ramki, nie zmienia się
(pomijając pewne techniczne zmiany w nagłówku pakietu IP – zmiany te będą omówione w
dalszej części kursu).
Kolejny router wyznacza router następnego skoku, tworzy nową ramkę itd. aż pakiet dotrze w
kolejnych ramkach do docelowej sieci i do docelowego komputera.
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
Model ISO OSI
Aby ułatwić zrozumienie procesów zachodzących podczas komunikowania się komputerów
między sobą, a także by ułatwić projektowanie protokołów komunikacyjnych, utworzono kilka
modeli działania sieci komputerowych. Jeden z najpopularniejszych modeli – o nazwie OSI
(Open Systems Interconnection) – został utworzony przez Międzynarodową Organizację
Normalizacyjną (ISO International Organization for Standarization w Genewie).
Model ISO OSI stanowi model referencyjny (wzorcowy). Jest to globalny standard określania
warstw funkcjonalnych otwartych (wielosystemowych) połączeń sieciowych.
Model OSI dzieli procesy zachodzące podczas komunikacji w sieci na siedem funkcjonalnych
warstw, zorganizowanych według naturalnej sekwencji zdarzeń.
Numer warstwy
7
6
5
4
3
2
1
Nazwa warstwy
Aplikacji
Prezentacji
Sesji
Transportu
Sieci
Łącza danych
Fizyczna
Każdą z warstw można rozpatrywać w aspekcie dwóch zasadniczych funkcji: odbierania i
nadawania.
1) Warstwa fizyczna (physical layer) opisuje standard połączenia fizycznego, np.
przekształcanie danych w strumień impulsów elektrycznych. Warstwa 1 określa też
charakterystyki wydajnościowe nośników (medium transmisyjnego) i zakłada, że są
one spełnione, ale same media transmisyjne pozostają poza dziedziną jej
zainteresowania (czasem określane są terminem warstwa zerowa).
2) Warstwa łącza danych (data link layer) – w warstwie tej rozważa się grupowanie
danych wejściowych (z warstwy fizycznej) w bloki zwane ramkami danych (data
frames). Ramka zawiera informacje umożliwiające pomyślne przesłanie danych do
miejsca docelowego (na ogół poprzez sieć lokalną), m.in. adresy fizyczne MAC.
W warstwie 2 opisane są również pewne mechanizmy kontroli poprawności transmisji
(FCS).
Uwaga. W zasadzie w modelu ISO nie występuje termin „ramka”, tylko „jednostka
danych usług warstwy fizycznej”, ale termin ramka jest powszechnie stosowany.
3) Warstwa sieci (network layer) jest „odpowiedzialna” za określenie trasy przesyłania
danych między komputerami poza lokalnym segmentem sieci LAN. Do warstwy tej
przypisuje się protokoły trasowane takie jak IP (ze stosu protokołów TCP/IP), IPX
(Novell IPX/SPX), DDP (AppleTalk). Protokoły te wykorzystują adresowanie logiczne. W
warstwie tej opisuje się komunikację komputerów znajdujących się w różnych
segmentach sieci przedzielonych routerem.
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
4) Warstwa transportu (transport layer) obejmuje kontrolę błędów i przepływu danych
poza lokalnymi segmentami LAN. Opisuje się w niej protokoły zapewniające
komunikację procesów uruchomionych na odległych komputerach (korzysta z nich np.
oprogramowanie klient/serwer), w tym komunikację z zapewnieniem niezawodności
dostarczania danych. Protokoły tej warstwy to np. TCP oraz UDP (z TCP/IP), SPX (Novell
IPX/SPX), ATP, NBP, AEP (AppleTalk).
5) Warstwa sesji (session layer) obejmuje zarządzanie przebiegiem komunikacji podczas
połączenia między komputerami (sesji). Rzadziej rozważana. Pierwotnie przeznaczona
do opisu obsługi zdalnego dostępu przy pomocy terminala.
6) Warstwa prezentacji (presentation layer) obejmuje kompresję, kodowanie i translację
między niezgodnymi schematami kodowania oraz szyfrowanie.
7) Warstwa aplikacji (application layer) obejmuje interfejs między aplikacjami a usługami
sieci.
Określona sesja komunikacyjna nie musi wykorzystywać protokołów ze wszystkich warstw
modelu.
Przy nadawaniu dane kierowane są od warstwy 7 do 1, w każdej z warstw następuje
opakowanie danych (kapsułkowanie, enkapsulacja) – dołączenie nagłówka protokołu danej
warstwy.
Przy odbiorze następuje proces odwrotny. Z punku widzenia implementacji protokołu jednej
warstwy program jednej strony komunikującej się otrzymuje te same obiekty co program
drugiej strony.
Przy opisie zestawów protokołów używane są też inne modele warstwowe (najczęściej z
mniejszą liczba warstw, ale na ogół z odpowiednikami w modelu OSI). Jeden z takich
prostszych modeli – model TCP/IP – jest często wykorzystywany przy opisie zestawu (stosu)
protokołów TCP/IP, czyli zestawu protokołów wykorzystywanego w sieci Internet. W modelu
TCP/IP nie ma warstwy prezentacji ani warstwy sesji, ponieważ zestaw TCP/IP nie zawiera
żadnych protokołów, które można byłoby przypisać do tych warstw. Nieco inny model
„dydaktyczny” został zaproponowany przez Tannenbauma. Modele te są porównane na
poniższym rysunku.
Model ISO/OSI, model TCP/IP i model dydaktyczny:
Numer
Nazwa warstwy modelu Nazwa warstwy w modelu Nazwa warstwy w modelu
warstwy
OSI
TCP/IP
dydaktycznym
modelu OSI
proponowanym przez
Tannenbauma
7
Aplikacji
Aplikacji
Aplikacji
6
Prezentacji
5
Sesji
4
Transportu
Transportu
Transportu
3
Sieci
Intersieci
Sieci
2
Łącza danych
Interfejsu sieciowego
Łącza danych
1
Fizyczna
Fizyczna
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
Zestaw (stos) protokołów TCP/IP
Zestaw protokołów określany skrótowo jako TCP/IP składa się z protokołów, które stanowią
obecnie podstawę działania Internetu. TCP/IP stał się standardem w komunikacji sieciowej we
wszystkich popularnych systemach operacyjnych.
Można spotkać określenie stos protokołów TCP/IP.
Oto protokoły z zestawu TCP/IP: TCP, UDP, IP, ARP, ICMP, IGMP.
Warstwa TCP/IP
Aplikacji
Transportu
Internetowa
(sieci, intersieci)
Dostępu do sieci
(interfejsu
sieciowego)
Warstwa modelu OSI
Aplikacji
Prezentacji
Sesji
Transportu
Sieci
Łącza danych
Fizyczna
Protokoły warstwy aplikacji to między innymi: FTP (File Transfer Protocol), TELNET, DNS
(Domain Name System) związany z usługą DNS (Domain Name Service)
Na warstwę aplikacji składają się komponenty programowe sieci, wysyłające i odbierające
informacje przez tzw. porty TCP lub UDP (z warstwy transportu).
Protokoły warstwy transportu to TCP oraz UDP. Będą dokładniej omówione w dalszej części
kursu.
Najważniejszy protokół warstwy internetowej to IP. Obecnie są wykorzystywane dwie
wersje IP: wersja 4 (IPv4) oraz wersja 6 (IPv6). Na początku tego kursu będziemy się
zajmować wyłącznie IPv4, IPv6 zostanie szczegółowo omówiony później.
Inne ważne protokoły to ICMP (m.in. komunikaty o problemach), IGMP (komunikacja
grupowa), ARP (tłumaczy adresy między warstwą internetową a warstwą interfejsu
sieciowego, czasami zaliczany do tej ostatniej warstwy).
Dane przechodząc w dół stosu protokołów TCP/IP są opakowywane i otrzymują
odpowiedni nagłówek. Przyjęto, że porcje danych przesyłane w dół stosu mają różne
nazwy:
•
Komunikat to porcja danych utworzona w warstwie aplikacji i przesłana do warstwy
transportu.
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
•
•
•
•
Porcja danych utworzona przez oprogramowanie implementujące protokół TCP w
warstwie transportu nazywana jest segmentem. Segment zawiera w sobie komunikat z
warstwy aplikacji.
Porcja danych utworzona przez oprogramowanie implementujące protokół UDP w
warstwie transportu nazywana jest datagramem UDP.
Datagramem nazywana jest również porcja danych utworzona w warstwie internetowej
przez oprogramowanie implementujące protokół IP. Datagram IP zawiera w sobie
segment utworzony w warstwie transportu. Datagram IP bywa nazywany pakietem.
Porcja danych utworzona na poziomie dostępu do sieci nazywana jest ramką.
Uwaga. W bardzo popularnej na świecie (m.in. w Polsce) Akademii Sieciowej Cisco na ogół
terminem pakiet (packet) określa się datagram IP. Nie mówi się tam o datagramach IP, ale o
pakietach (lub pakietach IP). Jednak w niektórych polskich książkach dotyczących sieci
komputerowych można spotkać określenie pakiet na dowolną porcję danych utworzoną przez
oprogramowanie realizujące protokół dowolnej warstwy modelu TCP/IP. Z kolei w Akademii
Sieciowej Cisco i w wielu książkach taka dowolna porcja danych określana jest skrótem PDU –
Protocol Data Unit.
Przykładowa sekwencja zdarzeń przy wysłaniu danych – opis z
wykorzystaniem modelu warstwowego
1.
2.
3.
4.
5.
Aplikacja przesyła dane do warstwy transportu (oprogramowania realizującego
protokoły warstwy transportu).
Dalszy dostęp do sieci realizowany jest przez TCP albo UDP.
- TCP realizuje tzw. niezawodne połączenia i kontroluje przepływ danych zapewniając
niezawodne dostarczenie danych (nawet, gdyby zaginęły w sieci – wówczas zostają
przesłane jeszcze raz).
- UDP nie zapewnia niezawodności, ale jest szybszy.
Segment danych lub datagram UDP przesyłany jest do warstwy IP, gdzie protokół IP (a
właściwie jego implementacja) dołącza między innymi informacje o adresach IP źródła i
celu tworząc datagram IP (pakiet).
Datagram z IP przechodzi do warstwy interfejsu sieciowego, gdzie tworzone są ramki. W
sieci LAN ramki zawierają adres fizyczny (przypisany do karty sieciowej) otrzymany z
protokołu ARP. Protokół ARP będzie jeszcze szczegółowo omawiany w dalszej części
kursu.
Ramka przekształcana jest w ciąg sygnałów (odpowiadających bitom – według pewnego
systemu kodowania bitów), który zostaje przesłany przez sieć.
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
RFC
Oficjalne standardy internetowe są publikowane w tzw. RFC (Request for Comments).
Niektóre dokumenty RFC nie są standardami, ale pełnią funkcję informacyjną. Każdy
dokument RFC posiada swój numer – większe numery oznaczają nowsze dokumenty.
Ciekawostka: Prawie każdego roku 1 kwietnia są wydawane specjalne, humorystyczne
dokumenty RFC. Są one opublikowane razem z tymi poważnymi.
ARP (Address Resolution Protocol) – protokół rozpoznawania adresu
fizycznego
Opisany w RFC 826, 1122.
Uwaga – poniższe rozważania dotyczą tylko wersji 4 protokołu IP (IPv4). W wersji IPv6 protokół
ARP nie jest w ogóle wykorzystywany, zastępują go inne mechanizmy.
ARP stosowany jest w sieciach Ethernet (jeśli w warstwie sieci wykorzystywany jest protokół
IPv4), był też używany w sieciach Token Ring.
Zadaniem ARP jest odnalezienie adresu fizycznego MAC na podstawie adresu IP. Jeśli ma być
wysłany datagram IP (pakiet) na pewien adres IP, to musi być skonstruowana ramka
zawierająca odpowiedni adres MAC. Adres docelowy IP jest znany przez aplikację wysyłającą,
ale adres MAC na ogół nie. Adres IP jest znany wprost, gdyż np. w programie ftp wpisany został
przez użytkownika lub – częściej – adres ten jest uzyskiwany automatycznie na podstawie
wpisanej przez użytkownika nazwy domenowej (np. www.wsb-nlu.edu.pl) dzięki systemowi o
nazwie DNS. Adres MAC jest odnajdywany przez protokół ARP.
Ze względu na możliwość wymiany karty sieciowej w komputerze o określonym adresie IP ARP
musi być dynamiczny, tj nie może polegać na trwałych wpisach np. w plikach konfiguracyjnych.
ARP jest protokołem opartym na metodzie rozgłoszeniowej i zasadzie żądania i odpowiedzi.
ARP najpierw sprawdza w swojej pamięci podręcznej (cache) tablicę przyporządkowującą
adresy MAC adresom IP. Jeśli odpowiedni wpis nie zostanie znaleziony, wówczas zostaje
wysłana ramka tzw. ARP Request Message. Jest to ramka rozgłoszeniowa docierająca do
wszystkich węzłów (komputerów – kart sieciowych) fizycznego segmentu sieci, do którego
przyłączony jest nadawca. W ramce tej jest zapisane pytanie, które możemy przetłumaczyć
tak: „Kto ma adres ip 149.159.12.15? Proszę podać mi adres MAC”. Węzeł wysyłający
nazywany jest ARP requestor.
Możliwe są dwa przypadki:
1) W przypadku, gdy węzeł docelowy znajduje się w tym samym segmencie sieci lokalnej
(nie jest oddzielony od węzła źródłowego routerem), ARP requestor pyta wprost o to
kto ma docelowy adres IP. ARP responder odpowiada wysyłając ramkę ARP Reply pod
adres MAC, z którego przyszło żądanie. Adres ten jest znany, gdyż znajduje się w ramce
zapytania ARP. Węzeł wysyłający ARP Reply określany jest jako ARP responder. Po
wymianie ramek zarówno nadawca jak i odbiorca mają uaktualnione tablice w pamięci
podręcznej (cache).
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
2) W przypadku, gdy węzeł docelowy znajduje się w innym segmencie sieci (być może z
drugiej strony kuli ziemskiej) datagram musi być skierowany do domyślnego routera.
Na ogół adres IP domyślnego routera jest wpisany w konfiguracji TCP/IP. Zatem w
takim przypadku ARP requester pyta o to kto ma adres IP – i tu podaje adres IP routera
domyślnego. Router odpowiada wysyłając ramkę ARP respond i podaje swój adres
MAC. W przypadku, gdy w konfiguracji komputerów w sieci nie ma adresu IP routera
domyślnego można skorzystać z tzw. Proxy ARP, który będzie omówiony pod koniec
tego rozdziału.
Po otrzymaniu ARP Request uaktualniane są również pamięci podręczne cache ARP w
komputerach, które otrzymały tę ramkę, a które miały w pamięci podręcznej IP komputera,
który wysyłał żądanie. Takie uaktualnienie jest możliwe dzięki temu, że ramka ARP request
zawiera adres MAC i adres IP nadawcy. A zatem ważną metodą aktualizacji wpisów w pamięci
podręcznej ARP jest samo otrzymanie ramki ARP request.
Wpisy w pamięci podręcznej ARP są usuwane po okresie nieużywania rzędu kilku minut. W
przypadku użycia wpisu czas ten może wzrosnąć, lecz nie więcej niż pewna wartość np. 10
minut.
Tak jest w systemach Microsodft Windows – standardowy czas przechowywania wpisu to 2
min. Jeśli w tym czasie wpis jest używany (czyli były wysyłane datagramy pod adres IP z wpisu),
to czas ten jest zwiększany o kolejne 2 min. Limit górny to 10 min., po upływie tego czasu wpisy
w pamięci podręcznej ARP są czyszczone i procedura żądań i odpowiedzi jest powtarzana.
„Czas życia” wpisu można modyfikować ustawiając w sekundach wartości odpowiednich
wpisów w rejestrach systemu.
TCP/IP w Microsoft Windows pozwala na użycie statycznych wpisów w pamięci podręcznej
ARP, to jest takich, które są wpisane na trwałe poleceniem arp z opcją –s. Jednak ze względu
na to, że tablica odwzorowań IP w adresy MAC jest przechowywana w pamięci RAM, to i tak
przy wyłączaniu komputera wpisy przepadają i przy późniejszej inicjalizacji TCP/IP pamięć
cache jest pusta i należy ją zapisać od nowa.
Do sprawdzenia cache służy polecenie arp z opcją -r.
Struktura ramki ARP:
Typ sprzętu (2 oktety)
Typ protokołu (2 oktety)
Długość adresu sprzętu (1 oktet)
Długość adresu protokołu (1 oktet)
Kod operacji (2 oktety)
Adres sprzętu nadawcy (dla Ethernet 6 oktetów)
Adres protokołu nadawcy (dla IPv4 4 oktety)
Adres sprzętu docelowego (dla Ethernet 6 oktetów)
Adres protokołu docelowego (dla IPv4 4 oktety)
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
Przykładowe wartości:
Typ sprzętu:
1 – Ethernet 10 Mbps
6 – 802 Token Ring
15 – Frame Relay
16 – Asynchronous Transfer Mode (ATM)
Typ protokołu – dla IP wartość 0x0800.
Kody operacji:
1 – ARP Request
2 – ARP Reply
3 – RARP Request
4 – RARP Reply
Wykrywanie zduplikowanych adresów IP – „zbędny ARP”
Węzeł wysyła ARP Request z zapytaniem o swój własny adres (W Windows domyślnie 3 razy).
Jeśli ARP Reply nie nadejdzie, to znaczy, że w lokalnym segmencie nie ma konfliktu adresów.
Jeśli odpowiedź nadejdzie, oznacza to konflikt. Węzeł już skonfigurowany traktowany jest jako
węzeł z poprawnym adresem (węzeł zgodny, defending node), węzeł wysyłający „zbędny ARP”
jest węzłem konfliktowym (offending node).
Niestety węzeł konfliktowy wprowadza błąd w pamięci podręcznej ARP komputerów w całym
segmencie sieci. ARP Reply z węzła zgodnego nie naprawia sytuacji, gdyż ramka ARP Reply nie
jest ramką rozgłoszeniową i jest kierowana tylko do jednego komputera. Dlatego zawsze węzeł
zgodny wysyła ARP Request ze swoim adresem po wykryciu konfliktu.
Uwaga. Datagramy IP wysłane na w ramkach z niepoprawnym adresem MAC odbiorcy
przepadają. Co gorsze, protokół IP nie zapewnia niezawodnej dostawy datagramów i nie
spowoduje powtórnego przesłania datagramu w nowej ramce. Za niezawodność
odpowiedzialne są protokoły warstwy transportu.
Proxy ARP
Router ze skonfigurowanym mechanizmem Proxy ARP odpowiada na ramki ARP Request w
imieniu wszystkich węzłów – komputerów spoza segmentu sieci lokalnej (RFC 925). Może być
używany jest np. w sytuacji, gdy komputery w sieci nie mają ustawionego domyślnego routera
(domyślna brama, default gateway). Routery mogą mieć włączoną standardowo opcję Proxy
ARP, wówczas jeśli jakiś komputer wyśle ARP Request z adresem spoza danej sieci lokalnej
(zwykle to nie następuje), to router odpowie „w imieniu” komputera zewnętrznego.
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
Uzupełnienia (do przeczytania)
Technologie Ethernet
W rozdziale tym zostaną przedstawione technologie budowy sieci lokalnych określane czasem
wspólnym mianem Ethernet lub 802.3. Specyfikacje i parametry tych technologii są rozważane
na poziomie pierwszym i drugim modelu ISO OSI.
Historia i podstawy technologii określanych wspólnym mianem
Ethernet
Parę słów o historii sieci Ethernet
1. Jedna z pierwszych sieci lokalnych (1972 r.) to Ethernet PARC firmy Xerox (PARC – Palo Alto
Research Center), tzw. Ethernet I, opierający się na założeniach sieci do transmisji radiowej o
nazwie Aloha zaprojektowanej na Uniwersytecie Hawajskim.
Łączenie komputerów następowało w topologii magistrali, przewodami koncentrycznymi o
grubości ½ cala (12 mm) (tzw. gruby Ethernet, thick Ethernet). Połączenie między komputerem
a kablem wymagało użycia tzw. nadbiornika (transceiver) AUI (Attachment Unit Interface) oraz
specjalnego kabla AUI. Prędkość przesyłania 2,94 Mbps (mega bity na sekundę). Cechą
charakterystyczną tej sieci było to, że transmitery przed rozpoczęciem nadawania
nasłuchiwały. Dostęp do nośnika realizowany był na zasadzie CSMA (Carrier Sense, Multiple
Access – wielodostęp do nośnika z badaniem stanu nośnika).
2. Następny krok (1979 r.) – DIX Ethernet, (od Digital, Intel, Xerox), powszechnie znany jako
Ethernet II. Prędkość przesyłania wynosiła 10 Mbps.
Dostęp do nośnika realizowany był na zasadzie CSMA/CD (Carrier Sense, Multiple Access
with Collision Detection – wielodostęp do nośnika z badaniem stanu oraz wykrywaniem
kolizji). Taki sposób dostępu do nośnika jest charakterystyczny dla prawie wszystkich odmian
technologii Ethernet (z wyjątkiem tych najszybszych: 10Gbps i szybszych).
3. W lutym 1980 roku organizacja Institute of Electrical and Electronics Engineers (IEEE)
rozpoczęła prace nad Projektem 802 (skrót pochodzi prawdopodobnie od daty: rok 80, drugi
miesiąc), w którym zamierzano określić różne standardy sieciowe. Standard nazwany IEEE
802.3 określał działanie technologii sieciowej o ramkach nieco innych niż Ethernet II.
4. Kolejne kroki to popularny 100 Mbps (Fast Ethernet) oraz jego następca, popularny obecnie
1000 Mbps (Gigabit Ehternet), stosowany często do łączenia przełączników czy routerów. Są
też wersje szybsze: 10, 40, 100 Gigabit/s. Technologie ta wykraczają poza sieci lokalne, długość
połączeń może być rzędu kilkudziesięciu kilometrów.
6. Standard – 802.3-2012. Fragment z dokumentacji:
„IEEE Std 802.3u™ added 100 Mb/s operation (also called Fast Ethernet), IEEE Std 802.3x specified full
duplex operation and a flow control protocol, IEEE Std 802.3z added 1000 Mb/s operation (also called
Gigabit Ethernet), IEEE Std 802.3ae added 10 Gb/s operation (also called 10 Gigabit Ethernet),
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
IEEE Std 802.3ah™ specified access network Ethernet (also called Ethernet in the First Mile) and
IEEE Std 802.3ba added 40 Gb/s operation (also called 40 Gigabit Ethernet) and 100 Gb/s operation (also
called 100 Gigabit Ethernet). These major additions are all now included in and are superseded by IEEE Std
802.3-2012 and are not maintained as separate documents.”
Pełną dokumentację podzieloną na kilka części można pobrać stąd:
http://standards.ieee.org/about/get/802/802.3.html.
Odmiany 802.3 (Ethernet) różnią się między sobą nośnikami (np. kabel miedziany
koncentryczny, skrętka, kabel optyczny), sposobem kodowania bitów i innymi szczegółami.
Topologie połączeń komputerów w sieciach Ethernet
W najpopularniejszych w tej chwili odmianach – 100Mbps i 1Gbps oraz technologiach
wcześniejszych komputery mogą być łączone przy użyciu różnego rodzaju kabli miedzianych.
W sieciach Ethernet II podstawową topologią fizyczną i logiczną połączeń była magistrala.
Wszystkie komputery przyłączone były do wspólnego kabla. Wszystkie nasłuchiwały, czy
któryś nadaje, jeśli nie, to karta sieciowa może wysłać do kabla ramkę. Był realizowany
protokół CSMA/CD opisany poniżej.
W sieciach Fast Ethernet 100Mbps i 1Gbps topologia fizyczna jest na ogół typu gwiazdy. Jeśli
w środku gwiazdy znajduje się koncentrator (100Mbps), to topologia logiczna jest typu
magistrala (wszystkie komputery „słyszą” co ktokolwiek w sieci lokalnej wysłał). Jeśli w środku
gwiazdy jest przełącznik (100Mbps, 1Gbps), to topologia logiczna jest też typu gwiazdy.
Przełączniki przesyłają ramki tylko do jednego komputera a nie tak jak koncentratory do
wszystkich. Połączenia w sieci mogą być bardziej złożone, np. kilka „gwiazd” może być
połączonych przy użyciu przełączników lub koncentratorów. Połączenia mogą tworzyć drzewo
lub inną strukturę (z dublowaniem kluczowych elementów – będzie jeszcze o tym mowa w
dalszej części kursu).
CSMA/CD, domeny kolizji
Protokół CSMA/CD określa, że przed rozpoczęciem transmisji realizowane jest nasłuchiwanie.
Tylko wówczas, gdy przez kabel nie są przesyłane żadne dane, karta sieciowa wysyła w trybie
rozgłoszenia swoje dane.
Ramka nie ma znacznika końca. Między nadawaniem kolejnych ramek zachowuje się małe
odstępy (w Ethernet 10Mb i 100Mb odpowiada czasowi przesłania 96 bitów, czyli
odpowiednio 9,6 mikrosekundy i 0,96 mikrosekundy, w 1Gigabit Ethernet odstęp odpowiada
czasowi przesłania 512 bitów).
CSMA/CD obsługuje konflikty: gdy dwa lub więcej węzłów rozpocznie równocześnie wysyłanie
danych następuje kolizja (jeśli jest topologia magistrali lub karty pracują w trybie
półdupleksowym – patrz niżej).
Karta sieciowa potrafi wykryć kolizję. Po wykryciu kolizji karty sieciowe dodatkowo wysyłają
sygnał zakłócenia informujący o konflikcie. Jeśli kolizja zostanie wykryta w momencie
nadawania tzw. preambuły (najczęściej), wówczas preambuła nadawana jest do końca (jako
zakłócenie sygnałów kolizyjnych). Jeśli kolizja wykryta jest w momencie nadawania ramki,
wówczas wysyłany jest 32 bitowy sygnał zakłócający.
Następnie karty sieciowe uczestniczące w konflikcie przerywają transmisję na czas losowy, po
upływie którego następuje ponowienie próby transmisji. W kolejnych próbach czas ten rośnie.
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
W prawidłowo skonstruowanych sieciach Ethernet kolizje mogą wystąpić co najwyżej do 64
oktetu ramki. Późniejsze kolizje świadczą na ogół o zbyt długich połączeniach, które skutkują
tym, że ramka dociera zbyt późno do komputerów odległych od nadawcy. Skrajne komputery
w sieci nie powinny być oddalone od siebie więcej niż określają to dokładne przepisy dla każdej
z odmian technologii Ethernet.
Zasada 4 repeaterów
W starszych technologiach Ethernet, działających w fizycznej topologii magistrali, aby nie
dopuścić do występowania tzw. późnych kolizji stosowana była tzw. zasadę 4 repeaterów,
zwaną też zasadą 5-4-3 (czasem 5-4-3-2-1). Pięć sekcji sieci, cztery wzmacniaki lub
koncentratory, trzy sekcje sieci zawierające hosty (dwie sekcje nie zawierają komputerów,
całość stanowi jedną domenę kolizji).
Ze względu na możliwość występowania kolizji mówi się o tzw. domenach kolizji –
fragmentach sieci, w których może wystąpić kolizja ramek.
Powszechne zastosowanie w Ethernecie techniki przełączania pełnodupleksowego (użycie
pełnodupleksowych przełączników) zmniejsza lub likwiduje rywalizację o dostęp do medium
(zmniejsza domenę kolizji).
Większość technologii Ethernet zakłada możliwość pracy urządzeń tzw. półdupleksowych, w
których nadawanie i odbieranie jest realizowane naprzemiennie przy pomocy tych samych
kabli. Jednak obecnie na ogół stosowane są urządzenia pracujące w trybie pełnodupleksowym
(full-duplex), w którym dane wyjściowe i wejściowe przesyłane są między urządzeniem
przełączającym a stacją roboczą za pomocą osobnych par przewodów. W tym, przypadku nie
występują kolizje. Technologia 10Gb Ethernet i szybsze nie dopuszczają pracy w trybie
półdupleksowym, zatem w tej technologii kolizje nie występują.
W warstwie fizycznej (PHY) mogą być używane różne rodzaje kodowania bitów oraz
różne rodzaje nośników. Przykłady odmian technologii Ethernet (różnych
implementacji PHY):
10Base-2 (Thin Ethernet) – cienki kabel koncentryczny (coaxial), maksymalna długość
pojedynczego kabla – 185m, topologia magistrali, 10Mbps.
10Base-5 (Thick Ethernet) – gruby kabel koncentryczny, maksymalna długość jednego odcinka
– 500m, topologia magistrali, 10Mbps.
10Base-T (UTP) – CAT5 UTP, maks. długość 100m, topologia gwiazdy, przyłączanie do
koncentratora (hub) i przełącznika (switche’a) , 10Mbps.
10Base-FL – światłowód (fiber-optic), maks. długość 2000m, 10Mbps.
100Base-TX – CAT5 UTP, maks. długość 100m, topologia gwiazdy, przyłączanie do
koncentratora (hub) i przełącznika (switche’a) , 100Mbps.
100Base-FX – światłowód wielomodowy, maks. długość 2000m, 100Mbs.
1000Base-SX – Gigabit Ethernet, światłowód do 550 m.
1000Base-LX – Gigabit Ethernet, światłowód do 3 km.
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
1000Base-CX – Gigabit Ethernet, STP lub kabel koncentryczny do 25 m.
1000Base-T – Gigabit Ethernet, UTP do 100m.
10GBase-SR - 10 Gb/s przeznaczony dla światłowodów wielomodowych o maksymalnym
zasięgu od 26 do 82 m (przy 850nm). Umożliwia także zasięg 300 m na nowych światłowodach
wielomodowych 2000MHz/km.
10GBase-LX4 - stosując modulację typu 'WDM' umożliwia zasięg 240 lub 300 m za pomocą
światłowodów wielomodowych (przy 1310nm) lub 10 km za pomocą jednomodowych.
10GBase-LR - Ethernet za pomocą światłowodów jednomodowych na odległość 10 km.
10GBase-ER - Ethernet za pomocą światłowodów jednomodowych na odległość 40 km.
10GBase-T – umożliwia transmisję o prędkości 10 Gb/s na odległość 100 m kablem
nieekranowanym UTP kategorii 6a/7. Możliwe jest również wykorzystanie kabla kategorii 6 –
wtedy maksymalna długość kabla nie powinna przekraczać 55m.
W oznaczeniach technologii (np. 100BASE-TX) pierwsza liczba oznacza szerokość pasma,
określenie BASE oznacza sposób transmisji – bezpośrednie kodowanie bitów, bez sygnału
nośnego (w odróżnieniu od standardu BROAD, gdzie jest sygnał nośny, a bity kodowane są za
pomocą zmian sygnału nośnego).
W technologii 10GbE (Ethernet 10-gigabitowy, IEEE.802.3ae) są zmiany w stosunku do
poprzednich wersji związane nie tylko z szybkością przesyłania bitów. Dopuszczono tylko tryb
full-duplex, zrezygnowano z CSMA/CD – w związku z brakiem kolizji. Jest to technologia mająca
cechy technologii MAN i WAN. Maksymalne dopuszczalne teraz długości połączeń są rzędu
dziesiątek kilometrów. Nośnikiem jest światłowód.
Szybsze wersje Ethernet: 40, 100 Gb/s (w opracowaniu są jeszcze szybsze).
Ramki
Ramka Ethernet II (DIX)
Ramka Ethernet II opisana jest w RFC 894.
Preambuła
(8 oktetów)
Adres
odbiorcy
(MAC
6 oktetów)
Adres
nadawcy
(MAC
6 oktetów)
Typ danych
(2 oktety)
„EtherType”
Dane od 46 do
1500 oktetów
CRC (FCS)
(4 oktety)
Preambuła to siedem bajtów 10101010 oraz jeden bajt 10101011.
Nie licząc preambuły ramka ma więc długość od 64 oktetów do 1518 oktetów. Same dane
przenoszone w ramce mogą mieć rozmiar od 46 do 1500 oktetów.
Na końcu ramki znajduje się Sekwencja kontrolna ramki (FCS – Frame Check Sequence), która
zawiera CRC (Cyclical Redundancy Check). Po otrzymaniu ramki komputer docelowy sprawdza
CRC i porównuje z FCS. Jeśli wykryje różnicę, ramka jest odrzucana.
Pole „Typ danych” (EtherType) zawiera informację co znajduje się w danych przesyłanych w
ramce.
Pola „typ danych” i „dane”:
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
Typ
0800
datagram IP (46-1500, w razie potrzeby uzupełniony bajtami wypełnienia)
typ
0806
ARP zapytanie/
odpowiedź
(28 oktetów)
PAD
(18
oktetów)
typ
8035
RARP zapytanie/
odpowiedź
(28 oktetów)
PAD
(18
oktetów)
Uwaga! W programach śledzących ruch w sieci preambuła i pole CRC nie są widoczne (za
wyjątkiem specjalnych snifferów warstwy 1).
Minimalny rozmiar pola danych wynika z mechanizmu detekcji kolizji oraz oszacowania czasu
przesyłania sygnałów. Rozmiar ten został określony dla Ethernetu 10Mbps i dla
kompatybilności utrzymany w wersjach późniejszych. Sieć Ethernet może się składać z co
najwyżej pięciu segmentów przedzielonych węzłami (za taki węzeł uważa się również
wzmacniak (repeater)). Przy użyciu kabla 10Base5, każdy segment może mieć maksymalnie
500 metrów, czyli cała sieć nie może być dłuższa niż 2500 metrów.
Czas potrzebny na przebycie całej sieci nazywany jest opóźnieniem propagacji i dla najdłuższej
sieci Ethernet 10Mbps wynosił 28,8 mikrosekundy (µs). W niekorzystnym przypadku, do
rozpoznania kolizji będzie potrzebny czas dwukrotnie dłuższy niż opóźnienie propagacji (jest
to tzw. szczelina czasowa). W ciągu 57,6 µs z prędkością 10Mbps węzeł Ethernetu nadaje 72
bajty. Odejmując długość preambuły (8B), adresów docelowego i źródłowego (razem 12B)
oraz pola „typ” (2 bajty) i CRC (4B) zostaje na dane 46 bajtów.
Jeśli dane tyle nie zajmują, to są uzupełniane. To uzupełnienie nie wlicza się w długość
datagramu IP ani ramki ARP czy RARP.
PAD (inaczej FP – Frame Padding) uzupełnienie do minimalnej długości.
Ramka IEEE 802.3
W wyniku działań grup zadaniowych Projektu IEEE 802 powstały między innymi następujące
standardy (a właściwie grupy standardów):
802.2 – standard wspólny dla wszystkich technologii rozważanych w projekcie 802 (Ethernet,
Token Ring, Token Bus) – definiuje tzw. warstwę kontroli łącza logicznego (LLC).
802.3 – określa standardy sieci LAN warstw fizycznej i łącza danych (podwarstwa MAC)
(nieformalnie: Ethernet).
802.4 – standard sieci z topologią magistrali i metodą dostępu do sieci na zasadzie przesyłania
tokenu (Token Bus), technologia ta w praktyce nie rozwinęła się.
802.5 – standard sieci Token Ring (obecnie nie używana).
W 802.3 przedefiniowano pole Typ (2 oktety) na pole Długość ramki.
Wewnątrz ramki umieszcza się dodatkowo tzw. nagłówek LLC.
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
IEEE w opracowywanych standardach podzielił warstwę łącza danych (warstwę 2 w modelu
OSI) na dwie podwarstwy: Logical Link Control (LLC) oraz Media (Medium) Access Control
(MAC). Podwarstwa LLC jest odpowiedzialna za multipleksowanie różnych protokołów warstw
wyższych, tak by odpowiednie PDU (z różnych protokołów – IP, IPX, Decnet, Appletalk) mogły
być transportowane przez wspólny nośnik. LLC obejmuje również sterowanie przepływem
oraz kontrolę błędów i zapewnienie niezawodności, jednak te właściwości w większości sieci
są realizowane w protokołach warstw wyższych, co czyni LLC niezbyt użyteczną (ta funkcja LLC
nie jest wykorzystywana w technologiach z grupy 802.3). Podwarstwa MAC zajmuje się m.in.
dodawaniem/sprawdzaniem FCS, wymuszaniem odpowiedniego odstępu między ramkami,
odrzucaniem niepoprawnych ramek, dodawaniem preambuły i SFD, uzupełnianiem ramek
(PAD).
W ramkach 802.3 identyfikacja protokołów została przesunięta do tzw. podramki LLC i SNAP
(Sub-Network Access Protocol) dołączanej do pola Dane. Nagłówek LLC zawiera trzy bajty, dla
802.3 jest to AA AA 03. Nagłówek SNAP ma pięć bajtów. Na trzech pierwszych bajtach zawiera
zera, natomiast dwa pozostałe służą do identyfikacji protokołów warstwy wyższej. (Generalnie
SNAP może zawierać inne wartości na pierwszych trzech bajtach – jest to IEEE Organizationally
Unique Identifier OUI zarejestrowany dla firmy lub organizacji; stosowanie OUI daje możliwość
definiowania prywatnych protokołów przez różne firmy/organizacje).
Długość pól od początku nagłówka LLC do ostatniego bajtu danych musi być większa bądź
równa 46 i mniejsza bądź równa 1500. Na same dane (np. datagram IP) zostaje więc
maksymalnie 1492 oktety (a minimum 38 oktetów).
Podstawowa ramka IEEE 802.3:
Preambuła SFD
Adres
(7 oktetów) (1 oktet) odbiorcy
(MAC
6 oktetów)
Adres
nadawcy
(MAC
6 oktetów)
Długość
LLC+SNAP + Sekwencja
(2 oktety) Dane
kontrolna
(3+5+
ramki
38 do 1492
(4 oktety)
oktety)
Każdą ramkę poprzedza 7-oktetowa Preambuła (7 oktetów 10101010).
Ramka rozpoczyna się za 1 oktetowym ogranicznikiem początku ramki (SFD – Start of Frame
Delimiter). Oktet SFD to 10101011.
Podramki LLC były wykorzystywane przez niektóre starsze protokoły (NetBEUI, NetWare IPX,
SNA).
Ze względu na małą wartość LLC oraz zmniejszenie miejsca na dane, ramki Ethernet II zostały
uznane za lepsze dla technologii Ethernet i obecnie obydwa formaty ramek są akceptowane
przez standard IEEE 802.3.
Ponadto dodano możliwość określenia tzw. sieci VLAN (sieci VLAN będą omówione na innym
wykładzie) poprzez dodanie opcjonalnego znacznika 802.1Q.
Poniższy rysunek obrazuje różne formaty ramek Ethernet (źródło: Wikipedia):
Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych.
dr Henryk Telega
Pole „Ethertype” zawiera wartości, które nie mogą być uznane za poprawną długość ramki,
zatem zawartość tego pola określa, czy mamy do czynienia z ramką Ethernet II, czy Ethernet z
LLC i SNAP.
Sieci komputerowe. 2. Adresacja IPv4.
dr H. Telega
Adresacja IPv4 (Internet Protocol, wersja 4)
1. Przypomnienie
Komputer, który chce wysłać pewne dane do innego komputera poprzez sieć, musi
skonstruować odpowiednią ramkę (ramki). W nagłówku ramki musi znaleźć się adres fizyczny
komputera docelowego (w sieci Ethernet jest to tzw. adres MAC). Jednak w Internecie
podstawowym adresem komputera jest adres IP, czyli adres zgodny z protokołem IP. W tym
dokumencie omówione zostały zasady adresowania (adresacja) IPv4 (IP wersja 4). Nowsza
wersja IP – Ipv6 będzie omawiana oddzielnie.
Wewnątrz ramki w części przeznaczonej na dane znajduje się na ogół pakiet (datagram IP), a
w nagłówku pakietu jest zapisany adres źródłowy i docelowy IP.
Na podstawie adresów IP routery kierują pakiety (datagramy IP) tak, by trafiły one do
określonego miejsca docelowego w Internecie.
Router (ruter) jest specjalnym komputerem, którego zadaniem jest kierowanie datagramów
w sieci Internet. Routerem może być również „zwykły” komputer, na którym zostało
uruchomione odpowiednie oprogramowanie (np. demon routed w systemie Linux czy usługi
routowania w systemie Microsoft Windows Server). Router ma na ogół co najmniej dwie
karty sieciowe, nazywane interfejsami. Poprzez interfejsy routery są podłączane do sieci
lokalnych, pojedynczych komputerów czy też łączą się między sobą. Routery często mają
różne typy interfejsów, wykorzystujących różne technologie, np. Ethernet, ISDN, Frame
relay, E1, T1 itd.
Wróćmy jeszcze do ramek. Wewnątrz ramki znajdują się na ogół są dwa typy adresów –
adresy fizyczne i adresy IP. Adres fizyczny znajduje się w nagłówku ramki, natomiast adres IP
znajduje się w nagłówku pakietu IP, który jest zawarty w ramce.
W nagłówku ramki znajdują się adresy fizyczne (MAC) komputera wysyłającego i komputera
przyjmującego ramkę. Te adresy to niekoniecznie adresy źródła i miejsca docelowego, do
którego w końcu ma dotrzeć datagram przesyłany w ramce. To są adresy komputerów
bezpośrednio uczestniczących w komunikacji, tj. osiągalnych poprzez jeden „skok” (hop) (np.
połączonych wspólnym nośnikiem, kablem lub przyłączonych do jednego przełącznika switcha). Jeśli pakiet jest przekazywany w sieci Internet to może być wielokrotnie pakowany
w ramki i rozpakowywany w kolejnych routerach.
W pewnych technologiach sieciowych wykorzystywanych do bezpośredniego łączenia
komputerów, w ramkach mogą nie być w ogóle używane adresy fizyczne (w połączeniach
typu punkt-punkt).
Są takie ramki (np. ramka ARP request), które w środku nie zawierają datagramu IP.
Jeśli pewien fragment Internetu, przez który w ramkach przekazywany jest datagram IP,
wykorzystuje technologie Ethernet, to za automatyczne wyszukanie odpowiedniego adresu
1
Sieci komputerowe. 2. Adresacja IPv4.
dr H. Telega
MAC następnego komputera, do którego ma być przekazany datagram IP przesyłany w sieci
Internet jest odpowiedzialny protokół ARP.
Uwaga. Adres IP jest przypisywany do karty sieciowej, nie do komputera. W szczególności
niektóre komputery mogą mieć więcej niż jeden adres IP. Router na ogół ma przydzielony
adres IP do każdego interfejsu. W niektórych technologiach jeden fizyczny interfejs routera
może mieć skonfigurowanych więcej tzw. podinterfejsów, z których każdy ma swój adres IP
(są to adresy z różnych sieci).
2. Zasady adresacji IPv4
Adres IP (w wersji IPv4) jest liczbą 32 bitową, zapisywaną często w tzw. notacji dziesiętnokropkowej. Każdy bajt adresu przedstawiany jest jako liczba dziesiętna, kolejne liczby
określające kolejne bajty są oddzielone od siebie kropką.
Przykład:
148.197.17.25
Czy adres 267.12.243.1 jest prawidłowy?
Typy adresów IP (IPv4)
Są trzy typy adresów IPv4:
•
•
•
Adresy jednostkowe (unicast) – przydzielane do pojedynczych interfejsów sieciowych
(karty sieciowej), używane w komunikacji między dwoma węzłami (komputerami) sieci
(one-to-one)
Adresy rozgłoszeniowe (broadcast) – przeznaczone do przetwarzania przez wszystkie
węzły w tym samym segmencie sieci, używane w komunikacji od jednego węzła
(komputera) w sieci do wszystkich komputerów w pewnym segmencie sieci (one-toeveryone)
Adresy grupowe (multicast) – na pakiety z takimi adresami czeka jeden lub wiele
komputerów w jednej lub w różnych segmentach sieci. Używane są do przekazywania
informacji w grupie użytkowników sieci (one-to-many), często stosowane do transmisji
wideo (np. wideokonferencje) do wielu użytkowników.
Składniki adresu IP (IPv4)
W adresie IP zapisanym binarnie można wyróżnić dwie części:
•
Identyfikator sieci (Network ID, ID sieci), który składa się z pewnej liczby bitów z lewej
strony adresu (tj. bardziej znaczących bitów) oraz
2
Sieci komputerowe. 2. Adresacja IPv4.
dr H. Telega
•
Identyfikator hosta (komputera w sieci) (Host ID, ID hosta), który składa się z pozostałych
bitów, tj. tych z prawej strony adresu.
Terminem host określa się komputer, który jest końcowym konsumentem usług sieciowych
(wg RFC 1122).
Często zamiast Identyfikator Sieci mówie się prefiks (prefiks, czyli „początkowa” część adresu
IP).
Granica między identyfikatorem sieci a identyfikatorem hosta może być wyznaczona przez
tzw. maskę sieci. Będzie o niej mowa za chwilę.
Reguły stosowane do adresów IPv4 przypisanych do komputera (karty sieciowej):
•
•
•
•
•
•
•
Identyfikator sieci nie może się składać z samych jedynek.
Identyfikator sieci nie może się składać z samych zer.
Identyfikator sieci nie może się powtarzać w złożonej sieci.
W pierwszym oktecie adresu (najbardziej znaczącym) nie może się znaleźć wartość 127
(jest ona zarezerwowana dla adresu tzw. pętli zwrotnej, czyli „samego siebie”).
Identyfikator hosta nie może się składać z samych jedynek.
Identyfikator hosta nie może się składać z samych zer.
Identyfikator hosta (komputera) musi być unikalny w segmencie sieci lokalnej.
Adres IP, który zawiera same zera w części dotyczącej hosta jest traktowany jako adres sieci
(nie identyfikator sieci). Nie jest to adres pojedynczego komputera.
Adres, zawierający same jedynki w części hosta jest traktowany jako rozgłoszenie w danej
sieci, tzn. przeznaczeniem datagramu są wszystkie komputery w tej sieci.
Adres ograniczonego rozgłoszenia
Adres IP składający się z samych jedynek:
255.255.255.255 = 11111111 11111111 11111111 11111111
jest nazywany adresem ograniczonego rozgłoszenia i jest traktowany jako adres rozgłoszenia
w danym segmencie sieci ograniczonym routerem/routerami. Pakiet o takim adresie nigdy
nie powinien być przepuszczony przez routery. W odróżnieniu od adresów ograniczonego
rozgłoszenia, adresy rozgłoszenia do sieci lub podsieci mają jedynki tylko w części hosta.
Uwaga. Termin segment sieci lokalnej jest używany w literaturze w różnych znaczeniach.
W tym dokumencie termin ten oznacza fragment sieci, który z resztą sieci komunikuje się
poprzez jakiś router. W innym znaczeniu segment sieci może to być fragment sieci
oddzielony od reszty innym niż router urządzeniem, np. przełącznikiem lub koncentratorem.
Adresy IP można podzielić na dwie grupy: unikalne w Internecie (tzn. nie mogą się powtórzyć
w skali całego świata) oraz nieunikalne.
3
Sieci komputerowe. 2. Adresacja IPv4.
dr H. Telega
Adresy nieunikalne, to np. adresy rozpoczynające się od liczby 127, które oznaczają zawsze
komputer lokalny (wspomniany już adres pętli zwrotnej – standardowo taki adres to
127.0.0.1).
Adresami nieunikalnymi są również adresy tzw. transmisji grupowej.
Do adresów nieunikalnych zaliczane są grupy tzw. adresów prywatnych.
Przez długie lata w Internecie stosowane były tzw. klasy adresów. Od pewnego czasu
powszechnie stosuje się adresowanie bezklasowe. Zagadnienia te będą omówione w
kolejnych podrozdziałach.
Binarny zapis liczb
Liczba w notacji dziesiętnej (systemie dziesiętnym) może być traktowana jako suma pewnych
iloczynów.
Na przykład zapis 357 oznacza (będziemy ją analizować od prawej strony)
7*1 + 5*10 + 3*100, czyli liczbę trzysta pięćdziesiąt siedem.
Każda cyfra tej liczby ma inną wagę. Kolejne wagi to 1, 10, 100.
W systemie dziesiętnym jest dziesięć cyfr: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Uwaga. Oczywiście cyfra to coś zupełnie innego jak liczba (choć niektórzy mylą cyfry z
liczbami!). Cyfra jest znakiem, podobnie tak jak litera. Przy pomocy cyfr zapisujemy liczby,
podobnie jak przy pomocy liter zapisujemy wyrazy.
W systemie binarnym (dwójkowym) są tylko dwie cyfry: zero i jeden. Wagi cyfr w zapisie
binarnym są następujące: 1, 2, 4, 8, 16, 32, 64, 128, 256, itd.
Liczba
10101101
oznacza (analizujemy od prawej strony):
1*1 + 0*2 + 1*4 + 1*8 + 0*16 + 1*32 + 0*64 + 1*128 = 173
Każdą liczbę można przedstawić korzystając z powyższego schematu
Największa liczba, kaka może być zapisana na ośmiu bitach (czyli w jednym bajcie) to
1*1 + 1*2 + 1*4 + 1*8 + 1*16 + 1*32 + 1*64 + 1*128 = 255
Zatem w jednym bajcie można przedstawić 256 różnych liczb (0,1,2,3,…,255).
Czy adres 267.12.243.1 jest prawidłowy?
4
Sieci komputerowe. 2. Adresacja IPv4.
dr H. Telega
Nie, ponieważ liczby 267 nie da się zapisać w jednym bajcie (największa możliwa to 255).
Zamiana zapisu dziesiętnego na binarny może być przeprowadzona w następujący sposób.
Załóżmy, że chcemy zapisać binarnie liczbę 152. Wagi cyfr w jednym bajcie począwszy od
największej są takie: 128, 64, 32, 16, 8, 4, 2, 1.
Liczba 152 jest większa niż 128, zatem w liczbie tej 128 występuje. Cyfra dla tej wagi będzie
1. Następna cyfra musi być zero, ponieważ jej waga to 64. Gdyby cyfra ta była równa jeden,
wówczas otrzymalibyśmy już liczbę 192 (1*128 + 1*64), czyli większą od 152.
Mamy zatem na razie dwie skrajne lewe cyfry: 10 (1*128 + 0*64).
Trzecia cyfra też musi być zero, gdyż jej waga to 32, gdybyśmy dodali do 128 (1*128+0*64)
liczbę 32, otrzymamy 160, czyli więcej niż 152.
Mamy zatem trzy skrajne lewe cyfry: 100 (1*128 + 0*64 +0*32).
Czwarta cyfra musi być jeden, gdyż jej waga to 16. Liczba 152 jest większa od 144
(1*128+0*64 +0*32+1*16=144 ).
Mamy już cztery cyfry od lewej strony: 1001 (1*128 + 0*64 +0*32).
Piąta cyfra musi być jeden, gdyż jej waga to 8 (1*128+0*64 +0*32+1*16 + 1*8 =152).
Mamy już pięć cyfr od lewej strony: 10011 (1*128 + 0*64 +0*32 +1*16 +1*8).
Otrzymaliśmy już 152, zatem pozostałe trzy cyfry (liczbę zapisujemy na ośmiu bitach) muszą
być równe zero.
10011000 (1*128 + 0*64 + 0*32 + 1*16 + 1*8 + 0*4 + 0*2 + 0*1) = 152.
Adresowanie oparte na klasach
Adresowanie oparte na klasach (adresowanie klasowe) opiera się na pomyśle podzielenia
wszystkich sieci na pewne grupy zwane klasami. Pierwszy bajt adresu determinuje do jakiej
klasy należy sieć (patrz tabela poniżej – kolumna zakres 1-go bajta).
195.156.65.12
195.156.72.5
255.255.255.0
Klasy adresów sieci
Klasa
A
B
C
D
E
Adres IP
w.x.y.z
w.x.y.z
w.x.y.z
w.x.y.z
w.x.y.z
Adres sieci
w.0.0.0
w.x.0.0
w.x.y.0
nie dotyczy
nie dotyczy
Zakres 1-go bajtu (w)
1 – 126
128 – 191
192 – 223
224 – 239
240 – 255
Najstarsze bity
0
10
110
1110
11110
Jak widać, klasę adresu można określić np. przez podanie pozycji pierwszego bitu zera w
pierwszym bajcie (licząc od lewej strony).
5
Sieci komputerowe. 2. Adresacja IPv4.
dr H. Telega
Adresy klasy A
Jest 126 sieci klasy A, przy czym każda z tych sieci może zawierać 224-2 tj. 16 777 214
komputerów. Jest tak dlatego, że na identyfikator sieci w sieciach klasy A jest przeznaczony
tylko jeden bajt (i tylko liczby z zakresu 1-126), zatem na identyfikator komputera (hosta)
zostaje trzy bajty. Wszystkich kombinacji zer i jedynek w trzech bajtach (24 bitach) jest 224,
przy czym dwie z tych kombinacji nie mogą być wykorzystane na adres komputera – są to
same zera i same jedynki. Same zera w części adresu dotyczącej hosta oznaczają adres sieci,
natomiast same jedynki oznaczają adres rozgłoszeniowy w danej sieci.
Pierwszy (w naturalnej kolejności wynikającej z identyfikatorów sieci) adres sieci klasy A jest
1.0.0.0, ostatni 126.0.0.0.
Adres „pierwszego” komputera w sieci klasy A to w.0.0.1 (w jest pierwszym oktetem adresu),
adres „ostatniego” komputera to w.255.255.254.
Adresy klasy B
Z kolei w sieciach klasy B dwa bardziej znaczące bajty adresu oznaczają identyfikator sieci, a
dwa mniej znaczące identyfikator hosta. W sieci klasy B może być zatem 216-2 = 65 534
komputerów, a sieci takich jest (191-128+1)*256 = 16 384.
Pierwszy adres sieci klasy B jest 128.0.0.0, ostatni 191.255.0.0
Adres „pierwszego” komputera w sieci klasy B to w.x.0.1 (w jest pierwszym oktetem adresu,
x jest drugim oktetem), adres „ostatniego” komputera to w.x.255.254.
Adresy klasy C
W sieciach klasy C trzy najbardziej znaczące bajty sieci oznaczają identyfikator sieci, tylko
jeden bajt jest przeznaczony na identyfikator hosta. Zatem w takiej sieci może być co
najwyżej 28-2 = 256-2 = 254 komputery, a sieci takich jest (192-223+1)*256*256 = 2 097 152.
Pierwszy adres sieci klasy C jest 192.0.0.0, ostatni 223.255.255.0
Adres „pierwszego” komputera w sieci klasy C to w.x.z.1 (w jest pierwszym oktetem adresu,
x jest drugim oktetem, z trzecim oktetem), adres „ostatniego” komputera to w.x.z.254.
Adresy klasy D
Adresy tej klasy przeznaczone są do transmisji grupowych. Transmisja grupowa będzie
omówiona w dalszej części zajęć z sieci komputerowych.
Adresy klasy E
Klasa E to adresy zarezerwowane (nie wykorzystywane normalnie do transmisji pakietów).
6
Sieci komputerowe. 2. Adresacja IPv4.
dr H. Telega
Adresy pętli zwrotnej (loopback)
Adres postaci 127.x.y.z (na ogół 127.0.0.1) zarezerwowany jest dla tzw. pętli zwrotnej (cały
ruch przesyłany na ten adres nie wychodzi z komputera).
Maski sieci
Identyfikator sieci można określić na podstawie adresu IP oraz tzw. maski sieci. Maska sieci
jest też liczbą binarną 32 bitową, zapisywaną podobnie jak adres IP, jednak maska zawsze z
lewej strony (na bardziej znaczących bitach) ma jedynki, natomiast z prawej ma zera.
Przykłady masek:
11111111.00000000.00000000.00000000
11111111. 11111111.00000000.00000000
W zapisie dziesiętno-kropkowym będzie to odpowiednio 255.0.0.0 i 255.255.0.0. Można też
stosować inny zapis – po adresie IP jest ukośnik, a za nim liczba, oznaczająca ile jest jedynek
w masce. Dla powyższych masek byłoby to odpowiednio /8 oraz /16.
Aby wyznaczyć ID sieci na podstawie adresu IP oraz maski należy przepisać wszystkie
wartości tych bitów w zapisie binarnym adresu IP, dla których w odpowiedniej pozycji maski
ustawiona jest jedynka. Tak rozumiany ID sieci ma mniej bitów niż 32. Termin ten nie jest
powszechnie używany – częściej można spotkać termin adres sieci. Adres sieci ma zawsze 32
bity i jest uzyskany z identyfikatora sieci, do którego w części dotyczącej hosta wpisane są
same zera.
Na przykład (w zapisie dziesiętno-kropkowym):
Adres IP:
Maska:
ID sieci:
Adres sieci:
10.50.100.203
255.0.0.0
10
10.0.0.0
Zapis adresu z maską może być też taki: 10.50.100.203 / 8
Ten sam przykład w zapisie binarnym:
Adres IP:
Maska:
ID sieci:
Adres sieci:
00001010.00110010.01100100.11001011
11111111.00000000.00000000.00000000
00001010
00001010.00000000.00000000.00000000
7
Sieci komputerowe. 2. Adresacja IPv4.
dr H. Telega
Standardowe maski sieci dla sieci klasowych
Klasa
A
B
C
Adres IP
w.x.y.z
w.x.y.z
w.x.y.z
Maska sieci
255.0.0.0 (/8)
255.255.0.0 (/16)
255.255.255.0 (/24)
ID sieci
w
w.x
w.x.y
ID komputera (hosta)
x.y.z
y.z
z
Dzielenie sieci na podsieci
Jeśli dostawca Internetu przydzielił sieć pewnej klasy, to sieć tę można podzielić na mniejsze
fragmenty podłączone do różnych interfejsów tego samego routera lub do kilku routerów.
Te fragmenty sieci nazywane są podsieciami.
Jak już powiedziano, routery są urządzeniami kierującymi (przekazującymi) datagramy IP
dalej (do sieci, podsieci lub innego routera.
Sieci dzielone są na segmenty m.in. w celu zwiększenia efektywności działania: zmniejszenia
ruchu w segmentach, ograniczenia zakresu rozgłaszania pakietów i ramek (np. ramki ARP
Request mają dotrzeć do wszystkich komputerów w pewnej sieci lub podsieci i nigdy nie
zostaną przekazane poza router). Dzielenie sieci na podsieci zmniejsza tzw. dziedziny
rozgłaszania (dziedzina rozgłaszania do obszar, w którym przekazywane są ramki
rozgłoszeniowe, tj. ramki z adresem MAC ff-ff-ff-ff-ff-ff-). Inny powód dzielenia sieci na
podsieci to względy bezpieczeństwa. Routery mogą działać jako filtry pakietów, które
przepuszczają między sobą tylko pakiety spełniające określone kryteria.
Adres podsieci można określić przez użycie niestandardowych masek sieci, zwanych w takich
przypadkach też maskami podsieci.
Przykład.
Określamy niestandardową maskę 255.255.255.0 dla sieci klasy B.
Jeśli weźmiemy adres np.
149.159.12.136,
to 149.159.0.0 jest adresem całej sieci, natomiast
149.159.12.0 jest adresem podsieci (wynikającej z zastosowanej podanej maski podsieci).
W sieciach klasy A możemy stosować maski niestandardowe 255.255.0.0 lub 255.255.255.0.
Zatem podsieć sieci klasy A też może być dalej dzielona na podsieci.
Zwróćmy jednak uwagę na pewien problem. Routery przechowują w swoich pamięciach
informacje o znanych im trasach do pewnych sieci. Informacje te znajdują się w tablicach
routowania. Administrator w trakcie konfiguracji routera wprowadza informacje o sieciach
8
Sieci komputerowe. 2. Adresacja IPv4.
dr H. Telega
bezpośrednio przyłączonych do routera. Potem, po włączeniu opcji dynamicznego
routowania routery wymieniają się informacjami o sieciach i na tej podstawie budują sobie
pewien obraz sieci i potrafią wyznaczać trasy datagramów. Ta wymiana informacji między
routerami odbywa się zgodnie z protokołami routowania. Popularne protokoły routowania
to RIP, RIP2, OSPF, IGRP, EIGRP, BGP. Protokoły te różnią się możliwościami, np. protokół RIP
jest starszym protokołem i „rozumie” tylko adresowanie klasowe bez użycia masek podsieci.
Rozważmy dwie sieci:
1) 149.159.0.0 z maską 255.255.0.0 (czyli 149.159.0.0/16) – tutaj ID sieci to 149.159, w sieci
można zaadresować 216-2 =65 534 komputery
2) 149.159.0.0 z maską 255.255.255.0 (czyli 149.159.0.0/24) – tu ID sieci to 149.159.0, w
sieci można zaadresować 28-2 =254 komputery.
Są to różne sieci (druga jest podsiecią pierwszej). Jednak routery nie stosujące masek
podsieci nie rozróżnią jednej sieci od drugiej.
Ponadto adres 149.159.255.255 może być traktowany dwojako.
Jeśli maska jest 255.255.0.0, to jest to adres rozgłoszenia w całej sieci 149.156.0.0/16.
Natomiast, jeśli maskę przyjmiemy 255.255.255.0, to wówczas adres 149.159.255.255 jest
rozgłoszeniem w sieci o adresie 149.159.255.0.
Jakie jest wyjście z sytuacji? Można zabronić stosowania adresów typu 149.159.255.0 czy
149.159.0.0/24, czyli takich, w których, jeśli rozpatrujemy je jako adresy klasowe, w części
normalnie przeznaczonej na identyfikator hosta pojawiają się na początku jedynki lub zera.
Są to adresy podsieci określane czasem jako podsieci jedynek lub podsieci zer. Pierwotnie
dokument RFC 950 zakazywał stosowania takich podsieci. Zakaz ten ma oczywiście taką
wadę, że zmniejsza się liczba dostępnych podsieci i w konsekwencji część adresów IP
pozostaje niewykorzystana. Obecnie dokument RFC 1812 zezwala na używanie podsieci zer i
jedynek w środowisku sieci nie opierających się na klasach, tzn. takich w których routery
rozpoznają adresowanie bezklasowe. Adresowanie takie jest tematem rozważań w kolejnym
podrozdziale. Z podsieciami zer i jedynek należy jednak uważać, gdyż nie wszystkie routery
potrafią je obsługiwać, a czasami obsługa jest możliwa, jednak wymaga dodatkowej
konfiguracji.
Określanie komputerów lokalnych (w tej samej sieci lokalnej) i odległych (oddzielonych co
najmniej jednym routerem)
Komputery, które mają takie same identyfikatory podsieci (wyznaczone przez maskę
podsieci) są w tym samym segmencie i określane są jako lokalne względem siebie, tzn. są w
tym samym segmencie sieci lokalnej (segment ten jest oddzielony routerem od innych
segmentów). Jeśli choć na jednym bicie w ID podsieci jest różnica, komputery są względem
siebie odległe (przedzielone przynajmniej jednym routerem).
Przykłady:
Komputer A: 162.168.1.100
Komputer B: 162.168.2.101
Maska 255.255.0.0
9
Sieci komputerowe. 2. Adresacja IPv4.
dr H. Telega
Komputery są względem siebie lokalne.
Przy masce 255.255.255.0
Komputery są względem siebie odległe (przedzielone routerem).
Adresowanie bezklasowe
Dzielenie sieci na podsieci jest w wielu przypadkach korzystne i prowadzi do lepszego
wykorzystania puli adresów IP. Rodzi się też pytanie, czy nie można podzielić sieci na podsieci
z użyciem dowolnej liczby jedynek, nie tylko 16 czy 24. Na przykład, jeśli w sieci klasy B o
adresie 149.159.0.0 /16 zastosowalibyśmy maskę podsieci nie 24 jedynkową (co daje 254 lub
256 podsieci z możliwością adresowania do 254 komputerów) tylko z 22 jedynkami.
Otrzymalibyśmy 62 lub 64 sieci, z których każda mogłaby mieć 1022 komputery. Co więcej –
można by w ogóle zrezygnować z wyznaczania klas, jeśli routery potrafią obsługiwać maski o
dowolnej liczbie jedynek. Zamiast stosowania zasad adresowania klasowego, w którym do
określenia sieci wystarczy podać adres IP sieci, do określenia sieci należałoby podać adres
sieci oraz maskę. Obecnie w Internecie powszechnie jest wykorzystywane adresowanie
bezklasowe.
Przykład. Jeśli firma ma np. 1000 komputerów, to przydzielenie jej adresów klasy B jest
marnotrawstwem, gdyż w takiej sieci można zaadresować ponad 65 tysięcy komputerów.
Jeśli firma dostałaby np. sieć 149.159.0.0 / 16, to nikt inny w Internecie już nie mógłby mieć
adresów rozpoczynających się od 149.159, gdyż routery nie mogą kierować ruchu do sieci
149.159.0.0 /16 w dwa różne miejsca. Należy zatem firmie przydzielić cztery sieci klasy C.
Jednak właśnie na adresy z klasy C jest największe zapotrzebowanie i zanim wprowadzono
takie mechanizmy jak adresowanie bezklasowe, adresy prywatne i translację adresów były
prognozy, że adresy sieci klasy C szybko się wyczerpią (jeszcze w latach 90-tych).
Adresowanie bezklasowe umożliwia dzielenie sieci na segmenty o większej (niż w przypadku
adresów klasowych) różnorodności rozmiarów.
Dla organizacji, która posiada 2000 komputerów klasa C jest zbyt mała, natomiast B jest o
wiele za duża (daje możliwość zaadresowania). Można przydzielić osiem sieci klasy C, ale taki
sposób działania powoduje to znaczne zapotrzebowanie na adresy klasy C. W przypadku
zastosowania adresowania bezklasowego należałoby przydzielić sieć z maską, która ma 21
jedynek (/21). Wówczas w adresie IP 11 bitów przeznaczonych jest na identyfikator hosta,
zatem wszystkich możliwych identyfikatorów jest 211-2 = 2048-2 = 2046.
Przykład adresu IP z sieci bezklasowej:
145.217.123.7 / 20
Liczba po ukośniku oznacza liczbę jedynek (od lewej strony) w masce.
Inny zapis takiej maski: 255.255.240.0
Zadanie:
Wyznaczyć ID sieci, adres IP sieci, adres „pierwszego” komputera w tej sieci i adres
„ostatniego” komputera w tej sieci oraz adres rozgłoszenia w tej sieci.
Rozwiązanie na wykładzie.
10
Sieci komputerowe. 2. Adresacja IPv4.
dr H. Telega
Zadanie:
Weźmy pod uwagę adres IP z maską:
149.156.14.35, maska 255.255.248.0
Należy wyznaczyć adres IP sieci, adres „pierwszego” komputera w tej sieci i adres
„ostatniego” komputera w tej sieci oraz adres rozgłoszenia w tej sieci.
Obliczenie adresu sieci:
149.156. 0000 1110 .35
255.255. 1111 1000 .0
Adres sieci:
149.156. 0000 1000 .0
W notacji dziesiętno-kropkowej: 149.156.8.0
Zadanie:
Rozważmy dwa komputery:
Komputer A: 10.217.123.7 / 10
Komputer B: 10.218.102.31 / 10
Określić ID sieci oraz czy komputery są względem siebie lokalne czy odległe (tj. oddzielone
przynajmniej jednym routerem).
Zadanie:
Rozważmy ID sieci określony następująco:
172.16.8.0
z maską:
255.255.248.0
Należy wypisać przykładowe adresy komputerów, które są lokalne względem siebie (czyli są
w tej samej sieci) wg powyższych danych.
Przy adresowaniu bezklasowym trzeba jednak jeszcze zwrócić uwagę na jeden problem.
W routerach przechowywane są tablice routowania, które zawierają wpisy dla każdej znanej
dla routera sieci. Główne routery w Internecie zawierają tysiące wpisów. Pewnym
usprawnieniem byłaby możliwość przechowywania tylko jednego wpisu do całej grupy sieci.
Istnieje możliwość łączenia sieci w tzw. supersieci (supernets). Wpis w tablicy routowania
reprezentujący supersieć bywa określany terminem podsumowanie lub agregacja lub
sumaryzacja.
Na przykład zamiast wpisywać osobno trasy do sieci 203.124.0.0 / 24, 203.124.1.0 / 24,
203.124.2.0 / 24, 203.124.3.0 / 24 można zapisać trasę do sieci 203.124.0.0 / 22
11001011.01111100.00000000.00000000
11001011.01111100.00000001.00000000
11001011.01111100.00000010.00000000
11001011.01111100.00000011.00000000
11111111.11111111.11111111.00000000
203.124.0.0 / 24
203.124.1.0 / 24
203.124.2.0 / 24
203.124.3.0 / 24
maska
11
Sieci komputerowe. 2. Adresacja IPv4.
dr H. Telega
Sumaryzacja tych sieci:
11001011.01111100.00000000.00000000 203.124.0.0 / 22
11111111.11111111.11111100.00000000 maska
Podobny przykład: zamiast wpisywać osobno trasy do sieci 203.124.96.0 / 24, 203.124.97.0 /
24, 203.124.98.0 / 24, 203.124.99.0 / 24 można zapisać trasę do sieci 203.124.96.0 / 22
11001011.01111100.01100000.00000000
11001011.01111100.01100001.00000000
11001011.01111100.01100010.00000000
11001011.01111100.01100011.00000000
11111111.11111111.11111111.00000000
203.124.96.0 / 24
203.124.97.0 / 24
203.124.98.0 / 24
203.124.99.0 / 24
maska
Podsumowania tych sieci:
11001011.01111100.01100000.00000000 203.124.96.0 / 22
11111111.11111111.11111100.00000000 maska
Uwaga do powyższych przykładów – zezwolono tu na podsieci jedynek i zer (wyjaśnienie na
wykładzie).
Podsieci o różnych rozmiarach (VLSM – variable length subnet masks)
Podział sieci 149.159.0.0 / 16 z wykorzystaniem maski zawierającej 19 jedynek prowadzi do
powstania ośmiu sieci, z których każda może zawierać 8190 komputerów.
10010101.10011111.00000000.00000000 149.159.0.0
11111111.11111111.11100000.00000000 maska z 19 jedynkami
Oto te podsieci:
a)
b)
c)
d)
e)
f)
g)
h)
10010101.10011111.00000000.00000000
10010101.10011111.00100000.00000000
10010101.10011111.01000000.00000000
10010101.10011111.01100000.00000000
10010101.10011111.10000000.00000000
10010101.10011111.10100000.00000000
10010101.10011111.11000000.00000000
10010101.10011111.11100000.00000000
podsieć 149.159.0.0 / 19
podsieć 149.159.32.0 / 19
podsieć 149.159.64.0 / 19
podsieć 149.159.96.0 / 19
podsieć 149.159.128.0 / 19
podsieć 149.159.160.0 / 19
podsieć 149.159.192.0 / 19
podsieć 149.159.224.0 / 19
Jednak czasami istnieje potrzeba podzielenia sieci na segmenty (podsieci) niejednakowych
rozmiarów (podsieci o różnych liczbach jedynek w masce). Na przykład można byłoby
podzielić tę sieć w ten sposób:
12
Sieci komputerowe. 2. Adresacja IPv4.
dr H. Telega
•
•
•
•
Połowa adresów będzie przeznaczona na przyszłe zastosowania (np. mogą to być
pierwsze cztery sieci z wyżej podanych).
Kolejne trzy podsieci będą zawierały do 8190 komputerów każda. Mogą to być podsieci z
podpunktów e, f i g.
Kolejne 31 podsieci będzie zawierało do 254 komputerów każda. Sieć z podpunktu h
można podzielić stosując maskę z 24 jedynkami. Otrzymamy wówczas 32 podsieci
10010101.10011111.11100000.00000000 149.159.224.0 / 24
10010101.10011111.11100001.00000000 149.159.225.0 / 24
...
10010101.10011111.11111110.00000000 149.159.254.0 / 24
10010101.10011111.11111111.00000000 149.159.255.0 / 24
Wykorzystamy 31 pierwszych podsieci, a ostatnią (32-gą) podzielimy na 16 podsieci po
14 komputerów
16 podsieci będzie zawierało po 14 komputerów. Będą to podsieci uzyskane w wyniku
zastosowania maski zawierającej 28 jedynek:
10010101.10011111.11111111.00000000 149.159.255.0 / 24
11111111.11111111.11111111.11110000
10010101.10011111.11111111.00000000
10010101.10011111.11111111.00010000
10010101.10011111.11111111.00100000
...
10010101.10011111.11111111.11110000
149.159.255.0 / 28
149.159.255.16 / 28
149.159.255.32 / 28
149.159.255.224 / 28
Gdybyśmy mieli wyznaczyć adresy komputerów z podsieci np.
10010101.10011111.11111111.00010000 149.159.255.16 / 28, to byłyby to kolejno
149.156.255.17, 149.156.255.18, ..., 149.156.255.30. Adres 149.156.255.31/28 byłby tu
adresem rozgłoszenia w sieci 149.156.255.16/28, natomiast adres 149.156.255.32/28
jest już adresem następnej sieci.
Adresy prywatne, translacja adresów
Adres IPv4 jest 32 bitowy i gdyby nie wprowadzono pewnych specjalnych mechanizmów
takich jak translacja adresów, adresy prywatne i omówione już adresowanie bezklasowe już
dawno zabrakłoby adresów w Internecie.
Adresy prywatne to adresy, które nie są unikalne w skali świata. Tabela prezentuje grupy
adresów prywatnych.
Wybrane adresy prywatne:
ID Sieci
10.0.0.0
172.16.0.0
192.168.0.0
Maska podsieci
255.0.0.0
255.240.0.0
255.255.0.0
Zakres adresów IP
10.0.0.1 - 10.255.255.254
proszę uzupełnić samodzielnie !!!
192.168.0.1 - 192.168.255.254
13
Sieci komputerowe. 2. Adresacja IPv4.
dr H. Telega
W Internecie może być bardzo dużo komputerów o pewnym konkretnym adresie wybranym
z podanych w tabeli zakresów. Jak zatem mogą do nich docierać datagramy IP, skoro routery
nie mogą przekazywać datagramów na adresy prywatne? Otóż w sieciach z takim
adresowaniem za kontakt z „resztą świata”, czyli z Internetem jest odpowiedzialny pewien
komputer, na którym uruchomiona jest usługa translacji adresów (określana jako NAT –
Network Address Translation). Jeśli komputer z adresem prywatnym wysyła coś do
Internetu, to przy przejściu przez komputer dokonujący translacji adresów (router NAT),
następuje zamiana adresu źródła na zewnętrzny adres IP routera NAT. Zatem komputer
docelowy otrzyma pakiet z wpisanym adresem źródłowym równym adresowi zewnętrznemu
routera NAT. Adres ten oczywiście nie może być adresem prywatnym. Zatem ewentualna
odpowiedź zostanie przesłana do routera NAT (na adres zewnętrzny routera NAT). Router
NAT dokona zamiany adresu docelowego na odpowiedni adres komputera docelowego (jest
to adres prywatny), przy czym do określenia do którego komputera z sieci wewnętrznej (o
adresach prywatnych) pakiet ma dotrzeć, mogą być wykorzystane są tzw. numery portów –
wówczas mówi się o wersji NAT o nazwie PAT – Port Address Translation. Do zagadnienia
tego jeszcze wrócimy dokładniej po omówieniu protokołów TCP i UDP.
Adresy wykorzystywane do samokonfiguracji.
Adresy 169.254.0.1 – 169.254.255.254 są używane przez komputery w sieci lokalnej przy
braku obecności serwera DHCP po kilku próbach nawiązania z nim kontaktu.
14
Sieci komputerowe, rok akad. 2023/2024
dr H. Telega
Routowanie (trasowanie)
Routowanie jest to proces przesyłania pakietów (datagramów IP) od hosta nadawczego do
odbiorcy na ogół z wykorzystaniem routerów pośredniczących. W literaturze polskojęzycznej
spotyka się również inne określenia: trasowanie, routing.
Każdy host oraz router podejmuje decyzje jak (którędy) przesłać datagram. Decyzje te są
podejmowane na podstawie tzw. tabel routowania oraz pewnych reguł.
W przypadku, gdy w routerze tabela routowania jest wypełniona wpisami statycznymi i nie
zmienia się, mówi się o routowaniu statycznym. Jeśli tabela routowania zmienia się
dynamicznie na podstawie protokołów routowania, mówi się o routowaniu dynamicznym.
Protokół IPv4 jest jednym z protokołów routowalnych (routed protocols). Są też inne
protokoły routowalne, np. IPX firmy Novell (należący do stosu protokołów określanego jako
IPX/SPX), AppleTalk, IPv6. Routery mogą realizować trasowanie również dla pakietów z
protokołów innych niż IPv4.
Jednak protokół IPv4 jest w tej chwili najważniejszym protokołem routowalnym w
Internecie. Jego następcą jest IPv6 (będzie omówiony na innym wykładzie).
Tablice routowania w hostach i routerach mogą być uzupełniane częściowo automatycznie,
częściowo poprzez wpisy statyczne. Wpisy w tablicy routowania hosta mogą też wynikać z
tzw. przekierowania ICMP (będzie o tym w dalszej części wykładu).
Ponadto dla routerów tablica routowania na ogół jest modyfikowana dynamicznie na
podstawie tzw. protokołów routowania (routing protocols). Protokoły routowania określają
w jaki sposób routery mają wymieniać między sobą informacje na temat połączeń między
routerami w sieci (topologia połączeń, stan połączeń) i jak na podstawie tych informacji mają
aktualizować swoje tablice routowania. Przykładowe protokoły routowania to RIP, RIP2,
OSPF, IGRP, EIGRP, BGP.
W przypadku, gdy w routerze tablica routowania jest wypełniona wpisami statycznymi i nie
zmienia się, mówi się o routowaniu statycznym. Jeśli tablica routowania zmienia się
dynamicznie na podstawie protokołów routowania, mówi się o routowaniu dynamicznym.
Przesyłanie datagramu może być realizowane do hosta (lub routera) bezpośrednio
dołączonego do hosta (lub routera) wysyłającego lub za pośrednictwem routerów.
Bezpośrednie połączenie może być typu
•
•
•
rozgłoszenia: na przykład – Ethernet; działa protokół ARP,
punkt-punkt: technologie sieci rozległych WAN, którym poświęcony będzie inny wykład
np. analogowa linia telefoniczna, linia telefonii cyfrowej ISDN, T-carrier: T1, E1, T3, E3;
ARP nie jest wykorzystywany;
wielodostęp nierozgłoszeniowy (NBMA – Non Broadcast Multiple Access): technologie
przełączania pakietów WAN Frame Relay, ATM; ARP nie jest wykorzystywany.
Sieci komputerowe, rok akad. 2023/2024
dr H. Telega
W przypadku, gdy docelowy host (IP) jest połączony bezpośrednio (połączenie punkt-punkt)
lub leży w sieci LAN bezpośrednio dołączonej do hosta, wówczas datagram IP jest wysyłany
bezpośrednio do punktu lub sieci. W pozostałych przypadkach host wysyła datagram IP do
domyślnego lub innego routera wynikającego z tablicy routowania.
Komputery działające pod wieloma systemami operacyjnymi (w tym pod różnymi odmianami
systemu Unix, oraz Windows Server) można skonfigurować tak, by pełniły role routerów.
Komputer taki musi mieć ca najmniej dwa interfejsy (np. karty Ethernet) łączące go z innymi
komputerami/routerami.
Tablica routowania IP
Tablica routowania zawiera wpisy dotyczące tras do hostów, routerów i sieci. Zwykle w
hostach (nie routerach) liczba wpisów jest dużo mniejsza od liczby wpisów w routerach i
zawiera informacje o bramie domyślnej. Brama domyślna to router, do którego kierowany
jest datagram, jeśli nie została znaleziona dla niego lepsza trasa w tablicy routowania.
W każdym hoście i routerze dla każdego przesyłanego pakietu IP na podstawie tablicy
routowania wyznaczane są dwie wartości:
•
•
interfejs – reprezentacja fizycznego urządzenia, przez które ma być wysłany pakiet,
adres IP następnego routera, do którego ma być skierowany datagram (lub adres
docelowy hosta, jeśli jest bezpośrednio dołączony do nadawcy), czasem mówi się o
adresie następnego skoku.
Przykładowa struktura wpisu (wiersza) w tablicy routowania
Tablica routowania zawiera następujące pozycje (pola):
Przeznaczenie (Destination). W koniunkcji (logiczne AND) z polem Maska zawiera informację
o zakresach adresów IP, które są dostępne przy użyciu tej trasy. Pole to może zawierać ID
sieci lub adres IP konkretnego hosta lub routera. W prawidłowym wpisie pole Przeznaczenie
nie może zawierać jedynek (w zapisie binarnym) w miejscu, gdzie w Masce sieci są zera
(binarnie).
Maska sieci (Network mask). Zawiera maskę sieci, może też zawierać same jedynki
(255.255.255.255).
Adres następnego skoku (Next hop address). Adres IP, do którego datagram będzie
przesłany w następnym kroku, jeśli zostanie wybrana ta trasa. Jest bez znaczenia dla
połączeń punkt-punkt.
Interfejs. Oznaczenie interfejsu, przez który datagram będzie przesłany do miejsca
określonego przez pole Adres następnego skoku. W MS Windows interfejsy są określane
przez adresy IP przypisane do interfejsów. Mogą być też określone przez numery przypisane
do interfejsów. Numery te (oraz całą tablicę routowania) wyświetla polecenie route print. W
systemie Linux typowe oznaczenia dla kart Ethernet to eth0, eth1. W routerach Cisco np. e0
(Ethernet 10Mbps), f1 (Fast Ethernet 100Mbps), g0 (Gigabit Ethernet), s1 (Serial).
Sieci komputerowe, rok akad. 2023/2024
dr H. Telega
Metryka. Liczba wskazująca na koszt trasy. Im wyższa wartość, tym „gorsza” trasa. Metryki
są porównywane w przypadku, gdy tablica routowania zawiera więcej niż jedną trasę do
miejsca przeznaczenia. Dopuszczalne wartości metryk i ich znaczenie w routerach są różne w
zależności od stosowanego protokołu routowania.
Odległość administracyjna. Liczba przypisywana na podstawie tego, w jaki sposób router
poznał trasę do danego miejsca docelowego. Np. jeśli trasa została wpisana ręcznie przez
administratora, wówczas odległość administracyjna standardowo jest równa 1. Jeśli router
dowiedział się o trasie do pewnego miejsca docelowego z wykorzystaniem protokołu
routowania RIP, wówczas standardowo odległość administracyjna dla tej trasy wynosi 120.
Dla protokołu OSPF odległość administracyjna wynosi 110. Odległości administracyjne są
brane pod uwagę w przypadku konieczności porównania tras, o których router dowiedział się
z wykorzystaniem różnych mechanizmów (np. poprzez wpis statyczny albo z RIP albo OSPF).
„Wygrywa” trasa z przypisaną mniejszą liczbą.
Trasa domyślna może być oznaczana przez 0.0.0.0 w polu Przeznaczenie i 0.0.0.0 w polu
Maska sieci.
Proces określania trasy na podstawie tablicy routowania
Proces wybierania trasy może być określony następująco:
1. Dla każdej trasy w tablicy routowania określa się, czy jest ona zgodna z adresem IP w
przesyłanym pakiecie. Wykonywana jest operacja logiczne AND na docelowym adresie IP
oraz na masce sieci. Wynik porównywany jest z polem Przeznaczenie. Jeśli jest identyczny,
wówczas trasa jest zgodna. Oprócz tego trasa domyślna jest traktowana zawsze jako zgodna.
2. Spośród tras zgodnych wybierana jest ta (lub kilka), dla której w polu Maska sieci jest
największa liczba jedynek (w zapisie binarnym). Może się jednak zdarzyć, że jedyną trasą
zgodną jest trasa domyślna.
3. Spośród tras, które zostały wybrane w punkcie 2 wybierane są trasy o najmniejszej
metryce.
4. Spośród tras wybranych w punkcie 3 wybierana jest dowolna trasa.
Uwaga – routery potrafią również wykonywać równoważenie obciążeń. Wówczas część
pakietów może powędrować jedną trasą a inna część drugą trasą o tym samym koszcie
(metryce). Routery mogą również przy równoważeniu obciążeń brać pod uwagę kilka tras o
różnych metrykach – wówczas odpowiednio więcej pakietów będzie przesyłanych trasą o
mniejszej metryce a mniej trasą o większej metryce.
Proces porównywania tras preferuje trasy zgodne w następującym porządku:
1. Trasa do hosta – wszystkie bity docelowego adresu IP są zgodne z bitami w polu
Przeznaczenie
2. Trasa podsieci – bity docelowego adresu IP zgadzają się na poziomie podsieci
3. Trasa sieci – bity docelowego adresu IP zgadzają się na poziomie sieci
4. Trasa sumaryczna lub supersieci – bity adresu docelowego zgadzają się z adresem
sumarycznym (supersieci).
Sieci komputerowe, rok akad. 2023/2024
dr H. Telega
5. Trasa domyślna.
Przykład.
Destination
149.156.17.0
149.156.17.44
149.156.0.0
133.15.0.0
0.0.0.0
Mask
255.255.255.0
255.255.255.255
255.255.0.0
255.255.0.0
0.0.0.0
Next hop
133.23.47.2
211.5.4.2
199.203.45.2
210.14.25.3
219.177.32.2
Interface
G0/0/1
G0/0/0
G0/0/2
S0/0
S0/1
Metric
3 (1)
2 (1)
4 (1)
4 (1)
(1)
W przypadku, gdy trasa nie zostanie znaleziona w hoście nadawczym IP informuje protokół
warstwy wyższej. W przypadku routera datagram jest odrzucany i do nadawcy może być
wysłany komunikat ICMP Destination Unreachable – Host Unreachable.
Komunikaty ICMP o przekierowaniu (materiał nieobowiązkowy).
host
1) datagram IP
3) przekierowanie
2) datagram IP
router 1
router 2
Komunikaty ICMP o przekierowaniu pozwalają hostom TCP/IP na konfigurację tylko jednego
routera – bramy domyślnej nawet w sytuacji, gdy w sieci lokalnej są dwa lub więcej
routerów, które są odpowiedzialne za pewne miejsca docelowe.
Hosty mogą zacząć pracę z jedną domyślną trasą i uczyć się topologii sieci (w szczególności
informacji o routowaniu) poprzez otrzymywanie komunikatów ICMP.
Komunikaty ICMP o przekierowaniu powinny być generowane przez routery, ale korzystać z
nich mogą tylko hosty – nie routery.
Sieci komputerowe rok akad. 2022/2023
dr H. Telega
Protokół IPv4
Protokół IP jest protokołem warstwy trzeciej modelu ISO OSI. Implementacja protokołu IP
składa się z oprogramowania spełniającego różne funkcje. Oprogramowanie to jest
odpowiedzialne za adresowanie IP, tworzenie datagramów IP (pakietów IP) i uczestniczy w
kierowaniu ich w sieci z punktu początkowego do punktu docelowego.
IP realizuje usługę zawodną, tzn. zawiera mechanizmy dostarczania datagramów, ale w
przypadku jakiegoś niepowodzenia (np. przepełnienie buforów routera) datagram IP nie jest
przesyłany ponownie. Datagram IP może zaginąć, czasem jest celowo usuwany przez routery
i wówczas może być wysłany odpowiedni komunikat do nadawcy. Jest to komunikat protokołu
ICMP. Jeśli komunikacja powinna zawierać mechanizmy niezawodności, to muszą one być
dostarczone przez protokoły warstwy wyższej.
Datagram IP składa się z nagłówka (header) i bloku danych (payload).
Nagłówek dzięki informacjom w nim zawartym umożliwia obsługę routowania, identyfikację
bloku danych, określenie rozmiaru nagłówka i datagramu oraz obsługę fragmentacji.
W nagłówku mogą się znaleźć również tzw. opcje rozszerzające. Nagłówek IP ma zmienną
długość (20 do 60 bajtów, co 4 bajty).
Blok danych może mieć długość do 65515 bajtów.
Nagłówek IPv4
Nagłówek IPv4 zawiera następujące pola (w kolejności):
Wersja (4 bity) (=0100)
Długość nagłówka IP (IHL – Internet Header Length) (4 bity)
Pierwotnie typ usługi (TOS – Type of Service) (8 bitów), potem określano różne zastosowanie
Długość całkowita (16 bitów)
Identyfikator (16 bitów)
Flagi (3 bity)
Przesunięcie fragmentu (13 bitów)
Czas życia (TTL) (8 bitów)
Protokół (8 bitów)
Suma kontrolna nagłówka (16 bitów)
Adres IP źródła (32 bity)
Adres IP docelowy (32 bity)
Dodatkowe opcje i wypełnienie (32 bity + ew. więcej).
Za nagłówkiem IP w datagramie znajdują się dane (segment TCP, datagram UDP, komunikat
ICMP).
Sieci komputerowe rok akad. 2022/2023
dr H. Telega
Opis pól w nagłówku IP
Wersja – liczba 4 dla podstawowego obecnie IPv4 (0100 binarnie).
Długość nagłówka – liczba 4-bajtowych bloków. Najczęściej nagłówek ma 20 bajtów, a więc 5
bloków (0101 binarnie). Maksymalnie długość nagłówka może wynosić 15*4 = 60 bajtów
(11112 = 1510).
Typ usługi (TOS Type of Service) lub DS. (Differentiaded Services) 8 bitów – zawiera
dodatkowe informacje, które mogą być użyte w routingu. Pole TOS (DS) przez lata miało wiele
różnych definicji, było definiowany w różny sposób przez dokumenty RFC 791, RFC 1122, RFC
1349, RFC 2474 oraz RFC 3168. Historia pola TOS jest opisana w 22. sekcji dokumentu RFC
3168.
Pierwotnie w RFC 791 pole TOS było zdefiniowane następująco:
Bits 0-2:
Bit
3:
Bits
4:
Bits
5:
Bit 6-7:
Precedence.
0 = Normal Delay,
1 = Low Delay.
0 = Normal Throughput, 1 = High Throughput.
0 = Normal Relibility, 1 = High Relibility.
Reserved for Future Use.
0
1
2
3
4
5
6
7
+-----+-----+-----+-----+-----+-----+-----+-----+
|
|
|
|
|
|
|
|
PRECEDENCE
| D | T | R | 0 | 0 |
|
|
|
|
|
|
|
+-----+-----+-----+-----+-----+-----+-----+-----+
Pola TOS pierwotnie zawierały informacje o priorytecie (precedence – 3 bity) oraz o tym, czy
ma być realizowana minimalizacja opóźnień (opóźnienie – 1 bit), maksymalizacja szybkości
przesyłania (przepustowość – 1 bit), maksymalizacja poprawności (niezawodność – 1 bit,
używane przy zatorach w routerze, datagramy z ustawioną jedynką powinny być odrzucane w
ostatniej kolejności).
TOS było ustawiane przez hosta nadającego i nie było modyfikowane przez routery. Pole to
miało być używane do obsługi QoS (Quality of Service). W rzeczywistości jednak TOS w takiej
postaci nie był obsługiwany przez wiele routerów i jego wykorzystanie było problematyczne.
Powstały różne propozycje jak to pole wykorzystać inaczej, ale do tego samego celu (QoS).
W RFC 2474 zmieniono nazwę pola na DS (Differentiated Services) i sześć najstarszych bitów
nazwano DSCP (Differentiated Services Code Point, DiffServ Services Code). W RFC 3168
pozostałe dwa bity przeznaczono na ECN (Explicit Congestion Notification).
0123456
7
DSCP field ECN field
ECN
Poniższy opis wymaga znajomości protokołu TCP (będzie omawiany na kolejnym wykładzie).
Explicit Congestion Notification (ECN) jest rozszerzeniem protokołów IP oraz TCP,
zdefiniowanym w RFC 3168 (2001). ECN umożliwia powiadamianie punktów końcowych IP (i
TCP) o nadchodzącym zatorze (congestion), bez usuwania pakietów. ECN jest opcjonalny i
Sieci komputerowe rok akad. 2022/2023
dr H. Telega
może być użyty tylko jeśli dwie strony komunikacji wspierają ECN i zgadzają się go użyć oraz
sieć (routery) też wspiera ten mechanizm.
Standardowo (bez obsługi ECN) zator w sieci TCP/IP przejawia się usuwaniem (drop) pakietów.
Jeśli komunikacja jest realizowana z wykorzystaniem ECN, wówczas router może ustawić
odpowiednią wartość (11) na bitach ECN w nagłówku IP, powiadamiając o grożącym zatorze,
zamiast usuwania pakietu.
Dopuszczalne wartości na bitach ECN:
00 – Non ECN-Capable Transport, Non-ECT
10 – ECN Capable Transport, ECT(0)
01 – ECN Capable Transport, ECT(1)
11 – Congestion Encountered, CE.
Uwaga: znaczenie ECT(0) i ECT(1) jest takie samo.
Odbiorca pakietu przesyła informację do źródła, wykorzystując odpowiednie flagi nagłówka
TCP (ze względu na to, że zatorowi może przeciwdziałać TCP, nie IP). Pierwotne źródło danych
redukuje prędkość transmisji zmniejszając rozmiar okna przeciążeniowego tak, jakby wykrył
utratę pakietu z wysłanym segmentem TCP.
Protokół TCP wspiera ECN przez wykorzystanie specjalnych trzech flag (bitów) w nagłówku
TCP: Nonce Sum (NS), ECN-Echo (ECE) oraz Congestion Windows Reduced (CWR).
Wykorzystanie ECN w połączeniach TCP jest opcjonalne (podlega negocjacji poprzez użycie
odpowiednich opcji TCP w trakcie ustanawiania połączenia).
Po wynegocjowaniu użycia ECN w TCP, pakiety IP będą miały w nagłówku ustawioną wartość
ECT na bitach ECN. Po otrzymaniu pakietu z kodem CE (Congestion Experienced) w nagłówku
IP, odbiorca TCP ustawia flagę ECE w nagłówku TCP. Druga strona połączenia reaguje na to
zmniejszeniem rozmiaru okna przeciążeniowego i ustawia bit CWR w nagłówku TCP. Węzeł
transmituje segmenty TCP z ustawionym ECE aż o momentu, gdy otrzyma segment z
ustawionym bitem CWR.
Całkowita długość – na podstawie tego pola oraz pola Długość nagłówka można określić
wielkość bloku danych oraz początek tego bloku. Całkowita długość podawana jest w bajtach.
Ze względu na to, że jest to pole 16 bitowe, to maksymalna możliwa długość datagramu IP
może wynosić 65535. Jednak rozmiar największego datagramu IP, który jest przesyłany przez
pewien fragment sieci zależy od technologii sieciowej, która jest w tym fragmencie używana.
Rozmiar ten jest określany jako MTU – Maximum Transfer Unit. Specyfikacja IPv6 umożliwia
przesyłanie pakietów większych, tzw. Jumbogramów.
Identyfikacja – identyfikacja kolejnych datagramów. Wartość jest wpisywana przez host
nadający i dla kolejnych datagramów jest zwiększana.
Flagi – 3 bity tworzące dwie flagi używane przy fragmentacji datagramów. Fragmentacja
będzie omówiona w dalszej części wykładu.
Przesunięcie fragmentu – 13 bitów, używane przy fragmentacji datagramów.
Czas życia (TTL – Time to Live) – określa przez ile łączy może przejść datagram zanim zostanie
odrzucony przez router. Jest to licznik, zmniejszany o 1 przez każdy router na drodze
datagramu. Host docelowy nie sprawdza TTL. Jeśli TTL=0, wówczas pakiet jest odrzucany i
wysyłany jest komunikat ICMP „Time Expired – TTL Expired”. TTL zabezpiecza przed długimi
Sieci komputerowe rok akad. 2022/2023
dr H. Telega
pętlami. TTL dotyczy licznika połączeń („skoków”) a nie routerów. Na przykład, jeśli komputer
docelowy oddzielony jest od źródłowego przez 4 routery, to liczba skoków wynosi 5. Datagram
wysłany między tymi komputerami z ustawionym TTL na 4 zostanie odrzucony przez czwarty
router. Pole TTL zabezpiecza przed sytuacją, w której datagram wędrowałby w nieskończoność
(lub „zbyt długo”) przez sieć.
TTL jest ustawiany przez system operacyjny lub aplikację, może wynosić np. 128, 254. Niektóre
systemy filtrujące i modyfikujące datagramy (tzw. zapory sieciowe, ściany ogniowe, firewalls)
potrafią modyfikować pole TTL.
Protokół – to jednobajtowe pole w nagłówku określa do jakiego protokołu warstwy wyższej
należy przekazać datagram. Przykładowe wartości to 1 – ICMP, 6 – TCP, 17 – UDP.
Suma kontrolna nagłówka liczona jest tylko dla nagłówka (nie dla danych). Cały nagłówek
dzielony jest na słowa 16-to bitowe. W miejscu sumy kontrolnej wpisywane są same zera.
Słowa te są dodawane a wynik jest uzupełniony do 1 (tzn. jedynki zamieniane na zera i
odwrotnie). Wynik umieszczany jest w polu sumy kontrolnej. W miejscu docelowym suma
kontrolna jest ponownie obliczana. Ponieważ nagłówek w miejscu docelowym zawiera
wyliczoną w komputerze źródłowym sumę kontrolną, to komputer w miejscu docelowym
powinien wyliczyć sumę składającą się z samych jedynek.
Jeśli suma kontrolna w miejscu docelowym jest inna niż same jedynki, to znaczy, że nagłówek
uległ uszkodzeniu. Wówczas oprogramowanie IP odrzuca odebrany pakiet i nie jest tworzony
żaden komunikat o błędzie.
Po przejściu przez router jest modyfikowane pole TTL, zatem suma kontrolna powinna ulec
zmianie. Dopuszcza się odjęcie przez router jedynki od pola sumy kontrolnej (po uzupełnieniu
bitów sumy do 1) lub dodanie jedynki bez zmiany bitów sumy – zamiast ponownego wyliczania
całej sumy kontrolnej.
Taki sposób wyliczania sumy kontrolnej wykorzystywany jest w protokołach IP, UDP i TCP.
Dokładniej opisuje to RFC 1071 (z późniejszymi aktualizacjami).
Fragment RFC 1071:
In outline, the Internet checksum algorithm is very simple:
(1)
Adjacent octets to be checksummed are paired to form 16-bit
integers, and the 1's complement sum of these 16-bit integers is
formed.
(2)
To generate a checksum, the checksum field itself is cleared,
the 16-bit 1's complement sum is computed over the octets
concerned, and the 1's complement of this sum is placed in the
checksum field.
(3)
To check a checksum, the 1's complement sum is computed over the
same set of octets, including the checksum field. If the result
is all 1 bits (-0 in 1's complement arithmetic), the check
succeeds.
Adres źródła – adres IP komputera źródłowego (chyba, że została zastosowana translacja
adresów NAT).
Adres docelowy – adres IP komputera docelowego (chyba, że została zastosowana translacja
adresów NAT).
Sieci komputerowe rok akad. 2022/2023
dr H. Telega
Opcje nagłówka IP
Opcje to dodatkowe pola dołączane do 20 bajtowego nagłówka, zawierają opcjonalne,
dodatkowe informacje, których długość może być różna. Opcje mogą zająć maksymalnie 40
bajtów i mogą zawierać m.in.:
zapis trasy (zapisywany adres każdego routera, przez który przeszedł datagram)
zapis czasu – timestamp (zapisywany adres każdego routera, przez który przeszedł
datagram oraz czas przejścia)
• swobodne punkty routowania (routowanie źródłowe) – loose source routing (lista
adresów IP, przez które musi przejść datagram)
• dokładne punkty routowania (routowanie źródłowe) – strict source routing (podobnie jak
poprzednio, tylko datagram musi przejść wyłącznie przez podane routery)
Pole opcji zawsze zajmuje wielokrotność 4 bajtów, stąd czasem jest uzupełniane zerami.
•
•
Opcja zapisu trasy
Opcja RR (Record Route).
Problemem jest maksymalna długość nagłówka, która ogranicza liczbę adresów IP w nagłówku
do maksymalnie 9.
Struktura zapisu opcji RR:
kod 1 bajt
(typ opcji)
RR=7
length 1 bajt
(liczba bajtów
opcji,
max=39)
ptr –
adres IP 1
1 bajt
(4 bajty)
(numer bajta
wolnego
miejsca
na
wpisanie
kolejnego
adresu IP, na
początku = 4)
…
adres IP 9
(4 bajty)
Pytanie: jakie wartości może przyjmować wskaźnik ptr?
Niektóre wersje programu ping mają opcję oznaczającą wymóg zapisywania adresów
routerów, przez które przechodzi datagram. Routery wpisują adresy interfejsu, poprzez który
przekazują datagram.
Sieci komputerowe rok akad. 2022/2023
dr H. Telega
Opcja zapis czasu (timestamp)
Struktura zapisu opcji timestamp:
kod 1 bajt
(typ opcji)
timestamp
=0x44
length
ptr
OF (4 FL
(4 timestamp …
1 bajt
1 bajt
bity)
bity)
1
(liczba
(numer
(4 bajty)
bajtów
bajtu
opcji,
wolnego
zwykle 36 miejsca na
lub 40)
kolejny
wpis,
na
początku =
5)
timestamp
9
(4 bajty)
OF – flaga (znacznik) przepełnienia. Jeśli router nie może dopisać swojego czasu, bo nie ma już
miejsca, to powiększa OF o jeden. Na początku OF = 0.
FL – znacznik:
0 – zapisuj tylko czasy (8 pozycji czterobajtowych, raczej nieużywane)
1 – zapisuj adres IP i czas (4 wpisy po cztery + cztery bajty)
2 – wysyłający wpisuje adresy IP, router wpisuje czas jeśli to jego adres IP.
Czas powinien być wpisany jako liczba milisekund, które upłynęły od północy UTC, ale
dopuszczalne są też inne zapisy czasu używane przez różne routery.
Opcja routowania źródłowego
Normalnie to routery wybierają dynamicznie trasę datagramów (na podstawie odpowiednich
tabel, które zmieniają się również dynamicznie). Można jednak określić trasę datagramu w
opcjach nagłówka IP.
Routowanie źródłowe dokładne – wysyłający komputer określa dokładną trasę, jaką musi
przejść datagram. Jeśli kolejne routery na tej trasie są przedzielone jakimś innym routerem, to
wysyła komunikat ICMP „source route failed” – (typ 3 z dodatkowo ustawionym polem kod na
wartość 3) i datagram jest odrzucany.
Routowanie źródłowe swobodne – wysyłający określa listę adresów IP, przez jakie musi przejść
datagram, ale datagram może przechodzić również przez inne routery.
Uwaga. Programy traceroute (Unix, MacOs) i tracert (Microsoft Windows) mają możliwość
włączenia routowania źródłowego z wyświetlaniem wyników przejścia datagramu po
określonej trasie.
Podobnie możliwość taką ma program ping.
Sieci komputerowe rok akad. 2022/2023
dr H. Telega
Fragmentacja datagramów IPv4
MTU (Maximum Transmission Unit) to największa porcja danych, jaka może być przesłana w
ramce przez pewną sieć (lub połączone sieci) przy wykorzystaniu konkretnej technologii.
Jeśli datagram IP jest większy niż wynika to z MTU dla warstwy łącza w danej technologii (np.
dla Ethernet II MTU wynosi 1500 bajtów), to IP dokonuje fragmentacji – dzielenia datagramu
na mniejsze części. Różne zagadnienia związane z MTU (w tym typowe wartości MTU) opisuje
RFC 1191.
Informacje o MTU dla danego interfejsu (np. karty sieciowej) wyświetla polecenie netstat
(polecenie to wyświetla jeszcze sporo innych informacji; różne wersje tego polecenia są
dostępne we wszystkich popularnych systemach operacyjnych).
Jeśli datagram IP przechodzi przez kilka sieci, kolejne MTU mogą być różne. Najmniejsze MTU
po drodze nazywa się ścieżką MTU.
RFC 1191 określa mechanizm ustalania ścieżki MTU.
Fragmentacja IP może być wykonana na komputerze wysyłającym bądź na którymś z
routerów. Jeśli nastąpiła fragmentacja, to fragmenty docierają do miejsca docelowego, w
którym oprogramowanie warstwy IP składa je z powrotem w pakiety oryginalnej wielkości.
Fragmenty też mogą być dalej dzielone, informacje z nagłówka IP wystarczają do odtworzenia
wyjściowych pakietów.
Fragmenty stają się samodzielnymi pakietami, które są dostarczane przez oprogramowanie
warstwy IP niezależnie tak jak normalne pakiety niepodzielone.
Składanie fragmentów w całość odbywa się na komputerze docelowym.
Pole identyfikator (16 bitów) w nagłówku IP zawiera numer wysłanego pakietu. Pole powinno
być inicjowane przez protokół warstwy wyższej. Warstwa IP zwiększa identyfikator o 1 dla
kolejnych pakietów. Pole to jest kopiowane do pola identyfikacja każdego fragmentu.
Pole flagi (3 bity) :
Bit 0: zarezerwowane, musi być zero
Bit 1: (DF) 0 = May Fragment, 1 = Don't Fragment.
Bit 2: (MF) 0 = Last Fragment, 1 = More Fragments.
Jeśli bit 1 jest ustawiony (tzn. równy 1), to znaczy, że pakiet nie może być dzielony. Taki pakiet
w przypadku konieczności dzielenia jest odrzucany i do nadawcy wysyłany jest komunikat
ICMP (typ 3 z dodatkowo ustawionym polem kod na wartość 4).
W ostatnim fragmencie pakietu bit 2 jest wyzerowany (w pozostałych fragmentach jest
ustawiony).
Pole przesunięcie fragmentu zawiera informację o przesunięciu fragmentu względem
początku oryginalnego pakietu. Przesunięcie wyrażane jest w blokach ośmiobajtowych,
przesunięcie pierwszego fragmentu wynosi 0. Np. w sieci Ethernet II w części danych ramki
można przesłać 1500 oktetów, czyli przy 20-bajtowym nagłówku w rzeczywistości na dane
pozostaje 1480 bajtów. Stąd przesunięcie pierwszego fragmentu wynosi 1480 bajtów, czyli
185 bloków po 8 bajtów. Przesunięcie drugiego 1480 bloku danych wynosiłoby 370 itd.
Sieci komputerowe rok akad. 2022/2023
dr H. Telega
Jeśli zgubiony zostanie chociaż jeden fragment (i nie można odtworzyć oryginalnego pakietu),
wówczas cały wyjściowy pakiet jest odrzucony.
Jest to jeden z powodów, dla których fragmentacja pakietów jest uznawana za coś
niekorzystnego. Jeśli np. segment TCP jest wysyłany w wielu pakietach, to utrata chociaż
jednego fragmentu wymaga retransmitowania całego segmentu (TCP zawiera mechanizmy
retransmisji segmentów, które nie dotarły do miejsca docelowego).
Drugim powodem, dla którego fragmentacja IPv4 nie jest korzystna, jest fakt, że fragmentacja
może bardzo obciążać routery.
Fragmentację można wywołać np. przez wysyłanie większych komunikatów ICMP przy pomocy
programu ping (opcja –l).
Ustawianie flagi DF może być wykorzystywane w programach, które ustalają ścieżkę MTU
między dwoma komputerami. Ułatwieniem jest określenie dopuszczalnych wartości MTU (RFC
1191).
Sieci komputerowe rok akad. 2022/2023
dr H. Telega
ICMP (Internet Control Message Protocol)
Protokół ICMP opisują dokumenty RFC 792, 950, 1812, 112, 1191, 1256, 2521.
Cel – m.in. raportowanie routingu, dostarczanie informacji o błędach podczas przesyłania ze
źródła do komputera docelowego. ICMP dostarcza też funkcji sprawdzających czy komputery
mogą się ze sobą komunikować przez sieć z wykorzystaniem protokołu IP a także pomaga w
automatycznej konfiguracji hostów.
Komunikaty ICMP wysyłane są w pakietach IP. W efekcie w ramce znajduje się nagłówek IP,
nagłówek ICMP oraz dane komunikatu ICMP.
Struktura komunikatu ICMP
Nagłówek ICMP ma 8 oktetów, z czego pierwsze cztery mają taką samą strukturę:
Typ (1 oktet)
Kod (1 oktet)
Suma kontrolna (2 oktety)
Kolejne cztery oktety mają różne znaczenie w zależności od typu komunikatu ICMP. Na
przykład w komunikatach typu 3 albo 11 (patrz kolejny punkt) te oktety nie są używane. Z kolei
w komunikatach typu 8 i 0 (echo request i echo reply) dwa z tych oktetów oznaczają
identyfikator (odpowiedź echa musi mieć ten sam numer co żądanie echa, by można było
powiedzieć na które żądanie jest to odpowiedź), kolejne dwa oktety zawierają numer
sekwencyjny (rosnące numery w kolejnych komunikatach).
Po nagłówku komunikat ICMP może zawierać pewną liczbę oktetów danych (standardowo
kody ASCII 26 liter alfabetu łacińskiego).
Wybrane typy komunikatów ICMP
0
3
4
5
8
9
10
11
12
Odpowiedź echa (echo reply)
Miejsce docelowe nieosiągalne (destination unreachable)
Tłumienie źródła (source quench)
Przekierowanie (redirect)
Żądanie echa (echo request)
Ogłoszenie routera (router advertisement)
Wybór routera (router selection)
Przekroczenie czasu (time exceeded, TTL equals 0)
Problem parametru (parameter problem)
Żądanie i odpowiedź echa
Cel – wysłanie prostego komunikatu do węzła IP i odebranie echa tego komunikatu. Bardzo
użyteczne przy usuwaniu problemów i naprawianiu sieci.
Narzędzia takie jak ping oraz tracert i traceroute używają tych komunikatów ICMP do
uzyskania informacji o dostępności węzła docelowego.
Sieci komputerowe rok akad. 2022/2023
dr H. Telega
Żądanie echa:
Typ = 8
Kod = 0
Suma kontrolna (2 oktety)
Identyfikator (2 oktety)
Numer sekwencji (2 oktety)
Opcjonalne dane (różna długość)
Odpowiedź echa:
Typ = 0
Kod = 0
Suma kontrolna (2 oktety)
Identyfikator
Numer sekwencji
Opcjonalne dane.
W echo reply pola Identyfikator, Numer sekwencji oraz Opcjonalne dane są przepisywane z
echo request.
W poleceniu PING (echo request/echo reply) można poprzez odpowiedni parametr (-s)
ustawić liczbę przesyłanych oktetów (liter).
Przykład:
ping -s 100 149.156.65.17
ping -s 1472 149.156.65.17
ping -s 1473 149.156.65.17
Uwaga – w technologiach Ethernet rozmiar większy niż 1472 spowoduje konieczność
fragmentacji pakietu IP, ponieważ MTU dla sieci Ethernet wynosi 1500 oktetów. Odejmując
20 oktetów nagłówka IP oraz 8 oktetów nagłówka ICMP dostaniemy maksymalną liczbę
oktetów danych ICMP, które można przesłać w pakiecie z wykorzystaniem ramek Ethernet.
ROUTOWANIE (TRASOWANIE) DYNAMICZNE, PROTOKOŁY
ROUTOWANIA
Sposób obsługi routowania przez warstwę IP nazywa się mechanizmem routowania.
Określenie to dotyczy przeglądania przez system operacyjny tablicy routowania i podejmo–
wania określonych decyzji, co do przesyłania datagramów IP.
Przez pojęcie polityka routowania określa się działania procesu routowania podejmowane w
celu ustanowienia i bieżącej modyfikacji tablicy routowania.
Polityka routowania może obejmować:
• ręczną konfigurację tras w routerach – mówi się wówczas o routowaniu statycznym lub
• konfigurację zautomatyzowaną, w której routery, powiadamiają się nawzajem o znanych
im sieciach używając tzw. protokołów routowania. Mówi się wtedy o routowaniu
dynamicznym.
Zalety routowania statycznego:
• Trasy statyczne nie są rozgłaszane (tzn. routery nie wysyłają informacji o tych trasach do
innych routerów). Ma to dwie zalety – większe bezpieczeństwo oraz mniejsze obciążenie
sieci (przez rozgłoszenia tras).
• Trasa statyczna jest zawsze znana.
Wady routowania statycznego:
• Konfiguracja jest bardziej złożona i czasochłonna w porównaniu z routowaniem
dynamicznym.
• Wszelkie zmiany muszą być wprowadzane „ręcznie” przez administratorów.
• Wymaga pełnej wiedzy administratorów o wszystkich sieciach i trasach.
• Źle się skaluje, co prowadzi do znacznego zwiększenia trudności w konfigurowaniu i
utrzymywaniu sieci, jeśli sieć się powiększa.
Polityka routowania realizowana jest z wykorzystaniem protokołów routowania.
Pożądane cechy protokołów routowania to:
•
•
•
Wyznaczenie najlepszej trasy do punktu docelowego (the optimal route). Wymaga to m.in.
określenia kryterium porównywania tras.
Odporność (robustness). Protokoły routowania muszą działać poprawnie w przypadku
nieprzewidzianych zdarzeń, np. awarii sprzętowych, niewłaściwych konfiguracji, nagłych
dużych obciążeń sieci.
Szybkie osiągnięcie zbieżności (rapid convergence). Przez zbieżność rozumie się tutaj
osiągniecie stanu, w którym wszystkie routery „widzą” jednakowo topologię sieci.
Szybkość zbieżności rozważa się po zmianie topologii sieci – termin ten określa czas
rozpowszechnienia informacji o zmianach do wszystkich routerów. Również po włączeniu
routera/routerów dobrze byłoby, gdyby jak najszybciej routery ustaliły swoje „obrazy
sieci” (i wynikające z nich tablice routowania).
•
Dopasowanie do zmian (flexibility). Po różnych zmianach, np. odłączeniu pewnej sieci,
zmianie szerokości pasma, zmianie opóźnienia itp. router powinien szybko wyznaczyć
nowe optymalne trasy.
Internet jest zorganizowany jako grupa tzw. systemów autonomicznych (Autonomous System
– AS), z których każdy jest osobno administrowany. W każdym systemie autonomicznym
stosowane są protokoły routowania, zwane wewnętrznymi protokołami routowania (ang. IGP
– interdomain gateway protocol lub IRP – interdomain routing protocol). Do protokołów klasy
IGP należą RIP, RIP2, OSPF, OSPF2, IS-IS, NLSP, IGRP, EIGRP. Dwa ostatnie protokoły zostały
utworzone przez firmę Cisco i są jej własnością.
Ze względu na sposób działania protokoły routowania wewnętrznego dzielimy na:
• protokoły wektora odległości (DV, distance-vector): RIP, RIP2, IGRP, EIGRP
• protokoły stanu łącza (link-state): OSPF, OSPF2, IS-IS, NLSP (NetWare Link Services
Protocol)
Uwaga: w starszych opracowaniach firmy Cisco protokół EIGRP był określany jako protokół
hybrydowy.
Oprócz protokołów wewnętrznych są też tzw. zewnętrzne protokoły routowania (EGP –
exterior gateway protocols) - międzydomenowe protokoły routowania (interdomain routing
protocols) używane między routerami działającymi w różnych systemach autonomicznych.
Najważniejszym protokołem zewnętrznym jest BGP.
Oprócz protokołów routowania rozważa się protokoły routowalne, takie jak IP, IPX, Apple Talk.
Protokoły routowalne określają sposoby adresowania, umożliwiające dostarczanie pakietów
w złożonej sieci komputerowej. Routery mogą wyznaczać trasy dla różnych protokołów
routowalnych, nie tylko IP. Każdy z protokołów routowania i każdy z protokołów routowalnych
musi być w routerze skonfigurowany.
Protokoły routowania wektora odległości (wektor-odległość)
Distance vector – wektor odległości.
Protokoły routowania wektora odległości (distance-vector protocols) są oparte na algorytmie
Bellmana Forda obliczania najkrótszych ścieżek w grafie.
Węzły grafu oznaczają routery i sieci, krawędzie odpowiadają połączeniom między routerami.
Połączenia te mają różne koszty, co odpowiada różnym wagom krawędzi grafu.
Generalnie w algorytmie Bellmana Forda zakłada się, że wagi krawędzi mogą być liczbami
ujemnymi, jednak nie ma w grafie cyklu, w którym suma wag krawędzi jest ujemna.
W protokołach routowania wagi nie mogą być ujemne, co oznacza, że można też wykorzystać
np. algorytm Dijkstry (jest wykorzystywany w protokołach stanu łącza).
Poniższa procedura przedstawia przykładową implementację algorytmu Bellmana Forda bez
sprawdzania cykli o ujemnej długości. Procedura wyznacza najkrótszą ścieżkę z wierzchołka
źródłowego source do wszystkich wierzchołków w grafie. Wierzchołki są strukturami o
polach distance oraz predecessor. Pole distance zawiera odległość wierzchołka od
wierzchołka źródłowego.
procedure BellmanFord(list vertices, list edges, vertex source)
// This implementation takes in a graph, represented as lists of vertices
// and edges, and modifies the vertices so that their distance and
// predecessor attributes store the shortest paths.
// Step 1: initialize graph
for each vertex v in vertices:
if v is source then v.distance := 0
else v.distance := infinity
v.predecessor := null
// Step 2: relax edges repeatedly
for i from 1 to size(vertices)-1: // size(vertices) = number of vertices
for each edge uv in edges:
// uv is the edge from u to v
u := uv.source
v := uv.destination
if u.distance + uv.weight < v.distance:
v.distance := u.distance + uv.weight
v.predecessor := u
W protokołach typu wektor odległości realizowana jest rozproszona wersja algorytmu.
Analiza działania protokołów routowania typu wektor odległości. Przykłady.
Problemy i metody przeciwdziałania.
Rozważmy sieć z pięcioma węzłami – routerami i sześcioma połączeniami:
A
1
B
3
D
2
C
4
6
E
5
Węzły w powyższym grafie oznaczają routery (nazwane literami alfabetu). Załóżmy, że do
każdego routera jest podłączona jedna sieć lokalna, która ma pewien adres IPv4. Będziemy
oznaczać te sieci literami takimi samymi, jak routery, tj. A, B, C, D i E. Litera A na powyższym
rysunku w jednym z węzłów oznacza, że do tego węzła (routera) A jest podłączona
bezpośrednio lokalna sieć oznaczona jako A.
Połączenia między routerami też mają przypisane adresy IP (dwa na każde połączenie), ale dla
uproszczenia tych adresów nie będziemy rozważać, odpowiednie sieci będą pominięte w
tablicach routowania routerów. Router oznaczony literą A ma więc trzy interfejsy sieciowe –
jeden do sieci lokalnej A i dwa wykorzystane do połączenia go z innymi routerami. W tablicach
routowania będziemy uwzględniać tylko sieci oznaczone literami.
Poniższe rozważania nie dotyczą jakiegoś konkretnego protokołu z grupy protokołów
wektora odległości (DV – distance vector), tylko będą służyć do wyjaśnienia pewnych
typowych zjawisk oraz ogólnych zasad działania protokołów DV.
Tablice routowania będą prezentowane w sposób uproszczony.
Na początku węzły znają trasy tylko do „swoich” sieci lokalnych, czyli podłączonych
bezpośrednio do routera. Każdy router zna jedną sieć lokalną (oraz dwie lub trzy sieci łączące).
Załóżmy, że koszt każdego połączenia z sąsiednim routerem wynosi jeden. Koszt sieci
podłączonej bezpośrednio wynosi 0.
Tablica routowania (uproszczona) w węźle A:
Z węzła A do
A
Połączenie
lokalne
Koszt
0
Tablica routowania w węźle B:
Z węzła B do
B
Połączenie
lokalne
Koszt
0
Każdy węzeł przesyła co pewien czas wektor odległości do wszystkich swoich łączy, na których
uruchomiono protokół routowania. Wektor odległości wysyłany przez router A zawiera
informację: „do sieci A koszt 0”; możemy to zapisać np. tak: A=0. Wektor odległości zawiera
zatem informację o znanych trasach do pewnych sieci.
Router A przesyła wektor odległości do węzłów B i D.
Uwaga: można spotkać określenie, że routery wykorzystujące protokoły wektora odległości,
przesyłają między sobą tablice routowania. Jest to uproszczenie, ponieważ w rzeczywistości
nie są przesyłane całe tablice routowania, jedynie wektory odległości do znanych sieci.
Węzeł po otrzymaniu wektora odległości od sąsiada dodaje do kosztów zawartych tam tras
koszt lokalnego połączenia (do sąsiada). Na przykład B po otrzymaniu wektora odległości od A
dodaje 1 do kosztu trasy do A i – ze względu na to, że nie posiada trasy do A – dopisuje tę trasę
do swojej tablicy routowania. Zatem teraz tablica routowania B wygląda tak:
Z węzła B do
Połączenie
Koszt
B
lokalne
0
A
1
1
Podobnie w węźle D tablica routowania będzie wyglądała tak:
Z węzła D do
D
A
Połączenie
lokalne
3
Koszt
0
1
Węzły B i D również przesyłają swoje tablice routowania do sąsiadów, B przesyła do A, E i C,
natomiast D przesyła do A i E.
Rozważmy teraz węzeł A. Otrzyma on wektory odległości od B i D, załóżmy, że najpierw
otrzymał wektor odległości od B.
Po otrzymaniu wektora odległości od B węzeł A modyfikuje go tak: B=1, A=2. Trasa do B jest
dopisywana do tablicy routowania węzła A, natomiast trasa do A jest gorsza od trasy już
przechowywanej w węźle A, zatem nie jest brana pod uwagę (gorsza oznacza, że ma wyższy
koszt). Tablica routowania w węźle A wygląda teraz tak:
Z węzła A do
A
B
Połączenie
lokalne
1
Koszt
0
1
Po otrzymaniu wektora odległości od D tablica routowania w węźle A wygląda tak:
Z węzła A do
A
B
D
Połączenie
lokalne
1
3
Koszt
0
1
1
Załóżmy, że następnie węzeł C otrzymał wektor odległości od B na połączeniu numer 2 i
zmodyfikował swoją tablicę routowania do:
Z węzła C do
C
B
A
Połączenie
lokalne
2
2
Koszt
0
1
2
Wektor odległości z węzła B został też przesłany do E, zatem węzeł E zaktualizował swoją
tablicę routowania tak:
Z węzła E do
E
B
A
Połączenie
lokalne
4
4
Koszt
0
1
2
Załóżmy, że następnie E dostał wektor odległości od D. Wektor ten zostaje zmodyfikowany o
koszt połączenia lokalnego numer 6. Po modyfikacji wektor ten wygląda tak: D=1, A=2. Trasa
do węzła D powinna być dopisana do tablicy routowania, natomiast koszt trasy do A jest taki
sam jak koszt trasy już wpisanej do tablicy routowania w E. Załóżmy na razie, że w takim
przypadku nowa trasa (do A) nie jest dopisywana do tablicy routowania.
Zatem tablica routowania w E będzie wyglądała tak:
Z węzła E do
E
B
A
D
Połączenie
lokalne
4
4
6
Koszt
0
1
2
1
W węzłach A, C i E zostały wyznaczone nowe tablice routowania, zatem odpowiednie wektory
odległości zostaną przesłane do sąsiadów:
Z węzła A: A=0, B=1, D=1
Z węzła C: C=0, B=1, A=2
Z węzła E: E=0, B=1, A=2, D=1
do łączy o numerach 1 i 3
do łączy o numerach 2 i 5
do łączy o numerach 4, 5 i 6
Spowoduje to aktualizację tablic routowania w B, D i E:
Z węzła B do
B
A
D
C
E
Połączenie
lokalne
1
1
2
4
Koszt
0
1
2
1
1
Z węzła D do
Połączenie
Koszt
D
A
B
E
lokalne
3
3
6
0
1
2
1
Z węzła E do
E
B
A
D
C
Połączenie
lokalne
4
4
6
5
Koszt
0
1
2
1
1
Z kolei teraz w węzłach B, D i E wyznaczane są nowe wektory odległości i zostaną one
przesłane do A, C i D, co z kolei spowoduje aktualizację tablic routowania w A, C i D.
Z węzła A do
A
B
D
C
E
Połączenie
lokalne
1
3
1
1
Koszt
0
1
1
2
2
Z węzła C do
C
B
A
E
D
Połączenie
lokalne
2
2
5
5
Koszt
0
1
2
1
2
Z węzła D do
D
A
B
E
C
Połączenie
lokalne
3
3
6
6
Koszt
0
1
2
1
2
W A, C i D wyznaczane są nowe wektory odległości i zostaną one przesłane do połączeń
lokalnych, ale nie spowodują żadnych zmian w tablicach routowania. Od tej chwili aż do
momentu wystąpienia jakichś zmian w konfiguracji sieci, przesyłane wektory odległości nie
będą powodować żadnych zmian w tablicach routowania.
Węzły wyznaczyły odległości i trasy do wszystkich sieci lokalnych. O stanie tym mówi się, że
protokół routowania osiągnął zbieżność.
Co się stanie, gdy jedno z połączeń ulegnie awarii?
Załóżmy, że awarii uległo połączenie numer 1 (między A i B). Załóżmy, że węzły potrafią
sprzętowo wykryć awarię lokalnego połączenia. Załóżmy też, że uszkodzone połączenia mają
koszt równy nieskończoności (∞). Zatem tablice routowania w A i B zostaną natychmiast
zmodyfikowane tak:
Z węzła A do
A
B
D
C
E
Połączenie
lokalne
1
3
1
1
Koszt
0
∞
1
∞
∞
Z węzła B do
B
A
D
C
E
Połączenie
lokalne
1
1
2
4
Koszt
0
∞
∞
1
1
Uwaga. Protokoły typu wektor odległości mogą nie rozgłaszać informacji o sieci niedostępnej.
Wówczas trasa do takiej sieci staje się niedostępna dla kolejnych routerów dopiero po tym,
jak routery te nie otrzymają informacji o tej sieci przez pewną liczbę kolejnych rozgłoszeń
(rzędu kilku). Przekazywanie informacji o trasach niedostępnych nazywane jest „zatruwaniem
tras” (route poisoning). Oczywiście zatruwanie tras przyspiesza uzyskanie zbieżności. Termin
„zatruwanie tras” zwykle można spotkać w kontekście jeszcze jednego mechanizmu, tzw.
dzielonego horyzontu (będzie to wyjaśnione niżej).
Węzły A i B wyślą (przy najbliższym przesyłaniu wynikającym z protokołu) nowe wektory
odległości:
Z węzła A: A=0, B=∞, D=1, C=∞, E=∞ do łącza 3
Z węzła B: B=0, A=∞, D=∞, C=1, E=1 do łączy 2 i 4.
Węzeł D po otrzymaniu wektora odległości od A i po zmodyfikowaniu tego wektora do:
A=1, B=∞, D=2, C=∞, E=∞
stwierdza, że przesłane trasy nie są lepsze od przechowywanych w tablicy routowania D.
Jednak trasa do B wiedzie przez łącze 3, a z tego właśnie łącza nadeszła informacja o
nieosiągalności B, zatem wpis dotyczący B powinien zostać zmodyfikowany. Nowa tablica
routowania w węźle D będzie wyglądała tak:
Z węzła D do
D
Połączenie
lokalne
Koszt
0
A
B
E
C
3
3
6
6
1
∞
1
2
Podobnie zmienią się tablice routowania w węzłach C i E:
Z węzła C do
C
B
A
E
D
Połączenie
lokalne
2
2
5
5
Koszt
0
1
∞
1
2
Z węzła E do
E
B
A
D
C
Połączenie
lokalne
4
4
6
5
Koszt
0
1
∞
1
1
Węzły D, C i E wyślą nowe wektory odległości.
Z węzła D: D=0, A=1, B=∞, E=1, C=2 do łączy 3 i 6
Z węzła C: C=0, B=1, A=∞, E=1, D=2 do łączy 2 i 5
Z węzła E: E=0, B=1, A=∞, D=1, C=1 do łączy 4, 5 i 6
Przesłane wektory odległości spowodują aktualizację tablic routowania w węzłach A, B, D i E:
Z węzła A do
A
B
D
C
E
Połączenie
lokalne
1
3
3
3
Koszt
0
∞
1
3
2
Z węzła B do
B
A
D
C
E
Połączenie
lokalne
1
4
2
4
Koszt
0
∞
2
1
1
Z węzła D do
D
A
B
E
C
Połączenie
lokalne
3
6
6
6
Koszt
0
1
2
1
2
Z węzła E do
E
B
A
D
C
Połączenie
lokalne
4
6
6
5
Koszt
0
1
2
1
1
Po tych aktualizacjach zostaną przesłane nowe wektory odległości:
Z węzła A: A=0, B=∞, D=1, C=3, E=2
Z węzła B: B=0, A=∞, D=2, C=1, D=1
Z węzła D: D=0, A=1, B=2, E=1, C=2
Z węzła E: E=0, B=1, A=2, D=1, C=1
do łącza 3
do łączy 2 i 4
do łączy 3 i 6
do łączy 4, 5 i 6
To z kolei spowoduje modyfikację tablic routowania w A, B i C:
Z węzła A do
A
B
D
C
E
Połączenie
lokalne
3
3
3
3
Koszt
0
3
1
3
2
Z węzła B do
B
A
D
C
E
Połączenie
lokalne
4
4
2
4
Koszt
0
3
2
1
1
Z węzła C do
C
B
A
E
Połączenie
lokalne
2
5
5
Koszt
0
1
3
1
D
5
2
Kolejne przesyłane wektory odległości nie spowodują żadnych zmian w tablicach routowania,
zatem osiągnięta została zbieżność w nowej topologii połączeń. Wszystkie węzły są osiągalne
z dowolnego węzła w sieci.
Uwaga. Nie zawsze router jest w stanie wykryć uszkodzenie łącza. Ponadto uszkodzeniu może
ulec nie tylko łącze, ale np. sąsiedni router (np. zawiedzie oprogramowanie routera). Może też
zostać uszkodzona ramka, zawierająca pakiet z wektorem odległości i wektor odległości nie
dotrze do docelowego routera. Dlatego w protokołach typu wektor odległości trasa jest
zaznaczana jako niedostępna, gdy router nie dostanie o niej informacji od sąsiada przez kilka
kolejnych rozgłoszeń. Na przykład w protokole RIP ten czas standardowo wynosi 180 sekund,
czyli sześć rozgłoszeń, gdyż rozgłoszenia wektorów odległości są w tym protokole
wykonywane co 30 sekund. Zdarza się, że administrator rozłącza łącze na chwilę i po niedługim
czasie włączają je ponownie. Trasa niedostępna nie jest jeszcze usuwana z tablicy routowania
przez kilka rozgłoszeń, np. w RIP przez kolejne 90 sekund (3 rozgłoszenia). Powoduje to jeszcze
większe opóźnienie w czasie uzyskania zbieżności.
Pętle routowania (routing loops, bouncing effect)
Załóżmy, że koszt połączenia numer 5 jest nie jeden, lecz dziesięć.
W poniższej tabeli zamieszczone są trasy do C z każdego z węzłów:
z węzła A do C
z węzła B do C
z węzła C do C
z węzła D do C
z węzła E do C
Połączenie
1
2
lokalne
3
4
Koszt
2
1
0
3
2
Prześledźmy, co się stanie po uszkodzeniu połączenia numer 2 (z B do C).
Przez krótki czas (zanim B prześle nowy wektor odległości) trasy będą takie:
Połączenie
Koszt
z węzła A do C
1
2
z węzła B do C
2
∞
z węzła C do C
lokalne
0
z węzła D do C
3
3
z węzła E do C
4
2
Załóżmy, że zanim węzeł B zdążył wysłać nowy wektor odległości do A i E, otrzymał wektor
odległości od A (A wysłał do B i D). W węźle D nic się nie zmieni, ale B po dodaniu jedynki
(kosztu łącza) do kosztu trasy z A do C (koszt=2) otrzyma trasę przez A do C o koszcie równym
3. Koszt ten jest niższy od nieskończoności, zatem B zmienia swoją tablicę routowania i nowy
wektor odległości zostanie przesłany do A i E. Ze względu na to, że wektor ten dotrze do A i E
przez połączenia 1 i 4, które były normalnie używane jako trasy do C z A i E, w węzłach tych (tj.
A i E) muszą się zmienić tablice routowania. Sytuacja jest więc następująca:
z węzła A do C
z węzła B do C
z węzła C do C
z węzła D do C
z węzła E do C
Połączenie
1
1
lokalne
3
4
Koszt
4
3
0
3
4
Teraz tablice routowania zawierają pętlę. Każdy datagram kierowany do C dotrze do B, a
następnie będzie „odbijany” (bouncing effect) między B i A aż do wyzerowania pola TTL. Efekt
ten zostanie zatrzymany dopiero po osiągnięciu nowego stanu zbieżności.
Prześledźmy, co się będzie działo dalej w rozważanej sieci.
Jeśli C ogłosi swój wektor odległości do E, E doda 10 do kosztu (10+0=10) i trasa nie zostanie
uwzględniona w tablicy routowania E.
Jeśli A i E prześlą swoje tablice routowania do D i B to sytuacja się zmieni:
z węzła A do C
z węzła B do C
z węzła C do C
z węzła D do C
z węzła E do C
Połączenie
1
1
lokalne
3
4
Koszt
4
5
0
5
4
Po przesłaniu nowego wektora odległości z B do A trasa z A do C zwiększy koszt do 6. Po
przesłaniu nowego wektora odległości z A do D i B sytuacja będzie taka:
z węzła A do C
z węzła B do C
z węzła C do C
z węzła D do C
z węzła E do C
Połączenie
1
1
lokalne
3
4
Koszt
6
7
0
7
6
Znowu wektor odległości przesłany przez C do E jest w E ignorowany.
Każda „runda” wymiany wektorów odległości zwiększa koszt trasy do C z węzłów A, B, D i E.
Po następnej rundzie będziemy mieli:
z węzła A do C
z węzła B do C
z węzła C do C
z węzła D do C
z węzła E do C
Połączenie
1
1
lokalne
3
4
Koszt
8
9
0
9
8
Po kolejnych „rundach” otrzymamy w pewnej chwili:
z węzła A do C
z węzła B do C
z węzła C do C
z węzła D do C
z węzła E do C
Połączenie
1
1
lokalne
3
4
Koszt
12
11
0
11
12
Teraz jeśli E otrzyma wektor odległości z C, zmieni tablicę routowania, co w końcu doprowadzi
do sytuacji:
z węzła A do C
z węzła B do C
z węzła C do C
z węzła D do C
z węzła E do C
Połączenie
1
4
lokalne
6
5
Koszt
12
11
0
11
10
Otrzymaliśmy zbieżność w nowej topologii, pętla routowania została usunięta. Trwało to
jednak stosunkowo długo. W czasie, gdy istniała pętla, gubione były datagramy, ponadto
krążenie datagramów może doprowadzić do przeciążenia sieci i datagramy mogą być gubione
nawet nie z powodu wyzerowania TTL, co z kolei może doprowadzić do jeszcze większych
opóźnień w wymianie wektorów odległości między routerami (jeśli datagramy z tymi
wektorami będą gubione).
Zliczanie do nieskończoności (counting to infinity)
Załóżmy, że w rozważanej sieci jest uszkodzone połączenie numer 1 i uszkodzeniu uległo
drugie połączenie – numer 6. Teraz węzły A i D są odcięte od węzłów B, C i E.
Rozważmy tylko węzły A i D.
Tablica routowania w węźle D będzie taka:
Z węzła D do
D
A
B
E
C
W węźle A mamy:
Połączenie
lokalne
3
6
6
6
Koszt
0
1
∞
∞
∞
Z węzła A do
A
B
D
C
E
Połączenie
lokalne
3
3
3
3
Koszt
0
3
1
3
2
Jeśli D wyśle swój wektor odległości najpierw (zanim zrobi to A), wówczas A natychmiast
wykryje, że jedynym dostępnym węzłem jest D i została osiągnięta zbieżność.
Jeśli jednak zdarzyłoby się, że najpierw wektor odległości zostanie przesłany z A do D:
Z węzła A: A=0, B=3, D=1, C=3, E=2 do łącza 3
To spowoduje modyfikację tablicy routowania w D:
Z węzła D do
D
A
B
E
C
Połączenie
lokalne
3
3
3
3
Koszt
0
1
4
3
4
Pojawi się pętla routowania. Co więcej, za każdym kolejnym przesłaniem wektora odległości
koszt połączeń będzie wzrastał o 2. To zjawisko nazywane jest zliczaniem do nieskończoności
(counting to infinity).
W protokołach typu wektor odległości ustalana jest pewna granica kosztu, powyżej której
połączenie traktowane jest jako niedostępne. Np. w protokole RIP liczba 16 oznacza
„nieskończoność” (miejsce docelowe niedostępne). Oczywiście w tracie tego „zliczania do
nieskończoności” zawartość tablic routowania powoduje pętle.
Dzielony horyzont (split horizon)
Pętle routowania, efekt odbijania (bouncing effect), zliczanie do nieskończoności to
niekorzystne zjawiska związane z routowaniem według protokołów typu wektor odległości.
Aby zminimalizować te niekorzystne zjawiska stosowane są różne techniki, m.in. dzielony
horyzont (split horizon) i natychmiastowe (wymuszane) aktualizacje (triggered updates).
Idea dzielonego horyzontu opiera się na prostej obserwacji: jeśli węzeł A przekazuje
datagramy do pewnego miejsca przeznaczenia X przez węzeł B, to nie ma sensu, aby B
przekazywał datagramy do X przez A. Podobnie nie ma sensu przekazywanie informacji z A do
B, że trasa do X wiedzie przez A.
Zatem węzeł nie będzie przekazywał jednakowego wektora odległości do wszystkich łączy. Do
łącza nie zostanie przekazana informacja o trasach wiodących przez to łącze.
Taka technika spowoduje, że w rozważanej sieci z uszkodzonymi połączeniami numer 1 i 6 nie
powstanie pętla routowania między A i D, gdyż A nie prześle do węzła D informacji o trasach z
wykorzystaniem łącza numer 3.
Dzielony horyzont nie zawsze likwiduje pętle routowania.
Przyjrzyjmy się naszej przykładowej sieci z uszkodzonymi połączeniami o numerach 1 i 6.
Weźmy teraz pod uwagę routery B, C i E. Zaraz po uszkodzeniu połączenia między D i E sytuacja
jest taka:
z węzła B do D
z węzła C do D
z węzła E do D
Połączenie
4
5
6
Koszt
2
2
∞
E wysyła nowy wektor odległości do łączy 4 i 5. Załóżmy, że wektor ten dotarł do B, ale ze
względu np. na błędy transmisji nie dotarł do C. Sytuacja jest teraz taka:
z węzła B do D
z węzła C do D
z węzła E do D
Połączenie
4
5
6
Koszt
∞
2
∞
Informacja z C o trasie do D jest oczywiście potem przesłana do B (do E nie jest przesyłana, bo
działa dzielony horyzont), B aktualizuje swoja tablicę routowania:
z węzła B do D
z węzła C do D
z węzła E do D
Połączenie
2
5
6
Koszt
3
2
∞
B przekazuje do węzła E informację o trasie do D. E aktualizuje swoją tablicę routowania i
sytuacja jest taka:
z węzła B do D
z węzła C do D
z węzła E do D
Połączenie
2
5
4
Koszt
3
2
4
Oczywiście E wysyła do C informację o „nowej trasie” do D i C aktualizuje swoją tablicę
routowania, zwiększając koszt trasy do węzła D do 5:
z węzła B do D
z węzła C do D
z węzła E do D
Połączenie
2
5
4
Koszt
3
5
4
Otrzymaliśmy znowu pętlę routowania i wystąpi efekt zliczania do nieskończoności
(spowoduje on wolniejszą zbieżność).
Dzielony horyzont może wykorzystywać pewną wersję zatruwania zatruwania tras – tzw. split
horizon with poison reverse – informacja odwrotna (reverse) jest przekazywana, jednak z
metryką nieskończoną.
Poison reverse updates jest tu odmianą zatruwania tras, ale tych normalnie nie rozgłaszanych
w wyniku działania strategii split horizon. Technika ta może zapobiec większym pętlom
routowania.
Natychmiastowe – wymuszane aktualizacje (triggered updates)
W przypadku zmiany metryki trasy musi nastąpić rozgłoszenie (bez względu na okres
rozgłoszeń charakterystyczny dla danego protokołu). Powoduje to szybszą zbieżność i
częściowo zapobiega pętlom routowania.
Zegary hold-down (hold-down timers)
Inny mechanizm stosowany w celu uniknięcia niekorzystnych zjawisk związanych z
routowaniem typu wektor odległości to tzw. zegary hold-down. Router po otrzymaniu od
sąsiada informacji o dezaktualizacji trasy włącza specjalny zegar (hold-down timer). Jeśli przed
upływem czasu progowego nastąpi aktualizacja od tego samego sąsiada na trasę aktywną, to
trasa jest zaznaczana jako aktywna. Jeśli przed upływem czasu progowego router dostanie od
innego routera informację o trasie do rozważanego miejsca docelowego z metryką mniejszą
bądź równą tej zdezaktualizowanej, wówczas następuje wpis zgłoszonej trasy. Natomiast jeśli
przed upływem czasu progowego router dostanie od innego routera informację o trasie do
rozważanego miejsca docelowego z metryką większą od tej zdezaktualizowanej, taka trasa nie
jest brana pod uwagę.
Protokół routowania RIP
(RFC 1058)
RIP jest protokołem typu wektor odległości. Metryką w RIP jest liczba skoków (hops) do celu
(0 oznacza sieć dołączoną bezpośrednio, 1 oznacza, że po drodze do sieci docelowej jest jeden
„skok” do następnego routera itd.). Administrator może skonfigurować inne wartości dla
pewnych połączeń, tym samym może wprowadzić np. preferencje dla tras szybszych. Routery
Cisco mają możliwość ustawienia automatycznego powiększania metryki o zadaną liczbę dla
wszystkich tras, o których router dowiedział się z określonego interfejsu.
Na podstawie informacji (wektorów odległości) otrzymanych od sąsiadów router aktualizuje
swoją tablicę routowania. Przy najbliższym rozgłoszeniu przesyłany jest zaktualizowany
wektor odległości. W typowy dla protokołów DV sposób informacja o dostępnych sieciach
rozchodzi się po całej sieci.
W protokole RIP metryka 16 oznacza umownie nieskończoność (miejsce niedostępne), zatem
RIP nie jest dobrym protokołem w przypadku dużych sieci. Trasa o metryce 16 jest traktowana
jak trasa niedostępna.
W RIP można ustawić trasę domyślną (adres 0.0.0.0).
W wersji RIP obsługiwanej przez routery Cisco można przechowywać więcej niż jedną trasę o
takiej samej metryce. Można włączyć równoważenie obciążeń (load balancing) na dwa
sposoby:
Process switching (packet-by-packet load balancing), kosztowny i dlatego nie polecany, każdy
pakiet jest kierowany osobno, dla każdego jest przeglądana tablica routowania.
Fast switching (destination-by-destination), tylko dla pierwszego pakietu z pewnego miejsca
źródłowego do pewnego miejsca docelowego przeszukiwana jest tablica routowania.
Wyznaczona trasa jest zapisywana w pamięci podręcznej (cache) i kolejne pakiety wędrują tą
samą ścieżką.
W protokole RIP wykorzystywane są następujące mechanizmy typowe dla protokołów
wektor odległości:
• Split horizon (+ with poison reverse)
• Holddown counters (timers)
• Triggered updates
W protokole RIP są zaimplementowane cztery zegary, liczniki (timers, counters):
Update timer (standardowo ustawiony na 30 sekund) – po przesłaniu wektora odległości
(routing update) zegar jest zerowany. Po osiągnięciu 30 s. wysyłany jest następny wektor.
Invalid timer (standardowo ustawiony na 180 sekund) – za każdym razem jak router dostaje
uaktualnienie pewnej trasy (tzn. informację o niej od innego routera) zegar ten dla trasy jest
zerowany. Po osiągnięciu wartości progowej (180s.) trasa jest zaznaczana jako niepoprawna
(invalid), ale pakiety jeszcze są kierowane tą trasą.
Hold-down timer (standardowo ustawiany na 180s.) – po przekroczeniu wartości progowej
przez invalid timer trasa jest ustawiana w stan hold-down. Trasa jest ustawiana w stan holddown również wtedy, gdy router dostanie informację o tym, że sieć jest nieosiągalna (i nie ma
innej, osiągalnej trasy).
Flush-timer (standardowo ustawiony na 240s.) – zegar dla trasy jest zerowany po otrzymaniu
informacji o trasie. Po osiągnięciu czasu progowego trasa jest usuwana nawet, jeśli trasa jest
jeszcze w stanie hold-down.
W protokole RIP przewidziano możliwość odpytywania routera o cały wektor odległości lub o
trasy do pewnych miejsc docelowych – takie możliwości są wykorzystywane przy starcie oraz
na ogół w celach diagnostycznych.
Format komunikatu RIPv1.
Komunikaty RIP przesyłane są w datagramach UDP:
Nagłówek IP (20 bajtów),
nagłówek UDP (8 bajtów),
Komunikat RIP:
polecenie (1-6) bity 0-7,
wersja (1) bity 8-15,
musi być zero bity 16-31,
rodzina adresów (2) bity 32-47,
musi być zero bity 48-63,
adres IP kolejne 32 bity,
musi być zero kolejne 32 bity,
musi być zero kolejne 32 bity,
metryka (1-16) kolejne 32 bity,
... (do 24 tras o formacie takim jak poprzednie 20 bajtów).
W komunikatach RIP przekazywane są adresy do hostów i sieci z wykorzystaniem klas.
Zaletą protokołu RIP jest jego prostota (zatem procesor nie jest nadmiernie obciążony
aktualizacją tablicy routowania i innymi działaniami) i łatwość konfiguracji.
Wadą jest wolne rozprzestrzenianie się informacji o zmianach w topologii sieci (np. po
zerwaniu pewnego połączenia). Mówi się o wolnej zbieżności protokołu RIP. Inną wadą jest
stosunkowo częste (co 30s.) przesyłanie dużych porcji informacji w komunikatach RIP (wektory
odległości), co obciąża sieć.
Wadą RIPv1 jest to, że nie daje możliwości przesyłania masek. RIP w wersji 1 jest protokołem
routowania klasowego. W przypadku otrzymania informacji o podsieci pewnej sieci klasowej,
przyjmowana jest maska taka, jaka jest ustawiona na interfejsie, do którego dotarł wektor
odległości z tą informacją. Na granicach klas jednak routery RIP wykonują automatyczną
sumaryzację, co przy niepoprawnych konfiguracjach może prowadzić do błędów w
routowaniu (przykład na tablicy).
Przypomnienie: zbieżność oznacza stan, w którym wszystkie routery mają taki sam,
prawidłowy obraz sieci (na pewnym obszarze). Przed osiągnięciem zbieżności, w trakcie
rozprzestrzeniania informacji o zmianach w sieci może występować niekonsekwentne
routowanie czy pętle.
RIP 2
(RFC1723)
RIP2 przekazuje maski podsieci, można stosować sieci bezklasowe (CIDR Classless
Interdomain Routing) i podsieci o zmiennym rozmiarze (VLSM Variable Length Subnet Mask).
Umożliwia prostą autentykację (przez hasła). Przekazuje adresy następnego skoku w
komunikatach.
Część wad RIP pozostała: 16 jako metryka oznaczająca nieskończoność, brak alternatywnych
tras.
Środowiska z wieloma protokołami routowania. Odległości
administracyjne.
W środowisku współdziałania wielu protokołów routowania, dla tras w zależności od tego
jakie jest źródło, z którego router dowiedział się o trasie, ustawiana jest tzw. odległość
administracyjna (NIE metryka) – administrative distance. Dla protokołu RIP odległość wynosi
120. Odległość jest używana tylko wewnętrznie przez router. Router wybiera trasy o
najmniejszej odległości. Dla wpisu statycznego przyjmuje się odległość administracyjną równą
1, dla sieci dołączonej bezpośrednio odległość jest równa zero.
Standardowe odległości dla tras:
Źródło trasy
Connected interface
Static route
Summary EIGRP
External BGP
Internal EIGRP
IGRP
OSPF
IS-IS
RIP
EGP
Internal BGP
Unknown
Odległość (administrative distance)
0
1
5
20
90
100
110
115
120
140
200
255
Na routerach można również włączyć redystrybucję tras między protokołami routowania
według różnych zasad, z odpowiednim przeliczaniem metryk.
Odległości administracyjne są również wykorzystywane przy konfigurowaniu tras pływających
(ang. floating routes). Trasa pływająca to trasa zapasowa, która będzie użyta w przypadku
trasy podstawowej. W routingu statycznym skonfigurowanie trasy pływającej wymaga
ustawienia odległości administracyjnej większej niż tej ustawionej dla trasy podstawowej
(standardowo równej 1).
Sieci komputerowe, rok akad. 2020/2021
dr H. Telega
Warstwa transportowa, protokoły UDP i TCP
Protokół IP wraz z mechanizmem trasowania (routowania) umożliwia dostarczanie pakietów
(datagramów IP) między komputerami w Internecie. Jednak protokół ten nie zawiera (nie
określa) żadnych wskazówek na temat programu, do którego ma być skierowana zawartość
pakietu. Na przykład komunikat http powinien być dostarczony do serwera WWW albo do
przeglądarki WWW, nie powinien trafić do serwera baz danych ani do serwera poczty. Przez
sieć komputerową komunikują się ze sobą programy uruchomione na komputerach (procesy).
Przeważnie jeden z tych programów jest klientem, drugi serwerem oferującym jakieś usługi.
Na przykład, jeśli chcemy oglądać strony WWW, to uruchamiamy przeglądarkę WWW.
Przeglądarka łączy się z serwerem WWW. Na jednym komputerze może być uruchomionych
wiele procesów komunikujących się z procesami na innych. Zatem niezbędny jest odpowiedni
mechanizm dostarczania pakietów nie tylko do konkretnego komputera (czym zajmuje się IP),
ale do konkretnego programu (procesu). Informacje o docelowym i źródłowym procesie
zawarte są w nagłówkach protokołów warstwy transportu. Stos protokołów TCP/IP zawiera
dwa protokoły w warstwie transportu: TCP oraz UDP. Obydwa umożliwiają dostarczenie
danych do procesu działającego na komputerze, przy czym wykorzystywane są tzw. porty.
Porty są ponumerowane, numer portu jest liczbą dwubajtową. Każda aplikacja komunikująca
się przez sieć z wykorzystaniem TCP lub UDP rezerwuje na swoje potrzeby pewne zasoby
systemowe (komunikacyjne bufory w pamięci operacyjnej), ma do dyspozycji tzw. gniazda
(ang. termin to socket). Każde gniazdo jest identyfikowane przez numer IP oraz numer portu.
Do programowej obsługi gniazd wykorzystywane są specjalne biblioteki komunikacyjne.
Interfejs komunikacyjny zawierający funkcje systemowe umożliwiające komunikowanie się
programów z wykorzystaniem TCP lub UDP nazywa się interfejsem gniazd. Interfejs gniazd jest
dostępny w najważniejszych systemach operacyjnych, np. w różnych wersjach systemu Unix
lub systemach wywodzących się z Uniksa (Linux, Apple OS X). W Microsoft Windows interfejs
ten nazywa się Windows Socket API (WSA,) skrócona nazwa to Winsock.
Przykłady pakietów wykorzystujących protokoły warstwy transportu (TCP lub UDP).
Pakiet IP zawierający segment TCP z komunikatem HTTP
Nagłówek IPv4
Nagłówek TCP
Komunikat HTTP, np. 1460 bajtów
(zwykle 20 bajtów) (zwykle 20 bajtów)
Pakiet IP zawierający segment TCP z komunikatem DNS
Nagłówek IPv4
Nagłówek TCP
Komunikat DNS (np. transfer strefy między
(zwykle 20 bajtów) (20 bajtów)
głównych a pomocniczym serwerem DNS w
strefie)
Pakiet IP zawierający pusty segment TCP (np. segment potwierdzający)
Nagłówek IP
Nagłówek TCP
(zwykle 20 bajtów) (20 bajtów)
1
Sieci komputerowe, rok akad. 2020/2021
dr H. Telega
Pakiet IP zawierający pusty segment TCP (np. segment nawiązujący połączenie TCP)
Nagłówek IP
Nagłówek TCP
(zwykle 20 bajtów) (20 bajtów+4 bajty
opcji MSS)
Pakiet IP zawierający datagram UDP
Nagłówek IP
Nagłówek Komunikat RIP (wektor odległości lub część tego
(zwykle 20 bajtów) UDP
wektora)
(8 bajtów)
Pakiet IP zawierający datagram UDP
Nagłówek IP
Nagłówek Komunikat DNS (zapytanie od klienta do serwera DNS
(zwykle 20 bajtów) UDP
lub odpowiedź od serwera do klienta)
(8 bajtów)
Przykład pakietu IP nie wykorzystującego ani TCP, ani UDP
Pakiet IP zawierający komunikat ICMP
Nagłówek IP
Komunikat ICMP, różnej wielkości > 4B.
(zwykle 20 bajtów) Może być też przedstawiany jako
nagłówek ICMP + ewentualne dane
Przypomnienie: pakiety IP są enkapsulowane w ramkach jakiejś technologii warstwy 2 modelu
ISO OSI, na przykład jednej z „odmian Ethernetu” (określenie potoczne) albo WIFI (802.11nn):
Nagłówek
ramki
Pakiet IP
Suma
kontro
lna
ramki
Nagłówki ramek różnych technologii mogą się znacznie różnić. Np. w „technologiach Ethernet”
nagłówek zawiera m.in. dwa adresy MAC, w technologiach bezprzewodowych z grupy
802.11nn może zawierać nawet cztery adresy MAC.
Uwaga. W sieciach komputerowych stosowane są też inne sposoby przekazywania pakietów.
Na przykład w sieciach ATM (Asynchronous Transfer Mode) pakiet dzielony jest na kawałki,
które są przesyłane w 53 bajtowych komórkach (48 bajtów danych + 5 bajtów specjalnego
nagłówka).
2
Sieci komputerowe, rok akad. 2020/2021
dr H. Telega
UDP – User Datagram Protocol
RFC 768 (1980 rok).
UDP jest prostym protokołem bezpołączeniowym warstwy transportu. Umożliwia przesyłanie
danych między procesami działającymi na komputerach obsługujących stos protokołów
TCP/IP. Dostarczanie danych do procesów jest możliwe dzięki określeniu adresów IP
komputerów komunikujących się oraz 16 bitowych numerów portów.
Porcja danych zgodna z protokołem UDP nazywana jest datagramem UDP, czasem też
pakietem UDP.
UDP nie zapewnia niezawodności, nie ma żadnej gwarancji, że datagramy UDP dotrą do
miejsca przeznaczenia. Ewentualne zapewnienie niezawodności (jeśli w danej komunikacji jest
wymagane) musi być realizowane przez protokoły warstwy aplikacji.
UDP ma niewielki nagłówek (8 bajtów w porównaniu do 20 lub więcej bajtów nagłówka TCP),
nie zawiera mechanizmów ustanawiania połączenia ani sterowania przepływem datagramów
(takie mechanizmy są w TCP), zatem jest „szybszy” od TCP.
W odróżnieniu od segmentów TCP, datagramy UDP mogą być przesyłane w pakietach IP z
adresem docelowym przesyłania grupowego (w IPv4 jest to klasa adresowa D), pakiet taki
może być kierowany do wielu komputerów jednocześnie.
Przykłady zastosowań: strumieniowanie audio/wideo, wideokonferencje, transmisje głosu.
UDP jest stosowany w RIP, komunikaty RIP są przesyłane w datagramach UDP kierowanych na
port numer 520. Zapytania DNS wysyłane z hostów do serwerów DNS (i odpowiedzi również)
są przesyłane w datagramach UDP. Pewne rodzaje komunikacji DNS wykorzystują jednak
protokół TCP – dotyczy to np. transferu stref z serwera głównego do serwerów pomocniczych.
Porty
Przydział numerów portów był kiedyś publikowany w RFC (ostatni z nich to RFC1700). Obecnie
aktualne przyporządkowanie można znaleźć na stronie IANA (Internet Assigned Numbers
Authority) http://www.iana.org/assignments/port-numbers.
Poprawne numery portów: 1..65535. Numer 0 może być używany jako numer portu
źródłowego, jeśli nadawca nie oczekuje odpowiedzi.
IANA dzieli porty na trzy grupy:
1..1023 – porty ogólnie znane (well-known port numbers), w większości systemów mogą być
przypisywane przez procesy systemowe lub działające z uprawnieniami użytkownika
uprzywilejowanego.
1024..49151 – zarejestrowane (registered), do użytku przez różne aplikacje, powinny być
wykorzystywane po zarejestrowaniu.
49152 ..65535 – dynamiczne (efemeryczne) lub prywatne, do prywatnego użytku, np. dla
testowanych aplikacji klient-serwer. Mogą być przydzielane dynamicznie np. dla przeglądarki
WWW.
3
Sieci komputerowe, rok akad. 2020/2021
dr H. Telega
Porty na których dostępne są powszechne usługi w implementacjach TCP/IP:
Nazwa
Port TCP i UDP
RFC
echo
7
862 serwer zwraca wszystko co wysyła klient
discard
9
863 serwer odrzuca wszystko
daytime
13
867 data i czas
chargen
19
864 TCP generuje nieprzerwany ciąg znaków
do zakończenia połączenia, UDP generuje
ciąg o losowej długości
time
37
868 czas – liczba sekund od 01-01-1900 GMT
Uwaga: w 2036 roku licznik się wyzeruje.
telnet
23
ssh
22
http
80
ftp
21
Aplikacja jest odpowiedzialna za rozmiar wysyłanego datagramu. Jeśli wielkość przekroczy
MTU sieci, wówczas datagram IP (zawierający w sobie datagram UDP) jest dzielony
(następuje fragmentacja IP).
Enkapsulacja datagramu UDP w datagramie IP
nagłówek IP
20 bajtów
nagłówek UDP
dane UDP
8 bajtów
Nagłówek UDP
0
15 16
31
16 bitowy numer portu źródłowego
16 bitowy numer portu docelowego
16 bitowa długość UDP (nagłówek + dane) –
16 bitowa suma kontrolna UDP
wypełniana opcjonalnie (zera jeśli nie
(obejmuje tzw. pseudonagłówek,
uzupełnione)
nagłówek UDP oraz dane)
Dane (jeśli są)
Suma kontrolna
Suma kontrolna jest jedynym mechanizmem w UDP, który umożliwia sprawdzenie, czy
datagram UDP dotarł nieuszkodzony do celu.
Suma kontrolna jest opcjonalna jeśli datagram UDP jest przesyłany w pakiecie IPv4, ale jest
obowiązkowa, jeśli datagram UDP jest przesyłany w pakiecie IPv6.
Dodawane są liczby 16 bitowe, stąd możliwa konieczność uzupełnienia datagramu o
dodatkowy bajt z samymi zerami (jeśli długość datagramu liczona w bajtach jest liczbą
nieparzystą). Ten dodatkowy bajt występuje tylko podczas wyliczania sumy kontrolnej, nie jest
on zapamiętywany ani przesyłany.
4
Sieci komputerowe, rok akad. 2020/2021
dr H. Telega
Do obliczenia sumy kontrolnej używany jest tzw. pseudonagłówek. Poniżej podano strukturę
psełdonagłówka przy założeniu, że datagram UDP jest przesyłany w pakiecie IPv4.
Pseudonagłówek (12 bajtów):
32 bity adres IP źródła,
32 bity adres IP celu,
8 zer
8 bitów typ protokołu (UDP = 17)
16 bitów długość UDP (powtórzona)
Algorytm jest taki sam jak dla sumy kontrolnej nagłówka IPv4 (jednak w IPv4 suma kontrolna
obejmowała sam nagłówek, w UDP obejmuje również przesyłane za nagłówkiem dane).
Pseudonagłówek nie jest przesyłany. Użycie pseudonagłówka umożliwia dodatkową
kontrolę, czy datagram UDP dodarł do odpowiedniego miejsca przeznaczenia (jeśli nie, to
wystąpi błąd sumy kontrolnej).
5
Sieci komputerowe, rok akad. 2020/2021
dr H. Telega
TCP – Transmission Control Protocol
Podstawy protokołu TCP
RFC 793 (ze wskazanymi tam aktualizacjami).
Oprogramowanie TCP tworzy połączenia (connections) między dwoma procesami z
jednoczesną dwukierunkową transmisją.
Połączenie TCP
Proces 1,
IP1,
Port1
Wyjście
Wejście
Wejście
Wyjście
Proces 2,
IP2,
Port2
TCP łączy dwa punkty końcowe, które są identyfikowane przez parę: numer IP oraz numer
portu. Całe połączenie identyfikowane jest przez cztery liczby: dwa numery IP oraz dwa
numery portów.
Pomiędzy procesami przesyłane są dwa strumienie 8-bitowych oktetów (bajtów), po jednym
w każdą stronę. Stąd mówi się o usłudze strumienia oktetów (bajtów). W strumieniu NIE są
umieszczane automatycznie żadne znaczniki rekordów. Bajty wysyłane są porcjami, w
segmentach, ale proces docelowy (odbiorca segmentów) nie jest w stanie z góry określić
wielkości nadchodzących porcji. Jedna porcja (segment) składa się z nagłówka i pewnej liczby
bajtów danych. Termin strumień danych jest zarezerwowany tylko dla bajtów danych, do
strumienia NIE wlicza się żadnych bajtów nagłówków.
W jednym segmencie może być przesyłany jeden bajt ze strumienia danych albo więcej, ale
nie powinno być więcej niż ustalony MSS – Maximum Segment Size (największy dopuszczalny
rozmiar segmentu na trasie z komputera źródłowego do docelowego). Na przykład, jeśli
segmenty są przesyłane w pakietach IPv4 a te są enkapsulowane cały czas w ramkach
Ethernet, wówczas MSS=1460 bajtów.
Ważne cechy TCP
•
•
•
Partnerzy (komunikujące się procesy) tworzą połączenie z wykorzystaniem mechanizmu
uzgodnienia (uzgadnianie trójfazowe – three-way handshake).
Zamknięcie połączenia odbywa się z wykorzystaniem mechanizmu uzgodnienia, podczas
którego partnerzy wyrażają zgodę na zamknięcie połączenia.
TCP zapewnia sterowanie przepływem. Informuje partnera o tym, ile bajtów danych ze
strumienia danych może od niego przyjąć (okno oferowane – advertized window). Rozmiar
okna jest równy rozmiarowi wolnego miejsca w buforze odbiorcy. Rozmiar ten zmienia się
6
Sieci komputerowe, rok akad. 2020/2021
dr H. Telega
•
•
dynamicznie. Zero oznacza, że nadawca musi zaczekać, aż program użytkowy odbierze
dane z bufora.
Dane ze strumienia danych dzielone są na fragmenty, które według TCP mają najlepszy do
przesłania rozmiar. Jednostka przesyłania danych nazywa się segmentem.
TCP zapewnia niezawodność połączenia.
Mechanizmy niezawodności
Potwierdzanie otrzymania segmentów z mechanizmem zegara. Odebrany segment musi być
potwierdzony przez odbiorcę przez wysłanie segmentu potwierdzającego. Jeśli potwierdzenie
nie nadejdzie w odpowiednim czasie, segment zostanie przesłany powtórnie. Czas
oczekiwania zmienia się dynamicznie i zależy od stanu sieci (obciążenia sieci i jej parametrów).
Sumy kontrolne. Jeśli segment zostanie nadesłany z niepoprawna sumą kontrolną, to jest
odrzucany i nie jest przesyłane potwierdzenie odbioru, Nadawca po odczekaniu
odpowiedniego czasu (RTO – Retransmission Time Out) prześle utracony segment jeszcze raz.
Przywracanie kolejności nadchodzących segmentów. Segmenty mogą nadchodzić w
kolejności innej niż zostały wysłane, oprogramowanie TCP przywraca prawidłową kolejność
przed przekazaniem do aplikacji.
Odrzucanie zdublowanych danych. Może się zdarzyć, że pewne dane ze strumienia zostaną
przesłane powtórnie, chociaż ich pierwsza kopia (segment) w rzeczywistości nie zaginęła, tylko
przesłanie go przez sieć i przesłanie potwierdzenia trwało dłużej niż RTO (albo segment z
potwierdzeniem zaginął). Do odbiorcy wówczas dotrą dwie kopie tych samych danych. Jedna
z tych kopii jest odrzucana.
Enkapsulacja segmentu TCP w datagramie IP:
nagłówek IP
nagłówek TCP
dane TCP (fragment
strumienia danych)
7
Sieci komputerowe, rok akad. 2020/2021
dr H. Telega
Nagłówek segmentu TCP
FIN
SYN
RST
PSH
ACK
URG
ECE
CWR
NS
0
15 16
31
16-bitowy numer portu źródłowego
16-bitowy numer portu docelowego
4-bajtowy numer sekwencji pierwszego oktetu danych.
4-bajtowy numer potwierdzenia
4-bitowa Rezerwa
długość (3 bity) –
16-bitowy rozmiar okna
nagłówk zera
a
16 bitowa suma kontrolna TCP
16 bitowy wskaźnik ważności
Opcje (jeśli są)
Dane (jeśli są)
Objaśnienia:
Numer sekwencji. Dla segmentu z ustawionym tylko znacznikiem SYN w to pole wpisywany
jest numer sekwencji początkowej, tzw. ISN (Initial Sequence Number). Taki segment jest
wysyłany w celu rozpoczęcia nawiązywania połączenia. Pierwszy oktet przesyłanych danych
ze strumienia w rzeczywistości będzie miał numer ISN+1. ISN był kiedyś ustalany na podstawie
licznika 32 bitowego [zakres 0..232-1]. RFC 793 określa, że numer ISN powinien zwiększać się o
jeden co 4 mikrosekundy. W praktycznych implementacjach było inaczej, np. zwiększanie o
64000 co pół sekundy. Co kilka godzin licznik się zeruje. Ze względów bezpieczeństwa obecnie
pierwszy numer ISN w strumieniu jest losowy.
W kolejnych segmentach w połączeniu TCP w polu numer sekwencji jest numer pierwszego
oktetu danych w segmencie, przy czym numer ten nie jest już pobierany z licznika, ale wynika
z ciągłej numeracji oktetów w strumieniu bajtów (numer pierwszego bajta został uzgodniony
w trakcie nawiązywania połączenia).
Numer potwierdzenia jest ważny tylko przy włączonym znaczniku ACK. Znacznik ACK jest
włączany tylko wówczas, jeśli segment zawiera potwierdzenie odebrania jakiegoś segmentu.
Numer potwierdzenia jest to kolejny numer bajta (w strumieniu danych), którego spodziewa
się wysyłający potwierdzenie.
Długość nagłówka (w protokole pole to jest określone jako przesunięcie danych). Wielkość
nagłówka wyrażona w liczbie bloków 4-bajtowych.
Jednobitowe znaczniki (flagi):
NS, CWR, ECE – związane z przeciwdziałaniem przeciążeniom na routerach (wprowadzone w
2001 i 2003 r.): http://tools.ietf.org/html/rfc3168. Mechanizm przeciwdziałania nazwany
został ECN – Explicit Congestion Notification.
NS – (ang. Nonce Sum) jednobitowa suma kontrolna wartości flag związanych z mechanizmem
ECN (ECN Echo, Congestion Window Reduced, Nonce Sum) weryfikująca ich integralność; opis
bitu NS znajduje się w RFC 3540 (status: experimental).
ECE – (ang. ECN-Echo) Jeśli flaga SYN=0, to flaga ECE jest ustawiana na 1 przez odbiorcę
segmentu, jeśli segment ten dotarł w pakiecie IP z ustawionym kodem CE (Congestion
8
Sieci komputerowe, rok akad. 2020/2021
dr H. Telega
Encountered) w bitach ECN nagłówka IP; Jeśli SYN=1, wówczas ECE=1 oznacza, że mechanizm
ECN będzie stosowany (czyli jest to element nawiązania połączenia, w którym druga strona
połączenia jest informowana o tym, że można stosować ECN),
CWR – (ang. Congestion Window Reduced) flaga potwierdzająca odebranie ECE i
zredukowanie wielkości okna przeciążeniowego (patrz dalsza część wykładu). Powiadomienie
partnera TCP umożliwia zaprzestanie wysyłania echa ECE.
URG – wskaźnik ponaglenia (krótkie wyjaśnienie można znaleźć np. tu
http://www.tcpipguide.com/free/t_TCPPriorityDataTransferUrgentFunction.htm ),
ACK – segment potwierdzenia,
PSH – segment „push” – wypchnięcie danych (dobre wyjaśnienie jest np. tu:
http://packetlife.net/blog/2011/mar/2/tcp-flags-psh-and-urg/ ),
RST – zresetowanie połączenia (opis jest w dalszej części wykładu),
SYN – synchronizacja,
FIN – nadawca zakończył przesyłanie danych.
Rozmiar okna. Oznacza liczbę bajtów, które odbiorca może zaakceptować (poczynając od
bajtu o numerze podanym w polu numer potwierdzenia).
Suma kontrolna. Liczona dla nagłówka i danych, z użyciem pseudonagłówka (algorytm
analogiczny jak w UDP oraz IP).
Wskaźnik ważności. Dodatnie przesunięcie, które musi być dodane do numeru przesunięcia
sekwencyjnego pierwszego oktetu danych, aby uzyskać numer ostatniego bajta szczególnie
ważnych danych w segmencie (dane te są na początku segmentu). Pole to jest brane pod
uwagę tylko, jeśli bit URG jest ustawiony na 1.
Opcje. Rodzaj opcji (bajt), długość opcji (bajt), opcja. Najważniejsza opcja to MSS – Maximum
Segment Size. Może być uzyskana jako MTU (Maximum Transmission Unit) minus rozmiar
nagłówka IP oraz TCP. Dla MSS rodzaj opcji określony jest jako liczba 2, długość opcji wynosi 4
bajty, dwa kolejne bajty to wartość MSS. Przykładowo dla Ethernetu MTU=1500, stąd
MSS=1500 – 40 = 1460 (40 bajtowy minimalny rozmiar nagłówków IP i TCP). Wartość
minimalna MSS dla IPv4 wynosi 536, dla sieci IPv6 1220. MSS podawany jest w segmencie SYN
wysyłanym w celu nawiązania połączenia TCP .
9
Sieci komputerowe, rok akad. 2020/2021
dr H. Telega
Nawiązywanie i zamykanie połączenia, przesyłanie danych
Rysunek przedstawia nawiązywanie i zakończenie połączenia oraz wymianę segmentów w
połączeniu TCP.
klient
otwarcie
aktywne
serwer
SYN, j, mss=1460
SYN k, ACK j+1, mss=1024
ESTABLISHED
otwarcie bierne
LISTEN
SYN RECVD
ACK k+1
ESTABLISHED
dane: żądanie
dane: odpowiedź /
ew. ACK dla
żądania
ACK dla odpowiedzi
zamknięcie
aktywne
FIN WAIT-1
Opóźnione
potwierdzanie
(„piggyback –
jazda na
barana”)
FIN m
ACK m+1
CLOSE WAIT
zamknięcie bierne
FIN WAIT-2
FIN n
TIME WAIT
LAST ACK
ACK n+1
CLOSED
10
Sieci komputerowe, rok akad. 2020/2021
dr H. Telega
Diagram przejść między stanami połączenia TCP
stan
CLOSED
prg: otwarcie
bierne
[]/[]
prg: otwarcie
aktywne
[ ] / SYN
LISTEN
SYN / SYN, ACK
RST / [ ]
otwarcie
jednoczesne
SYN / SYN, ACK
SYN RCVD
ACK/ [ ]
ESTABLISHED
[ ] / FIN
stan
przesyłania
zamknięcie
jednoczesne
FIN WAIT-1
FIN WAIT-2
FIN / ACK
LAST ACK
CLOSING
ACK / [ ]
FIN, ACK / ACK
FIN / ACK
FIN / ACK
CLOSE WAIT
prg: zamknięcie
[ ] / FIN
[ ] / FIN
ACK / [ ]
SYN SENT
otwarcie
aktywne
SYN, ACK / ACK
ACK / [ ]
zamknięcie
bierne
TIME WAIT
zamknięcie
zwykłe przejście między stanami klienta
zwykłe przejście między stanami serwera
SYN / SYN, ACK = odbiór SYN / wysłanie ACK
[ ] - nic
11
Sieci komputerowe, rok akad. 2020/2021
dr H. Telega
Specyfika stanu TIME WAIT
2 razy MSL (Maximum Segment Life). W RFC 793 MSL określony jest jako 2 minuty, w praktyce
od 30 sekund do 2 minut. Spóźnione segmenty są w czasie 2 MSL odrzucane. Para punktów
końcowych definiujących połączenie nie może być powtórnie użyta przed upływem 2MSL.
Eliminuje to ewentualne kłopoty związane z odbieraniem z sieci segmentów jeszcze ze starego
połączenia.
Niektóre implementacje dopuszczają bezwarunkowe przechodzenie ze stanu FIN_WAIT_2
do stanu CLOSED po upływie pewnego czasu (10 min.)
Półzamknięcie TCP
Strona, która zakończyła połączenie i nie nadaje danych, może dane odbierać od partnera
TCP. Takie połączenie nazywane jest połączeniem półzamkniętym (half-closed).
Przykład:
rsh odległy_komputer sort < lokalny_plikdanych
Polecenie rsh (remote shell) umożliwia wykonywanie poleceń na odległym komputerze. W
tym przypadku komputer odległy będzie sortował zawartość pliku, przesłaną z komputera
lokalnego. Jednak polecenie sort nie może być wykonywane, zanim nie zostanie przekazany
cały plik. Półzamknięcie jest tu metodą na powiadomienie, że cały plik został przesłany,
jednocześnie komputer lokalny będzie otrzymywał dane od odległego (posortowaną
zawartość pliku).
Segmenty RST
Segment RST wysyłany jest przez oprogramowanie implementujące TCP, kiedy nadchodzi
segment niepoprawny z punktu widzenia dowolnego połączenia. W protokole UDP w
przypadku nadejścia datagramu na port, nie będący w użyciu generowany jest komunikat
ICMP o tym, że port jest nieosiągalny. TCP używa tu segmentów RST (nie komunikatów ICMP).
Segment RST nie jest potwierdzany. Wszystkie ewentualne przyjęte dane z buforów są
odrzucane.
Wysłanie RST jest ogólnie metodą poinformowania drugiej strony o nieakceptowaniu
połączenia (np. w odpowiedzi na segment SYN).
Segment RST jest wysyłany również wtedy, gdy przekroczona jest maksymalna dopuszczalna
liczba połączeń TCP.
Połączenia półotwarte (połowicznie otwarte)
Występuje, jeśli jedna ze stron przerwała połączenie bez informowania drugiej (np. host uległ
awarii). Przykład – wyłączenie komputera z uruchomionym programem telnet.
Przez połączenie połowicznie otwarte (half-open) rozumie się też połączenie, które nie zostało
poprawnie nawiązane. Segment z ustawioną na 1 flagą SYN został przesłany od klienta do
serwera, serwer odpowiedział segmentem z ustawionymi na 1 flagami SYN i ACK, ale klient nie
odpowiedział segmentem z ustawioną na 1 flagą ACK. Standardowo np. w Microsoft Windows
Serwer ponawia SYN, ACK po 3 sekundach, potem po kolejnych 6 i czeka jeszcze 12 sekund na
ACK od klienta potem połączenie zostaje przerwane. Od wysłania pierwszego segmentu SYN,
ACK mija 21 sekund, w tym czasie są rezerwowane zasoby komputera na połączenie.
12
Sieci komputerowe, rok akad. 2020/2021
dr H. Telega
Jeden ze sposobów atakowania serwisów (np. WWW) polegał na otwieraniu bardzo dużej
liczby połączeń półotwartych. Obecnie implementacje TCP są odporne na tego typu ataki
(dokonano zmiany ustawień dotyczących tolerancji liczby jednoczesnych połączeń połowicznie
otwartych).
Dopuszczalne jest, by oprogramowanie realizujące TCP mogło sprawdzać stan połączenia
przez okresowe przesyłanie segmentów sprawdzających aktywność. Segment taki to zawiera
ustawioną na 1 flagę ACK i nie zawiera żadnych danych. Dodatkowo ma on ustawiony numer
sekwencyjny na o 1 mniejszy od tego, którego normalnie spodziewa się strona wysyłająca ACK.
Partner odpowiada też segmentem z ustawioną na 1 flagą ACK ze standardowo ustawionymi
prawidłowymi wartościami numerów sekwencyjnych.
Jednoczesne otwarcie
TCP dopuszcza tzw. jednoczesne otwarcie połączenia. Następuje wtedy przesłanie czterech
segmentów (po dwa w każdą stronę). Nie określa się serwera i klienta.
aktywne otwarcie
SYN j
SYN k
SYN SENT
SYN RECVD
aktywne otwarcie
SYN SENT
SYN RECVD
SYN k, ACK j+1
SYN j, ACK k+1
ESTABLISHED
ESTABLISHED
Każda ze stron musi znać numer portu partnera.
Jednoczesne zamknięcie
aktywne zamknięcie
FIN WAIT-1
CLOSING
TIME WAIT
FIN j
FIN k
aktywne zamknięcie
FIN WAIT-1
CLOSING
ACK j+1
ACK k+1
TIME WAIT
Opcje TCP
Nagłówek TCP może zawierać opcje. Pierwsza specyfikacja określała tylko opcje: MSS, koniec
listy opcji oraz „brak operacji”.
13
Sieci komputerowe, rok akad. 2020/2021
dr H. Telega
W nowszych są jeszcze inne: skalowanie okna, selektywne potwierdzanie nadchodzących
segmentów, sygnatury czasowe.
Opcja „koniec listy opcji” zajmuje 1 bajt i jest w nim wpisana wartość 0.
Opcja „brak operacji” zajmuje 1 bajt i jest w nim wpisana wartość 1. Opcja ta jest stosowana
po to, by można było dopełnić pola do wielokrotności 4 bajtów.
Pozostałe opcje są zapisywane w sposób następujący:
-1 bajt – typ opcji
-1 bajt – długość opcji (całej)
- pewna liczba bajtów opcji.
Opcja MSS (Maximum Segment Size)
typ = 2
długość = 4
dane – 2 bajty (np. dla Ethernet II 1460, tzn. 1500 minus nagłówki TCP i IP), wielkość
segmentu powinna być potem ustawiona na mniejszą wartość z wartości MSS podanych
przez strony połączenia. MSS podawany jest w segmentach SYN.
Opcja skala okna
typ=3
długość = 3
dane – 1 bajt, współczynnik skali, określa liczbę mnożeń przez 2 wielkości „rozmiar okna”.
Powód zastosowania – przy użyciu 16 bitów można było określać tylko 64kB okna, w
pewnych przypadkach przydają się większe (oryginalnie – transmisja satelitarna).
Współczynnik skali określany jest też jako licznik przesunięć (shift-count). Maksymalny
współczynnik skali wynosi 14.
Pytanie: ile wynosi maksymalny rozmiar segmentu TCP, z wykorzystaniem opcji skali okna?
Opcja pozwolenia na selektywne potwierdzanie (SACK-permitted).
Typ opcji = 4
długość = 2
Informuje partnera (w segmentach SYN), że może interpretować i odbierać opcję SACK.
Opcja selektywnego potwierdzania (SACK).
Typ opcji = 5
długość = 10, 18, 26 lub 34 (potwierdzenie jednego, dwóch, trzech lub czterech nieciągłych
bloków danych).
Lewa krawędź pierwszego bloku – 4 bajty
Prawa krawędź pierwszego bloku – 4 bajty
...
Lewa krawędź n-tego bloku – 4 bajty
Prawa krawędź n-tego bloku – 4 bajty
Opcja sygnatury czasowe
Stosowana jest do określania RTO (retransmission time-out) RTO wyliczane jest w pewien
sposób (patrz dalsza część wykładu) na podstawie RTT (round trip time), który jest mierzony
14
Sieci komputerowe, rok akad. 2020/2021
dr H. Telega
dla segmentu i jego potwierdzenia. W pewnych przypadkach, np. dla łącz satelitarnych taki
sposób wyliczenia RTO może nie być wystarczający. Wtedy można stosować tę opcję.
Opcja dołączona do segmentu SYN oznacza, że będzie stosowana. Potem może być dodawana
według uznania do pewnych segmentów.
typ = 8
długość = 10
Wartość timestamp – 4 bajty
Wartość echa timestamp – 4 bajty.
Przepływ danych w TCP
Potwierdzenia TCP
Skumulowane potwierdzanie
Segment TCP z ustawionym znacznikiem ACK jest segmentem potwierdzającym. Numer
potwierdzenia (sekwencji danych) to numer następnego bajta ciągłego strumienia bajtów,
który nadawca segmentu ACK spodziewa się otrzymać od nadawcy potwierdzanych danych.
Wszystkie poprzedzające bajty zostały już odebrane. Taki sposób potwierdzania nazywa się
skumulowanym potwierdzaniem. Taki sposób potwierdzania nie jest korzystny w środowisku
z dużą liczbą gubionych segmentów.
Opóźnione potwierdzenia
Potwierdzenie otrzymania segmentu nie jest wysyłane natychmiast. Zalety takiego podejścia
są następujące:
• Podczas trwania opóźnienia mogą zostać odebrane następne segmenty i potwierdzenie
może je obejmować.
• Można dołączyć ACK do segmentu przesyłanych danych (piggybacking).
• Oprogramowanie TCP realizuje „utrzymanie” połączenia, np. odbiera dane z bufora i
uaktualnia rozmiar okna, który może być wysłany z segmentem ACK.
Selektywne potwierdzenia
Realizowane przez jedną z opcji TCP. Przydaje się np. w łączach satelitarnych, które są
szerokopasmowe i mają duże opóźnienie (wyjaśnienie na wykładzie). Rozmiar okna może tu
być duży i wynosić np. 250 segmentów, nadawca może na raz transmitować dużą liczbę
segmentów (np. 250). Jeśli pierwszy segment zaginie, to nadawca niepotrzebnie retransmituje
wszystkie. Selektywne potwierdzanie temu zapobiega.
Ruchome okna TCP (sliding windows)
Połączenie TCP obejmuje dwa strumienie danych. W każdym strumieniu określony jest
nadawca i odbiorca. Kontrolę przesyłania oktetów w strumieniu umożliwiają mechanizmy tzw.
przesuwnych (ruchomych) okien, które można sobie wyobrazić jako nałożone na strumień. Dla
strumienia określone jest okno nadawcy oraz okno odbiorcy. Nadawca może wysyłać tylko te
dane, które są w tej chwili w jego oknie nadawczym, przy czym może to zrobić tylko za zgodą
15
Sieci komputerowe, rok akad. 2020/2021
dr H. Telega
odbiorcy. Okno nadawcze jest przesuwane nad wyjściowym strumieniem bajtów, okno
odbiorcze nad strumieniem wejściowym.
Okno nadawcze
Nadawca określa, które oktety w jego strumieniu wyjściowym zostały:
a) wysłane i potwierdzone (tzn. do nadawcy dotarło już potwierdzenie, że druga strona
otrzymała te oktety),
b) wysłane, ale jeszcze nie potwierdzone,
c) jeszcze nie wysłane, ale już znajdujące się w oknie nadawczym
d) jeszcze nie wysłane i znajdujące się poza oknem nadawczym
Dane z pozycji c) mogą być wysłane przez nadawcę, gdyż odbiorca na to zezwolił.
Dane z pozycji c) mogą być jeszcze nie wysyłane wskutek realizacji strategii powolnego startu
lub zapobiegania zatorom (patrz dalsza część wykładu).
Okno nadawcze rozciąga się od oktetu, którego spodziewa się partner w ostatnim
potwierdzeniu ACK i ma rozmiar określony przez opcję „rozmiar okna” przesłaną w tym
potwierdzeniu przez partnera (partner określa, ile danych może przyjąć). (ACK+Okno wskazuje
na pierwszy bajt już poza oknem nadawczym).
Okno nadawcze ma lewą i prawą krawędź. W trakcie potwierdzania kolejnych segmentów
lewa krawędź okna nadawczego przesuwa się w prawo powodując tzw. zamykanie okna. Jeśli
numer potwierdzenia + rozmiar okna wskazują na konieczność przesunięcia prawej krawędzi,
to jest ona przesuwana powodując tzw. otwieranie okna.
Jeśli bufor odbiorczy u odbiorcy się wypełni (aplikacja wykorzystująca protokół TCP nie zdąży
odebrać danych z bufora odbiorczego), to odbiorca przesyła z potwierdzeniem ostatniego
segmentu proponowany rozmiar okna równy zero.
U nadawcy powoduje to zmniejszenie okna nadawczego do zera.
Pojawia się następujący problem – skoro nadawca nic nie wyśle (odbiorca „zakazał”), to
odbiorca nie prześle nowego ACK z nowym rozmiarem okna nawet, jeśli swój bufor odbiorczy
został całkowicie opróżniony. Rozwiązano to w ten sposób, że odbiorca wysyła „zbędny”
segment ACK bez danych i z numerem potwierdzenia takim jak poprzedni ACK. Ten segment
nie jest potwierdzany i nie jest też retransmitowany. Jeśli zaginie, to zadziała kolejny
mechanizm: nadawca okresowo wysyła segment tzw. „sondy okna” (probing the window),
zawierający jeden bajt z zakresu nie wysłanych i będących spoza okna (okno jest zerowe). Ten
bajt jest u odbiorcy odrzucany, ale wysyłany jest ACK z poprawnym numerem sekwencji i
nowym rozmiarem okna. Czas pomiędzy wysłaniem sond podwaja się (pierwszy to tzw. czas
retransmisji – patrz dalsza część wykładu).
Okno odbiorcze
Odbiorca określa, które oktety w jego strumieniu wejściowym zostały:
a) odebrane, potwierdzone i pobrane do warstwy aplikacji
b) odebrane, potwierdzone, ale jeszcze nie pobrane do warstwy aplikacji
c) odebrane, ale jeszcze nie potwierdzone
d) nie odebrane, ale znajdujące się w tzw. bieżącym oknie odbiorczym
e) nie odebrane i znajdujące się poza oknem odbiorczym
16
Sieci komputerowe, rok akad. 2020/2021
dr H. Telega
Maksymalne okno odbiorcze obejmuje b), c) i d). Ma ono stałą wielkość równą buforowi do
odbierania danych w połączeniu TCP.
Bieżące okno odbiorcze obejmuje c) i d). Punkt d) odpowiada wolnej przestrzeni w buforze
odbiorczym.
Oktety d) mogą być odebrane, natomiast z e) nie są odbierane – tzn. gdyby dotarły, to
zostaną odrzucone, bo nie ma na nich miejsca w bieżącym buforze odbiorczym.
Ze względu na to, że oktety ze strumienia oktetów danych są ponumerowane, łatwo można
określić, w którym miejscu strumienia powinny się znaleźć. W każdym segmencie jest
przekazywany numer pierwszego oktetu danych, które znajdują się w tym segmencie.
Bieżące okno odbiorcze ma lewą i prawą krawędź. Zamykanie i otwieranie okna zdefiniowane
są analogicznie jak dla okna nadawczego. Prawa krawędź odbiorczego okna bieżącego
pokrywa się z prawą krawędzią maksymalnego okna odbiorczego. Jeśli aplikacja odbiera dane
z bufora, to krawędź ta przesuwa się w prawo (podobnie jak lewa krawędź maksymalnego
okna odbiorczego). Potwierdzanie ACK przesuwa lewą krawędź okna bieżącego w prawo. Jeśli
warstwa aplikacji nie odbiera danych z bufora, a wysyłane są kolejne potwierdzenia, to okno
bieżące zostaje w pewnym momencie zamknięte.
W Microsoft Windows domyślnie maksymalny rozmiar okna odbiorczego wynosi 16 384
bajty, ale może być korygowany przez TCP do pewnej wielokrotności MSS (np. dla Ethernet II
wynosi 12*1460=17520).
Przesyłanie małych segmentów
Tak określa się segmenty o rozmiarze mniejszym od MSS.
Przesyłanie małych segmentów zmniejsza efektywność sieci.
Aby temu zapobiec stosowane są takie mechanizmy, jak algorytm Nagle’a i unikanie
„syndromu głupiego okna”
Algorytm Nagle’a (John Nagle)
„Dopasowuje się” do sieci, w której przesyłane są segmenty.
Idea:
TCP powinno przesyłać tylko pojedyncze małe niepotwierdzone segmenty. W czasie
oczekiwania na potwierdzenie, dane są gromadzone w buforze. W sieci o szerokim paśmie i
małym opóźnieniu akumulacja (gromadzenie pakietów w buforze) jest mała, efektywność
mniejsza, ale kompensowana szybkością sieci. W sieciach o małym paśmie i dużych
opóźnieniach akumulacja zwiększa efektywność.
Algorytm Nagle’a może być wyłączany przez oprogramowanie TCP.
Syndrom „głupiego okna” (silly window syndrome - SWS)
Jeśli odbiorca ma zerowy rozmiar okna (i nadawca też) oraz warstwa aplikacji pobierze 1 bajt,
to okno odbiorcze otwiera się (prawa krawędź przesuwa się w prawo) o jeden bajt. Odbiorca
może wysłać ACK z proponowaną wielkością okna równą 1. Gdyby tak było, to druga strona
połączenia też powiększy okno nadawcze o jeden bajt i prześle segment zawierający 1 bajt
danych itd.
17
Sieci komputerowe, rok akad. 2020/2021
dr H. Telega
Aby uniknąć SWS odbiorca ogłasza nowy rozmiar okna dopiero, gdy rozmiar ten wynosi co
najmniej MSS lub połowę maksymalnego rozmiaru okna odbiorczego (nie wyklucza to
wysyłania w „międzyczasie” segmentów potwierdzeń).
Nadawca unika SWS wstrzymując się z wysyłaniem danych, dopóki rozmiar okna
proponowanego przez odbiorcę nie jest równy co najmniej MSS. „Interaktywne” dane mogą
być wysyłane z flagą PSH wg algorytmu Nagle’a.
Dodatkowa kontrola przepływu po stronie nadawcy
Nadawca może przesłać wszystkie segmenty, które znajdują się w oknie nadawczym (po
ogłoszeniu okna przez odbiorcę). Takie działanie może jednak doprowadzić do zatorów w sieci,
zwłaszcza mocno obciążonej (np. rutery nie poradzą sobie ze zbyt dużym ruchem danych).
Algorytm powolnego startu oraz algorytm unikania zatorów mają na celu uniknięcie
negatywnych skutków zbyt dużego obciążenia sieci przez nadawcę. Obydwa bazują na pojęciu
okna przeciążeniowego (okna zatoru, congestion window).
Algorytm powolnego startu
Po otwarciu połączenia lub dłuższym czasie nieprzesyłania danych wielkość okna
przeciążeniowego ustawiana jest na 2*MSS. Każde przychodzące potwierdzenie (ACK)
powoduje zwiększenie okna przeciążeniowego o jeden MSS. Może to nawet prowadzić (ale
nie musi) do wykładniczego wzrostu wielkości tego okna (kiedy?).
Rozmiar okna nadawczego ustalany jest jako minimum z wielkości okna przeciążeniowego
oraz ogłoszonego przez odbiorcę bieżącego okna przeciążeniowego.
Algortym unikania zatoru
Tu stosuje się wolniejszy wzrost wielkości okna przeciążeniowego (ozn. x), np. o jeden segment
na kilka przychodzących ACK. Przepis na wzrost może być np. taki: x=x+MSS*MSS/x. Algorytm
ten działa zwykle od pewnego progu (najpierw działa powolny start).
Retransmisje segmentów w TCP
W każdym połączeniu definiowana jest zmienna RTO (Retransmission Time-out). Jeśli TCP nie
odbierze ACK w czasie RTO dla pewnego nadanego segmentu, to segment musi być
retransmitowany.
RTO powinien być większy od stale obliczanego RTT (Round Trip Time). RTO nie powinien być
ani za duży, ani za mały.
Segmenty ACK nie są potwierdzane (chodzi o segmenty z ustawioną flagą ACK i nie zawierające
danych).
Wyznaczenie prawidłowej wartości RTO jest ważne dla uniknięcia zapaści spowodowanej
przeciążeniem (np. RTT rośnie szybciej niż wyliczany RTO, segmenty będą retransmitowane co
jeszcze zwiększy ruch w sieci).
Omówione już algorytmy powolnego startu oraz unikania zatoru powodują unikanie
powtórnej zapaści.
18
Sieci komputerowe, rok akad. 2020/2021
dr H. Telega
Zasady retransmisji
Jeśli nie określono innych: dla początkowego segmentu przyjmuje się bieżące znane RTO dla
połączenia. Po upłynięciu RTO wartość RTO jest podwajana, a segment wysyłany ponownie.
(Ilość powtórzeń tego algorytmu jest ograniczona i w końcu połączenie jest przerywane).
Obliczenie RTO
RFC 793 określa pewien algorytm obliczania RTO, jednak teraz zalecany jest inny (RFC1122):
SRTT = RTT + 8*(New_RTT – RTT)
New_Dev = Dev + ( | New_Rtt – RTT | - Dev) / 4
RTO = SRTT + New_Dev / 4
Niejednoznaczność potwierdzenia – Algorytm Karna
Potwierdzenie dla retransmitowanego segmentu jest niejednoznaczne, nie wiadomo czy jest
to opóźnione potwierdzenie pierwszej kopii, czy potwierdzenie drugiej kopii.
Rodzi to problemy z szacowanym RTT.
Phil Karn zaproponował następującą strategię:
Pomiary RTT dla retransmitowanych segmentów są pomijane. Może to rodzić problemy, jeśli
RTT gwałtownie wzrośnie. Dlatego tymczasowo stosowane jest dublowanie RTO dla kolejnych
retransmitowanych segmentów. Dopiero przyjęcie ACK segmentu nie retransmitowanego
powoduje obliczenie RTT i RTO dla tego nowego czasu RTT.
19
Bezpieczeństwo sieci komputerowych. Szyfrowanie z
kluczem symetrycznym, szyfrowanie z kluczem publicznym
i prywatnym, certyfikaty cyfrowe, podpis elektroniczny.
Zagadnienie jest rozległe i obejmuje bezpieczeństwo na poziomie systemów operacyjnych
działających na pojedynczych komputerach, sieciowych systemów operacyjnych oraz
protokołów i różnych systemów zabezpieczeń.
Wykład dotyczy bardziej aspektów związanych z siecią (przesyłaniem danych między
komputerami) oraz protokołów sieciowych.
Szyfrowanie, podpis elektroniczny
Szyfrowanie z kluczem symetrycznym
Klucz jest pewną liczbą lub zbiorem liczb. Pojedynczy klucz (jedna liczba) w zapisie binarnym
składa się zwykle z kilkudziesięciu do kilku tysięcy bitów.
To, co zostało zaszyfrowane przy użyciu pewnego klucza, może być odszyfrowane tylko przy
pomocy tego samego klucza.
Teoretycznie jest możliwe „złamanie” szyfru metodą brutalnej siły (tj. poprzez sprawdzenie
wszystkich kombinacji), jednak wymaga dużych mocy obliczeniowych. Dla odpowiednio
dużych kluczy i odpowiednio złożonych metod szyfrowania jest to praktycznie (prawie)
niemożliwe. Są też inne sposoby łamania szyfrów, np. wykorzystujące analizy statystyczne i
wiele innych, opierających się na niedoskonałościach samego algorytmu albo jego
implementacji.
Przykładowe długości kluczy: 64, 128, 256.
Nie tylko długość klucza ma znaczenie – liczy się również sam algorytm szyfrowania. Przykłady
algorytmów z kluczem symetrycznym: DES (Data Encryption Standard), 3DES, RC4 (szyfr
strumieniowy wykorzystywany np. w szyfrowaniu ramek w sieciach bezprzewodowych WiFi
802.11 WEP oraz WPA).
W tej chwili zalecany standard to AES (Advanced Encryption Standard, szyfr blokowy,
wykorzystywany np. w WPA2).
Uwaga. Szyfrowanie dużych porcji danych przy użyciu jednego klucza ułatwia złamanie szyfru.
Dlatego klucz symetryczny może być zmieniany co pewien czas lub pewną liczbę przesłanych
bajtów. Zmiana klucza na inny wymaga ustalenia jakiegoś bezpiecznego kanału przekazania
klucza. Zatem podstawowym problemem związanym z użyciem klucza symetrycznego jest jego
uzgodnienie. Nie można go wysłać w wersji niezaszyfrowanej przez sieć, bo mógłby go ktoś
przechwycić. Ale jak go zaszyfrować, skoro klucz nie został uzgodniony? Można wprawdzie
przekazać klucz np. na dysku zewnętrznym, albo nawet (teoretycznie) przedyktować przez
telefon czy przesłać faksem (), ale jest lepsza metoda. Klucz może być przesłany
zaszyfrowany przy pomocy jakiejś metody szyfrowania z kluczem publicznym i prywatnym.
Do szyfrowania przesyłanych przez sieć komputerową danych można generować tzw. klucze
sesji i szyfrować je wcześniej uzgodnionym (np. za pomocą szyfrowania asymetrycznego lub
innego bezpiecznego kanału) tajnym kluczem symetrycznym. Klucze symetryczne mogą być
1
zmieniane co określony czas lub co określoną liczbę bajtów, z użyciem specjalnych
protokołów.
Rysunek z wykładu:
Szyfrowanie z kluczem asymetrycznym (idea)
Szyfrowanie i odszyfrowanie są realizowane przy pomocy pary kluczy. Jeden z nich, zwany
kluczem prywatnym jest tajny i przechowywany tylko w jednym miejscu (plus ewentualne
kopie zapasowe w plikach przechowywanych w bezpiecznym miejscu) i powinien być tajny.
Drugi zwany kluczem publicznym może być powszechnie znany. Jeśli coś zostanie
zaszyfrowane przy pomocy klucza prywatnego, to może być odszyfrowane tylko przy pomocy
odpowiadającego mu klucza publicznego. Podobnie – jeśli coś zostanie zaszyfrowane przy
pomocy klucza publicznego, to może być odszyfrowane tylko przy pomocy odpowiadającego
mu klucza prywatnego. Jednak odgadnięcie klucza prywatnego, jeśli znany jest publiczny jest
„praktycznie niemożliwe” w sensownym czasie (przy użyciu współczesnych komputerów).
Skąd wziąć parę kluczy? Zajmiemy się tym w punkcie „Klucze publiczne i prywatne”. Na razie
przyjmijmy, że każdy może wygenerować w pewien sposób parę: klucz publiczny i
odpowiadający mu klucz prywatny.
Jeśli zatem chcemy coś (dane, plik) przekazać innej osobie w wersji zaszyfrowanej, to
powinniśmy zaszyfrować to kluczem publicznym tej osoby. Ponieważ nikt poza tą osobą nie
zna odpowiadającego klucza prywatnego, nikt przesyłki nie odszyfruje (przynajmniej przy
użyciu współczesnych komputerów).
Szyfrowanie z kluczem publicznym i prywatnym jest jednak wielokrotnie kosztowniejsze
czasowo od szyfrowania z kluczem symetrycznym (przy zachowaniu podobnego stopnia
odporności na złamanie szyfru).
2
Powszechnie wykorzystywany algorytm szyfrowania z wykorzystaniem kluczy publicznych i
prywatnych to RSA (Rivest, Shamin, Adelman).
Rysunek z wykładu:
M.in. ze względu na duży koszt czasowy algorytmów z kluczem publicznym nie są one
powszechnie wykorzystywane do szyfrowania przesyłanych danych. Są natomiast stosowane
do wymiany (uzgodnienia) kluczy symetrycznych. Przy transmisji dużych porcji danych między
komputerami klucze symetryczne powinny być zmieniane (uzgadniane) co pewien czas.
Skrót (hash)
Szyfrowanie dużych porcji danych może być kosztowne i czasem niepożądane. W podpisach
cyfrowych (patrz niżej) tworzy się tzw. skrót wiadomości (danych) za pomocą funkcji
haszującej (hash function). Skrót (hash, digest) ma zwykle 128 bitów (dla funkcji MD5, nie jest
już uznawanej za bezpieczną), 160 bitów (SHA-1, też już nie jest uznawany za bezpieczny) oraz
dla różnych wersji rodziny funkcji o nazwie SHA-2 od 224 do 512 bitów (SHA-224, SHA-256,
SHA-384 i SHA-512).
Cechą charakterystyczną funkcji haszującej jest to, że jeśli w oryginalnej wiadomości (pliku)
zmieniony zostanie chociaż jeden bit, to skrót będzie zupełnie inny niż ten, który został
utworzony przed zmianą. Algorytmy haszujące są deterministyczne, tzn. dla niezmieniającej
się wiadomości (pliku) za każdym razem zostanie utworzony identyczny skrót. Jednak na
podstawie skrótu odtworzenie oryginalnej wiadomości (pliku) jest niemożliwe (z wyjątkiem
pewnych specjalnych, nietypowych przypadków). Ponadto, celowa zmiana haszowanych
danych tak, by skrót wyszedł taki sam powinna być bardzo trudna („praktycznie” niemożliwa).
Podpis cyfrowy
Zaszyfrowanie kluczem prywatnym daje gwarancję (a właściwie „bardzo duże
prawdopodobieństwo, graniczące z pewnością”), że zaszyfrowana wiadomość pochodzi z
3
odpowiedniego źródła (o ile rzeczywiście znamy jego prawdziwy klucz publiczny a klucz
prywatny nie został skradziony).
Samej podpisywanej wiadomości (danych) nie musi się szyfrować. Generowany jest jej skrót
(z użyciem funkcji haszującej) i ten skrót szyfrowany jest z wykorzystaniem klucza prywatnego
osoby podpisującej. Zaszyfrowany skrót stanowi podpis cyfrowy.
Niezaszyfrowana wiadomość może być przesłana jawnie razem z zaszyfrowanym skrótem
(czyli podpisem cyfrowym).
Odbiorca wykonuje dwie czynności. Po pierwsze odszyfrowuje skrót używając klucza
publicznego nadawcy (klucz ten jest powszechnie znany, a w każdym razie dostępny). Po
drugie, odbiorca tworzy skrót wiadomości używając tej samej funkcji haszującej. Jeśli wyniki
obu operacji są identyczne, to znaczy, że wiadomość na pewno („prawie na pewno”) podpisał
określony nadawca (bo prawidłowy skrót dało się odszyfrować za pomocą klucza publicznego
nadawcy), a ponadto nikt po tej wiadomości nie zmienił już po podpisaniu (gdyż w takim
wypadku jej skrót utworzony przez odbiorcę byłby zupełnie inny niż ten przesłany w wersji
zaszyfrowanej przez nadawcę).
Oczywiście po podpisaniu dodatkowo możemy wiadomość (plik) zaszyfrować, ale to nie należy
już do samego podpisu. Jeśli wiadomość (plik, przesyłane dane) jest duża, to najlepiej
szyfrować go okresowo zmienianym kluczem symetrycznym, przy czym samo uzgodnienie
kluczy jest realizowane przy pomocy szyfrowania z kluczem publicznym i prywatnym.
Rysunki z wykładu:
Idea
Realizacja
4
Klucze publiczne i prywatne, infrastruktura kluczy publicznych (Public Key
Infrastructure - PKI)
Skąd można wziąć klucz prywatny i publiczny? Klucze mogą być generowane przy pomocy
odpowiedniego oprogramowania i powinny być podpisane przez jakieś centrum
certyfikacyjne. Centrum certyfikacyjne (inaczej: urząd certyfikacji, ang. CA – Certification
Authority) wydaje tzw. certyfikaty cyfrowe.
Certyfikat jest specjalnym plikiem, tworzonym przez tzw. Urząd certyfikacji (lub organ
certyfikacji, ang. CA - Certificate Authority).
Certyfikat zawiera ważne kryptograficzne dane, pozwalające na bezpieczne sprawdzenie kto
wydał certyfikat oraz dla kogo (dla jakiej firmy, organizacji lub osoby) został wydany. Certyfikat
posiada też informację od kiedy i do kiedy jest ważny oraz jaki jest cel stosowania certyfikatu.
Ta ostatnia informacja wiąże się z faktem, że certyfikaty mogą być używane nie tylko to
potwierdzenia autentyczności serwera WWW, ale również na przykład do potwierdzania
autentyczności maili albo programów komputerowych. Certyfikat wystawiony dla adresu
pocztowego nie może być użyty do sprawdzenia autentyczności serwera WWW. Certyfikat
zawiera klucz publiczny (NIE zawiera klucza prywatnego).
Rodzaje certyfikatów.
System wystawiania certyfikatów jest uregulowany i obejmuje metody sprawdzania
właściciela strony (witryny), które musi wykonać urząd certyfikacyjny przed wydaniem
certyfikatu. Są trzy typy certyfikatów, które różnią się właśnie sposobem weryfikacji:
DV (Domain Validation) - z walidacją (sprawdzeniem) domeny. Jest to "najsłabszy" sposób
weryfikacji właściciela witryny. Podstawą weryfikacji jest wysłanie maila do administratora
domeny i uzyskanie od niego potwierdzenia. Centrum certyfikacji uznaje, że skoro uzyskano
potwierdzenie, to certyfikat może być wystawiony. Jednak certyfikat taki nie zawiera żadnych
informacji na temat firmy czy osoby, która zostanie właścicielem certyfikatu (ponieważ takie
informacje nie są dla certyfikatów DV sprawdzane).
5
OV (Organization Validation) - z walidacją organizacji. Dla tych certyfikatów następuje prawne
sprawdzenie danych rejestrowych firmy. Dane te mogą być wpisane do certyfikatu (np. nazwa
firmy, adres).
EV (Extended Validation) - z rozszerzoną walidacją. Dla takich certyfikatów weryfikowane są
prawnie dane rejestrowe firmy (banku) oraz inne wymagane dokumenty firmy. Jak napisano
powyżej, są to najbezpieczniejsze certyfikaty (i najdroższe). Banki, duże firmy czy duże sklepy
internetowe powinny mieć certyfikat EV.
W celu sprawdzenia, dla kogo certyfikat został wydany, należy kliknąć w symbol kłódki w pasku
z adresem strony. Różne inne szczegóły certyfikatu, można wyświetlić wybierając (w zależności
od przeglądarki) odpowiednią opcję po kliknięciu w symbol kłódki. Wśród tych informacji jest
też tzw. ścieżka certyfikacji, umożliwiająca określenie, który urząd certyfikacji wydał dany
certyfikat.
Przykładowe pola w certyfikacie:
Identyfikator osoby/firmy/obiektu
Identyfikator Centrum certyfikacyjnego (CA), który wydał certyfikat
Numer identyfikacyjny certyfikatu
Cel stosowania (np. podpisywanie bezpiecznych stron WWW albo podpisywanie listów
elektronicznych)
Wartość klucza publicznego
Okres ważności
Podpis cyfrowy wydawcy (CA)
Jest kilka standardów certyfikatów: X.509 (główny standard), PGP, GPG (system darmowy).
Każdy certyfikat jest podpisany cyfrowo przez pewien urząd certyfikacji. Podpis cyfrowy
umożliwia sprawdzenie autentyczności certyfikatu. Certyfikat może być wystawiony przez
jeden z głównych, zaufanych urzędów certyfikacji lub przez urząd pośredni. Urzędy pośrednie
też posiadają certyfikaty. Certyfikaty urzędów pośrednich wystawiane są przez urzędy główne
lub inne urzędy pośrednie. Może być zatem tak, że bank posiada certyfikat wydany przez jeden
z pośrednich urzędów certyfikacji, który z kolei posiada certyfikat wydany przez jeden z
urzędów głównych. Zwykle tak właśnie jest. Urzędy główne też mają dla siebie certyfikaty, ale
(wyjątkowo) te certyfikaty są wydawane i podpisywane przez te same urzędy (urząd główny
sam dla siebie wydaje certyfikat i sam go podpisuje cyfrowo).
Certyfikaty urzędów głównych przechowywane są w komputerach użytkowników (w systemie
operacyjnym oraz w niektórych programach, które korzystają z systemu certyfikatów, np.
Mozilla Firefox ma swój magazyn z certyfikatami urzędów głównych).
Główne urzędy certyfikacji i ich certyfikaty są traktowane w systemach operacyjnych i różnych
programach jako zaufane. Jednocześnie mechanizmy kryptograficzne umożliwiają
sprawdzenie autentyczności podpisu cyfrowego w certyfikacie urzędu pośredniego i w
certyfikatach wystawionych przez urzędy pośrednie. Może być również tak, że urząd pośredni
jest nadrzędny dla innego urzędu pośredniego i dopiero ten kolejny urząd pośredni wystawia
certyfikat dla strony WWW.
6
Jeśli certyfikat serwera WWW (witryny) jest podpisany przez urząd pośredni, którego
certyfikat jest podpisany przez inny urząd pośredni itd. aż łańcuch certyfikatów kończy się na
którymś z głównych urzędów certyfikacji, to przeglądarka traktuje taką stronę jako
autentyczną.
Jeśli ufamy danemu wydawcy (CA), to ufamy, że zawarty w certyfikacie klucz publiczny jest
rzeczywiście prawdziwy i związany jest z firmą, organizacją, stroną WWW, która jest wpisana
do certyfikatu. W systemach operacyjnych oraz różnych programach (np. przeglądarkach
internetowych) jest wpisana lista zaufanych tzw. głównych urzędów certyfikacji oraz lista
pośrednich urzędów certyfikacji, których certyfikaty są podpisane przez główne urzędy.
Można przeglądać i zarządzać listą zaufanych wydawców i dodawać do tej listy certyfikaty
swoich zaufanych urzędów certyfikacji.
Hierarchię urzędów certyfikacji jest określana jako infrastruktura kluczy publicznych (PKI –
Public Key Infrastructure).
Darmowe certyfikaty do użycia na serwerze WWW (SSL, opisany poniżej):
https://www.sslforfree.com/. Płatne np. https://www.digicert.com - pod tym adresem można
znaleźć również ciekawe informacje na temat wykorzystania certyfikatów i protokołu SSL
(opisany niżej).
Rysunek z wykładu:
7
System PGP
Niezależnym standardem opisującym tworzenie kluczy, rejestrowanie i wykorzystywanie
certyfikatów jest PGP (Pretty Good Privacy). Powstał standard Open PGP. Standard doczekał
się wielu implementacji.
Darmowa wersja: np. GNU Privacy Guard GPG: https://www.gnupg.org.
Inne sposoby sprawdzenia autentyczności i integralności
HMAC, MAC:
MAC może być też tworzony przez algorytm szyfrujący – w takim przypadku sprawdzenie
autentyczności i integralności jest realizowana łącznie z samym szyfrowaniem (np. może być
połączony z AES).
Inne metody wymiany kluczy symetrycznych z wykorzystaniem kluczy
prywatnych i publicznych.
Szyfrowanie klucza symetrycznego wprost kluczem publicznym przypisanym do serwera rodzi
różne niebezpieczeństwa. Jedno z nich polega na przykład na tym, że jeśli ktoś kiedyś „złamie”
klucz prywatny (odgadnie, wykradnie), to można odszyfrować zgromadzoną gdzieś wcześniej
komunikację.
Aby temu przeciwdziałać stosuje się różne metody.
8
Metoda Diffiego Helmana – idea (są różne modyfikacje).
Tworzone są efemeryczne (nietrwałe) pary kluczy publicznych i prywatnych zarówno u klienta
jak i po stronie serwera. Klucze publiczne są przesyłane jawnie. Z tych kluczy publicznych (i
zwykle jeszcze innych danych) zarówno serwer jak i klient są w stanie wygenerować taki sam
klucz symetryczny, który następnie jest używany do szyfrowania pakietów.
Problem – nie ma tu sprawdzania autentyczności. Dlatego metody te przy wymianie kluczy
wykorzystują (na różne sposoby) tradycyjny podpis cyfrowy, weryfikowany przy pomocy
certyfikatu.
Bezpieczne protokoły: IPSec, SSL, TLS
Bezpieczne protokoły powinny zapewniać:
• Poufność przesyłanych danych (osoby niepowołane nie powinny móc odczytać danych).
• Autentyczność (dane pochodzą rzeczywiście od określonego źródła).
• Integralność (nikt danych nie zmienił).
Bezpieczne protokoły mogą być wykorzystywane w warstwie aplikacji (szyfrowanie
komunikatów HTTPS, protokoły SSL, TLS), między warstwą sieci a transportu (szyfrowanie
pakietów IP – protokół IPSec), w warstwie łącza danych (szyfrowanie ramek, np. WEP, WPA,
WPA2 w sieciach bezprzewodowych).
9
Protokoły szyfrujące przesyłane dane
SSL – Secure Socket Layer (warstwa aplikacji w modelu TCP/IP, ale bywa zaliczany do warstwy
transportu) – Używany był do zabezpieczania innych protokołów, wykorzystuje połączenie
szyfrowania asymetrycznego z kluczem publicznym i symetrycznego. Wykorzystywany kiedyś
z HTTP w sieci WWW (HTTPS), ale teraz wycofany.
TLS – Transport Layer Security (warstwa aplikacji modelu TCP/IP, bywa zaliczany do warstwy
transportu) – obecnie wykorzystywany, wywodzi się z SSL.
S/MIME – Secure Multpurpose Internet Mail Extensions – szyfruje i umieszcza podpisy
cyfrowe w wiadomościach pocztowych e-mail. Jest rozszerzeniem MIME, standardu włączania
danych binarnych do listów elektronicznych.
Protokół IPSec
IPSec (IP Security) działa w warstwie sieci, może być wykorzystywany do szyfrowania i
sprawdzania autentyczności i integralności przesyłanych danych pochodzących z dowolnej
aplikacji. Proces szyfrowania i deszyfrowania jest niewidoczny dla użytkownika.
IPSec jest w zasadzie frameworkiem, umożliwiającym wykorzystanie pewnych protokołów i
metod według określonych zasad. Głównymi częściami IPSec są dwa protokoły: AH
(Authentication Headers) oraz ESP (Encapsulating Security Payloads).
Cechy IPSec:
Autentyczność i integralność danych.
AH umożliwia sprawdzenie autentyczności komputerów (nie użytkowników) uczestniczących
w transmisji, umożliwia też sprawdzenie integralności danych. Nagłówek IP oraz dane są
zabezpieczone przed modyfikacją.
Szyfrowanie danych.
ESP zapewnia szyfrowanie danych oraz autentyczność i integralność danych. ESP może być
używany samodzielnie lub z AH.
Przed przesyłaniem danych strony komunikujące się uzgadniają szczegóły takie jak sposób
uwierzytelniania, wymiana kluczy, algorytmy szyfrowania.
Polityki stosowania IPSec – można ustalić się politykę (zasadę, policy) kiedy IPSec ma być
automatycznie zastosowany.
Tryby działania IPSec (zarówno AH jak i ESP):
• Tryb transportu (w sieci lokalnej) między dwoma punktami końcowymi transmisji.
• Tryb tunelowania – szyfrowanie w niezabezpieczonej części sieci (np. dane między biurami
przesyłane przez Internet).
10
Metody uwierzytelniania w IPSec:
• Kerberos,
• Oparty o certyfikaty cyfrowe,
• Klucz dzielony (przechowywany we właściwościach napis jednakowy dla obu
komunikujących się stron).
Filtry IPSec
Filtr IPSec pozwala na automatyczne przepuszczenie datagramów IP, blokowanie lub użycie
negocjacji (i w konsekwencji użycie IPSec) w zależności od źródła i miejsca docelowego IP,
protokołu transportowego, portów źródłowych i docelowych.
Opis (rysunki):
http://www.unixwiz.net/techtips/iguide-ipsec.html
IPSec (ESP w trybie tunelowym) może być wykorzystany do realizacji VPN – Virtual Private
Network (wyjaśnienie na wykładzie).
Protokoły SSL (Secure Socket Layer) i TLS (Transport Layer Security)
TLS 1.3:
https://www.thesslstore.com/blog/tls-1-3-everything-possibly-needed-know/
Więcej szczegółów:
https://www.thesslstore.com/blog/cipher-suites-algorithms-security-settings/
Inny szczegółowy opis:
https://tls13.ulfheim.net
(wersja TLS 1.2: https://tls.ulfheim.net )
11
Transmisje grupowe dla IPv4, protokół IGMP, protokoły routowania
dla transmisji grupowych IPv4.
Multicast – transmisja grupowa, multiemisja.
Idea: Wysłanie jednego pakietu ze źródła do wielu miejsc docelowych. Pakiety są kopiowane
w routerach i przełącznikach warstwy drugiej.
Zalety multiemisji w stosunku do transmisji jednostkowych (unicast) – mniejsze obciążenie
sieci, większa skalowalność.
Wykorzystanie: programy radiowe i telewizyjne, wideokonferencje, zdalne nauczanie,
dystrybucja plików, ogłoszenia, monitoring, gry itd.
Część z powyższych zastosowań wykorzystuje schemat jeden-do-wielu, część wiele-do-wielu.
Komunikaty w większości protokołów routowania (RIP2, OSPF, EIGRP i inne) są przesyłane na
znane, zarezerwowane dla nich adresy multiemisji.
Klasa D adresów IPv4 wykorzystywana w multiemisji: 224.0.0.0 – 239.255.255.255.
Przykładowe adresy o zasięgu ograniczonym do łącza:
224.0.0.1 – wszystkie komputery uczestniczące w transmisji grupowej (również routery) w
segmencie sieci lokalnej (np. przyłączone do tego samego przełącznika Ethernet).
224.0.0.2 – wszystkie routery uczestniczące w transmisji grupowej (multicast routers) w
segmencie sieci lokalnej.
224.0.0.4 – routery DVMRP.
224.0.0.5 – wszystkie routery OSPF.
224.0.0.6 – routery DR OSPF.
224.0.0.9 – routery RIPv2 (RIPv1 wykorzystuje rozgłoszenie – broadcast, nie multicast).
Aby uczestniczyć w transmisji grupowej, komputer musi sprawdzać określone adresy w
przychodzących pakietach (IP) i generalnie w ramkach (MAC).
Transmisja grupowa odbywa się z wykorzystaniem różnych mechanizmów i protokołów. Do
komunikacji router – host wykorzystywany jest specjalny protokół IGMP (Internet Group
Management Protocol). Ponadto routery wykorzystują odpowiednie protokoły routowania
(DVMRP – Distance Vector Multicast Routing Protocol, MOSPF – Multicast OSPF, PIM DM –
Protocol Independent Multicast Dense Mode, PIM SM Sparse Mode, PIM Sparse-Dense
Mode). Są też różne mechanizmy i protokoły dodatkowe (omówione później).
IGMP – Internet Group Management Protocol.
Protokół IGMP jest wykorzystywany do dynamicznego rejestrowania/wyrejestrowania
odbiornika w routerze.
Komunikaty IGMP są przesyłane w pakietach IP z adresem docelowym typu multicast i
ustawioną wartością TTL na 1.
IGMP Wersja 1
Są dwa typy komunikatów:
•
•
Membership query (general membership query), wysyłany jest okresowo (co
kilkadziesiąt sekund) przez routery na adres 224.0.0.1 (adres ten oznacza wszystkie
komputery wykorzystujące multicast); służy do sprawdzenia, czy w sieci (na łączu) są
odbiorcy dla emisji grupowej.
Membership report, wysyłany jest na pewien adres grupy (na przykład 232.32.32.32),
służy do zgłoszenia się jako odbiorca pakietów wysyłanych na ten adres; membership
report wysyłany jest też w odpowiedzi na membership query.
Host (nie router) po otrzymaniu membership query czeka pewien pseudolosowy czas (z
zakresu od 0 do 10 sekund) i wysyła membership report. Jeśli w tym pseudolosowym czasie
host usłyszy membership report od innego hosta, to nie wysyła swojego raportu.
W IGMPv1 host „po cichu” opuszcza grupę. Jeśli router nie dostanie raportu w odpowiedzi na
trzy kolejne membership query (lub według innej reguły opisanej w odpowiednim RFC), router
usuwa grupę z tablicy multicastu i przestaje przesyłać pakiety kierowane do tej grupy.
W IGMPv1 nie ma mechanizmu wyboru jednego routera odpytującego (tzw. querier) w
jednym segmencie sieci wykorzystującej technologię wielodostępu z wieloma routerami
(multiple access, np. Ethernet albo Frame Relay). Mechanizm ten wprowadzono w IGRP v2.
Podobny mechanizm jest też wykorzystywany w protokole routowania multicastu o nazwie
PIM.
IGMP Wersja 2
W IGMPv2 są cztery typy komunikatów:
• Membership query
• Version 1 membership report
• Version 2 membership report
• Leave group
Ważne zmiany w porównaniu do wersji pierwszej:
• Membership query może być typu group-specific query – zapytanie o członkostwo jest
wysyłane na adres grupy zamiast na 224.0.0.1. W ten sposób router może sprawdzić,
czy jest uczestnik w konkretnej grupie, bez proszenia uczestników wszystkich grup o
raporty.
• Leave group message – komunikat o opuszczeniu grupy, wysyłany jest na adres
224.0.0.2 (wszystkie routery multicast na łączu). Powoduje szybsze usunięcie grupy z
tablicy multicastu, jeśli nie ma w niej odbiorców. Standardowo router po otrzymaniu
tego komunikatu, wysyła group-specific query, żeby upewnić się, czy jest jeszcze jakiś
uczestnik tej grupy na łączu. Cały proces opuszczenia i usunięcia grupy trwa typowo 13 sekundy.
• Dodano do zapytań IGMP (queries) określenie czasu query-interval response time
(max. resp. time), jaki mają uczestnicy na wysłanie raportu (w jednostkach 0,1 s.,
standardowo wartość jest 100, czyli 10 sekund), czas ten jest określany przez
wysyłającego zapytanie. Host po otrzymaniu membership query ustawia liczniki
opóźnień dla każdej grupy (z wyjątkiem 224.0.0.1), do której należy na tym łączu.
Liczniki są ustawiane na wartość pseudolosową z zakresu od zera do query interval
response time. Jeśli licznik był już włączony dla danej grupy multicastowej, to jest on
tylko wtedy resetowany do wartości losowej, jeśli query interval response time jest
•
mniejszy niż pozostała wartość licznika. Jeśli wygaśnie licznik dla grupy, to host musi
wysłać wiadomość multicast version 2 membership report. Jeśli host odbierze inną
wiadomość Report od innych hostów, to zatrzymuje licznik i nie wysyła już wiadomości
Report, w ten sposób unika się powielania raportów dla grupy.
Dodano mechanizm wyboru routera odpytującego (querier) w segmencie sieci
wykorzystującej wielodostęp. Zostaje nim router, którego adres IP jest najmniejszą
liczbą. Domyślnie router zakłada, że jest routerem odpytującym, ale jak dostanie query
od routera z „niższym” adresem IP (na tym samym łączu), to przestanie być routerem
odpytującym (staje się non-querier). Jeśli router non-querier nie słyszy komunikatów
query od routera odpytującego przez pewien czas (other querier present interval), to
staje się routerem odpytującym (ale znowu tylko do chwili, gdy dostanie query od
routera z niższym adresem IP).
IGMP Wersja 3
W IGMPv3 dodano możliwość zgłaszania się do grup z wyspecyfikowaniem adresu (adresów)
jednostkowego IPv4 pewnego nadawcy (wielu nadawców). Można więc zgłosić się do grupy
na przykład 235.32.32.35, ale z wskazaniem, że interesują nas tylko pakiety od konkretnego
źródła (z wyspecyfikowanym adresem IP).
Transmisje grupowe a technologie sieci lokalnych.
Ethernet daje możliwość adresowania MAC typu multicast. Wykorzystywane są adresy z
zakresu 01:00:5e:00:00:00 do 01:00:5e:7f:ff:ff. 23 bity adresu IPv4 są wprost wykorzystane w
adresie MAC.
Dla IPv4:
Zatem każdy adres Ethernet multicast jest związany z 32 adresami IPv4 z klasy D (różniącymi
się na 5 bitach). Trzeba to uwzględnić przy projektowaniu multiemisji. Może się zdarzyć, że
pewien host będzie otrzymywał ramki zawierające pakiety IPv4 z grupy, której nie jest
odbiorcą. Jednak pakiet taki zostanie odrzucony po odczytaniu adresu IPv4.
Przykłady
239.20.20.20 odpowiada adresowi MAC: 01-00-5e-14-14-14.
239.10.10.10 odpowiada adresowi MAC: 01-00-5e-0a-0a-0a.
Przykład adresów IP multiemisji, które odwzorowane są w ten sam adres MAC:
Adresy, które różnią się w zapisie bitowym na pozycjach oznaczonych _ są odwzorowane w
ten sam adres MAC
1110_ _ _ _ . _ xxxxxxx. xxxxxxxx.xxxxxxxx
224.7.7.7
225.7.7.7
226.7.7.7
227.7.7.7
…
239.7.7.7
224.135.7.7
225.135.7.7
226.135.7.7
227.135.7.7
…
239.135.7.7
Standardowo przełącznik Ethernet traktuje ramkę z adresem MAC multiemisji jak ramkę z
adresem jednostkowym MAC (unicast), którego nie zna, czyli po otrzymaniu takiej ramki na
pewnym porcie, przesyła ją do wszystkich pozostałych portów (realizuje broadcast w warstwie
drugiej). W celu wyeliminowania tego rozgłoszenia stosowany jest mechanizm nazywany
IGMP snooping lub specjalny protokół o nazwie CGMP (to rozwiązanie firmy Cisco jest starsze
i gorsze – stosowane w starszych, „słabszych” przełącznikach).
IGMP Snooping
IGMP snooping polega na tym, że przełącznik warstwy drugiej „słucha” konwersacji między
hostami a routerami i analizuje pakiety z komunikatami IGMP (raporty członkostwa w grupie
membership reports oraz zgłoszenia opuszczenia grupy – membership leaves). Na podstawie
śledzonych komunikatów IGMP przełącznik aktualizuje swoją tablicę przypisania adresów
MAC do portów (CAM – Content Addressable Memory) i uwzględnia adresy Ethernet
multicast.
To rozwiązanie wymaga jednak odpowiednio wydajnych przełączników, najlepiej z
dołączonym specjalnym sprzętowym modułem (ASIC) do analizy komunikatów IGMP.
Protokół CGMP
Cisco Group Management Protocol (CGMP), mimo że opracowany w firmie Cisco, jest
wykorzystywany nie tylko przez przełączniki tej firmy. Protokół jest oparty o model klientserver, gdzie router jest serwerem CGMP a przełącznik jest klientem. Na routerze i
przełączniku działa oprogramowanie realizujące CGMP. Router tłumaczy komunikaty IGMP
(membership report i leave wędrujący od hosta do routera) na komendy CGMP, które są
przesyłane do przełącznika i tam wykorzystane do modyfikowania tablicy adresów MAC.
Routery wykorzystują ogólnie znany adres multicast MAC (01:00:0c:dd:dd:dd) do przesyłania
komend do przełączników.
Poniższy tekst należy traktować jako uzupełniający (nie obowiązuje do egzaminu).
Protokół routowania multiemisji, PIM (Protocol Independent Multicast).
W odróżnieniu od protokołów routowania jednostkowego (unicast) opartych na grafach,
protokoły dla multicastu oparte są o drzewa dystrybucji. Drzewa te określają ścieżki od źródła
do odbiorników (odbiorców).
Wykorzystywane są dwa rodzaje drzew:
• Source trees (drzewa źródłowe),
• Shared trees (drzewa współdzielone).
W przypadku protokołów wykorzystujących source trees oddzielne drzewo jest budowane od
każdego źródła do odbiorników. Source tree określa najkrótszą ścieżkę od źródła do odbiorcy,
drzewo takie jest też nazywane Shortest Path Tree (SPT). Routery zapamiętują informacje o
parach (Source IP address, Group IP address). W przypadku, gdy na pewnym obszarze (z
wieloma odbiorcami) takich par jest dużo, czyli gdy grupy zawierają wiele źródeł i jest tych
grup dużo, obsługa multiemisji może zajmować sporo zasobów pamięciowych routera.
W przypadku protokołów wykorzystujących shared trees, ścieżki od różnych źródeł zawierają
wspólną część – drzewo współdzielone, którego korzeń jest routerem służącym jako punkt
spotkań – Randezvous Point (RP). Źródła wysyłają pakiety do RP, skąd przesyłane są dalej do
odbiorców przez drzewo współdzielone. Ze względu na wykorzystanie wspólnego punktu
spotkań, ścieżki od źródła do odbiorcy mogą być nieoptymalne. Zaletą jest jednak znacznie
mniejsze wykorzystanie zasobów routerów.
Protokół routowania multicastu PIM może być typu dense mode (DM, tryb gęsty) lub sparse
mode (SM, tryb rzadki).
Dense mode polega na tym, że routery kierują ruch grupowy (multicast) w sposób zalewowy
(flooding) do wszystkich sieci na pewnym obszarze, a następnie obcinają te przepływy
(krawędzie grafu), dla których nie ma odbiorników wykorzystując okresowy działający
mechanizm nazywany flood-and-prune. Generalnie założenie jest tutaj takie, że odbiorcy są
prawie wszędzie w rozpatrywanym obszarze.
Sparse mode polega na tym, że drzewa dystrybucji są budowane z wykorzystaniem jawnych
mechanizmów połączenia (explicit join tree) kierowanych od routerów, do których podłączeni
są bezpośrednio odbiorcy do (w kierunku) źródła.
Protokoły routowania multicast wykorzystują mechanizm Reverse Path Forwarding do
utworzenia najkrótszych ścieżek od źródła do odbiorcy i do zapobiegania pętlom. Można
powiedzieć, że jednostkowe (unicast) protokoły routowania skupiają się na tym, gdzie jest
odbiorca (jaka jest najkrótsza ścieżka do odbiorcy), natomiast protokoły multicast skupiają się
na tym, gdzie jest źródło (najkrótsza ścieżka do źródła).
PIM Dense Mode Flood and Prune
(rysunek na tablicy)
Początkowo (w fazie Flood) multicast jest kierowany do wszystkich interfejsów (w wielu
routerach) z wyjątkiem tych, które prowadzą najkrótszą ścieżką do źródła. Nazwijmy te
interfejsy non-RPF. Wyznaczenie interfejsów prowadzących najkrótszą ścieżką do źródła
(nazwijmy je RPF) następuje dzięki pracy zwykłego protokołu routowania unicastowego (np.
EIGRP, OSPF). W fazie Prune routery, które nie mają odbiorców wysyłają do interfejsów RPF i
non-RPF komunikaty Prune, które powodują zablokowanie przesyłania ruchu grupowego do
fragmentów sieci, w których przesyłanie grupowe nie powinno być realizowane. Router, który
ma odbiorców ruchu grupowego wysyła komunikaty Prune do tych interfejsów non-RPF, z
których nie powinien nadchodzić ruch grupowy (bo nie są na najkrótszej ścieżce do źródła).
Po kilku minutach (w PIM DM standardowo 3 min.) fazy Flood oraz Prune są realizowane
ponownie. W przypadku, jeśli w pewnym miejscu, do którego nie dociera ruch grupowy (bo
zadziałała faza Prune) pojawia się odbiorca, może być przesłany odpowiedni komunikat
(Graft), który szybko przywraca ruch grupowy w odpowiednim fragmencie sieci (nie trzeba
czekać 3 min.).
PIM Sparse Mode
PIM SM wykorzystuje shared distribution trees, chociaż może również wykorzystywać drzewa
SPT (przełącza się na SPT).
Zwykle PIM SM wykorzystuje RP (Randezvous Point). Źródła rejestrują się w RP (muszą go znać)
i wysyłają ruch multicastowy do RP przy pomocy pakietów unicastowych. Odbiorcy przyłączają
się do grupy wykorzystując swój DR (designated router) na swoim łączu. Router ten musi znać
adres RP i wysyła komunikat dołączenia grupy (*,G) w kierunku RP, wykorzystując informację
z normalnego routowania unicastowego (czyli najkrótszą trasą do RP). Komunikat (*,G)
wędruje metodą hop-by-hop aż dotrze do RP, budując tym samym gałąź drzewa shared tree.
W przypadku, jeśli węzeł wykryje, że zna lepszą ścieżkę do źródła niż przez shared tree,
przełącza się na SPT.
Są różne usprawnienia/modyfikacje, np. Bidirectional PIM dla ruchu typu many-to-many.
Istnieje możliwość skonfigurowania mechanizmu automatycznego wyboru RP.
Jest też wersja PIM Sparse-Dense-Mode. W tej wersji PIM, jeśli nie zostanie wykryty RP
(można skonfigurować automatyczny wybór RP) ani nie zostanie skonfigurowany ręcznie, PIM
przechodzi do trybu PIM DM. Zalecaną wersją PIM jest właśnie PIM Sparse-Dense-Mode.
Protokół IPv6
Potrzeba zwiększenia liczby adresów wynika z rosnącej liczby komputerów i innych urządzeń
podłączonych do Internetu (komputery PDA, telefony komórkowe, różne urządzenia z
„inteligentnego” domu). Jeśli urządzenia te miałyby korzystać z IP to być może IPv4 będzie
niewystarczający, mimo stosowania translacji adresów (NAT) czy DHCP.
Zanim wprowadzono routowanie bezklasowe, które powoduje lepsze wykorzystanie
przestrzeni adresowej i zanim wprowadzono translację adresów i adresy prywatne, były
przewidywania, że do końca lat 90-tych ubiegłego wieku adresy IPv4 zostaną wyczerpane
(niektóre opracowania mówiły o 2005-2010). Wprowadzenie wspomnianych rozwiązań
odsunęło bezwzględną konieczność stosowania IPv6 na nieco dalszą przyszłość. Ze względu na
niekompatybilność IPv6 z IPv4 powszechne przejście na nową wersję nie jest jeszcze
realizowane.
W IPv6 rozmiar adresu wzrasta z 32 bitów do 128 bitów (liczba adresów rośnie do
maksymalnie 3,4*10 38, są to tysiące unikalnych adresów na każdy metr kwadratowy kuli
ziemskiej).
W rzeczywistości jednak powody, dla których powszechne wprowadzenie IPv6 wydaje się być
nieuchronne są też inne niż zwiększona przestrzeń adresowa. Prześledźmy najważniejsze
cechy IPv6.
Cechy IPv6 w odniesieniu do IPv4
•
Dłuższe adresy, a zatem dużo większa przestrzeń adresowa (zakres dopuszczalnych
adresów).
•
Złożona hierarchia adresów. W IPv4 hierarchia adresów dotyczy na ogół tylko lokalnej sieci
i podsieci, ale nie ma gwarancji, że adresy np. 149.167.0.0/16 i 149.168.0.0/16 należą do
tego samego dostawcy i są ulokowane niedaleko w sensie geograficznym. Zatem w IPv4
jest trudniej wpisywać zsumowane trasy w routerach (trasy do wielu sieci). W IPv6
wprowadza się hierarchię adresów, która znacznie ułatwia routowanie (zapis
sumarycznych tras do wielu sieci).
•
Nowa forma nagłówka – podstawowy nagłówek jest uproszczony, zawiera 40 oktetów,
dodatkowe informacje przekazywane są za pomocą dodatkowych nagłówków (mogą mieć
inną wielkość). Wymagany jest jedynie nagłówek podstawowy, dodatkowe są opcjonalne.
W nagłówkach dodatkowych mogą być informacje o trasowaniu, fragmentacji,
szyfrowaniu, kontroli autentyczności i integralności (przejęta funkcjonalność z protokołu
IPSec). Uproszczona forma nagłówka powoduje przyśpieszenie operacji w routerach.
Wprawdzie podstawowy nagłówek jest większy niż w IPv4 (tam zajmował 20 bajtów), lecz
w IPv4 cały nagłówek ma zmienną długość (od 20 do 60 bajtów) ze względu na możliwość
umieszczenia w nim opcji. W IPv6 w przypadku nagłówka podstawowego pobieranych jest
zawsze 40 bajtów, operacja może być wykonywana szybciej sprzętowo. W IPv6 poza
adresami źródłowym i docelowym jest tylko osiem bajtów innych informacji. Ewentualne
inne informacje mogą być przesyłane w załączonych nagłówkach dodatkowych, które
1
mogą nie być w ogóle przetwarzane przez routery pośrednie, ich przetwarzanie jest
realizowane dopiero w komputerze docelowym. Ponadto umieszczenie dodatkowych
informacji w nagłówkach dodatkowych a nie w nagłówku podstawowym ułatwia
rozszerzanie protokołu i wprowadzanie nowych opcji i nagłówków w przyszłości.
•
Fragmentacja realizowana jest nie przez routery pośrednie (jak w IPv4), ale przez nadawcę,
który musi określić MTU (Maximum Transfer Unit) na drodze datagramu IP (inaczej:
pakietu). Procedura wyznaczenia MTU jest nazywana Path MTU Discovery. Celem
przesunięcia zadania fragmentacji na nadawcę jest odciążenie routerów. W przypadku
decyzji (w pewnym routerze) o przesyłaniu datagramu trasą o mniejszym MTU niż wielkość
datagramu IPv6, datagram jest odrzucany (przez ten router) i odpowiedni komunikat
ICMPv6 (Packet Too Big) jest wysyłany do nadawcy (komunikat ten zawiera poprawną
wartość MTU). Nadawca musi powtórzyć przesłanie z odpowiednim MTU. Proces ten
teoretycznie może nastąpić wielokrotnie na drodze datagramu, jednak w praktyce
powinien wystąpić rzadko. Protokoły (implementacje protokołów) warstw wyższych (np.
TCP) są powiadamiane o nowej wartości MTU i powinny ją uwzględnić. Jeśli jednak nie
uwzględnią (czyli będą dalej przesyłać np. za duże segmenty TCP), wówczas komputer
źródłowy będzie wykonywał fragmentację zbyt dużych pakietów.
•
IPv6 zawiera rozwinięte mechanizmy autokonfiguracji.
•
IPv6 zawiera ulepszone mechanizmy obsługi rozgłaszania grupowego (multicast) oraz
nowy rodzaj adresowania – adresy pobliskie anycast (przesłanie do jednego – na ogół
najbliższego – routera skonfigurowanego do odbierania określonego adresu typu anycast).
•
IPv6 zawiera mechanizmy wsparcia dla urządzeń mobilnych.
•
Do IPv6 włączone są mechanizmy bezpieczeństwa. Jest wparcie dla szyfrowania, kontroli
integralności i autentyczności przesyłanych danych (włączony standard IPSec).
•
Wsparcie dla QoS (Quality of Service) – jest to mechanizm rezerwacji zasobów na potrzeby
komunikujących się programów. Mechanizm umożliwia routerowi wiązanie każdego
datagramu z podaną rezerwacją zasobów. Wprowadza się pojęcie potoku (flow),
oznaczające ścieżkę przez intersieć, na której routery gwarantują określoną jakość usługi,
np. programy przesyłające wideo mogą ustanowić potok, w ramach którego mają
gwarantowaną określoną przepustowość i opóźnienie. Można również określać priorytet
pakietów uwzględniany przy odrzucaniu pakietów wskutek przeciążenia (congestion) na
routerze.
Struktura nagłówka IPv6
Pięć pól z nagłówka IPv4 zostało usuniętych:
długość nagłówka,
identyfikacja, flagi, przesunięcie fragmentu (te trzy pola były używane przy fragmentacji),
suma kontrolna nagłówka.
2
Pola nagłówka IPv6:
Version
4 bity, wersja protokołu, wpisana jest liczba 6.
Traffic Class
1 bajt, używana do określenia priorytetu pakietów IPv6.
Flow Label
20 bitów, używane do etykietowania pakietów wymagających takiego
samego traktowania przez routery. Przyśpiesza obsługę strumienia
(potoku, ang. flow) datagramów, które muszą być dostarczone w czasie
rzeczywistym (np. wideo), w kolejnych datagramach ze strumienia (za
pierwszym) nagłówki nie muszą być przetwarzane pod kątem określania
jakości przesyłania.
Payload Length
2 bajty, wielkość danych za nagłówkiem, obejmuje też nagłówki
dodatkowe. Normalnie daje to możliwości przesyłania 64 kB danych, ale
IPv6 daje możliwość tworzenia tzw. Jumbgrams – datagramów
większych, które wymagają specjalnego nagłówka dodatkowego
Jumbogram Extension header.
Next Header
1 bajt, identyfikuje typ następnego nagłówka, np. TCP, UDP lub
nagłówka dodatkowego IPv6.
Hop Limit
1 bajt, TTL.
Source Address
16 bajtów, adres źródłowy.
Destination Address 16 bajtów, adres docelowy. W IPv6 to pole czasami może nie zawierać
ostatecznego adresu przeznaczenia – jeśli został załączony dodatkowy
nagłówek typu Routing.
Nagłówki dodatkowe IPv6 (Extension headers)
W datagramie IPv6 może być zero lub więcej nagłówków dodatkowych za nagłówkiem
podstawowym a przed przesyłanymi danymi (np. segmentem TCP). Typ nagłówka
dodatkowego jest określony w polu Next Header w nagłówku poprzedzającym. Nagłówki
dodatkowe są sprawdzane i przetwarzane przez węzeł (router, host) o adresie zawartym w
polu Destination Address w nagłówku podstawowym. W przypadku transmisji grupowej
(multicast) nagłówki dodatkowe są sprawdzane i przetwarzane przez wszystkie węzły należące
do grupy.
Jeśli nagłówek jest typu Hop-by-hop Options header, to informacje, które przenosi muszą być
przeanalizowane przez każdy węzeł na drodze datagramu. Taki nagłówek musi być
umieszczony zawsze bezpośrednio za nagłówkiem podstawowym.
Wielkość nagłówka dodatkowego jest zawsze wielokrotnością 8 bajtów.
Nagłówki dodatkowe muszą być sprawdzane i przetwarzane dokładnie w kolejności
występowania.
Jeśli węzeł musi przetworzyć nagłówek dodatkowy, ale nie może rozpoznać poprawnej liczby
w polu Next Header, powinien odrzucić datagram i wysłać komunikat ICMPv6 Parameter
Problem.
3
Jeśli więcej niż jeden nagłówek jest przesyłany, to kolejność musi być taka:
1) IPv6 header (nagłówek podstawowy).
2) Hop-by-hop Options header (jest używany przez routery np. w protokole RVSP – Resource
Reservation Protocol, w protokole MLD – Multicast Listener Discovery, w jumbogramach).
3) Destination Options header, jeśli użyty jest nagłówek dodatkowy Routing. Służy do
przekazania opcji, które będą przetwarzane przez węzeł o adresie zawartym w polu
Destination Address w nagłówku podstawowym oraz przez węzły o adresach wymienionych
w nagłówku dodatkowym typu Routing.
4) Routing header (typ 0 – odpowiednik routowania źródłowego z IPv4 oraz typ 2 –
wykorzystywany do obsługi mobilności do przekazania Home Address mobilnego węzła
docelowego).
5) Fragment header.
6) Authentication header.
7) Encapsulating Security Payload header.
8) Destination Options header (wykorzystywany dla opcji, które będą przetwarzane tylko przez
ostatecznego odbiorcę pakietu, wykorzystywany w mobilnym IP do przekazania
źródłowego adresu home).
9) Mobility header (wykorzystywany do obsługi mobilności w protokole IPv6).
10) Upper-Layer header (np. TCP, UDP).
Przykłady pakietów IPv6:
Nagłówek
Nagłówek TCP
postawowy
wraz z danymi
IPv6,
(segment TCP)
Next header =
6 (TCP)
Nagłówek
postawowy
IPv6,
Next header =
43 (Routing)
Nagłówek
Nagłówek TCP
Routing,
wraz z danymi
Next header =
6 (TCP)
Nagłówek
postawowy
IPv6,
Next header =
43 (Routing)
Nagłówek
Routing,
Next header =
44 (Fragment)
Fragment
Nagłówek TCP
header,
wraz z danymi
Next header =
6 (TCP)
Inne przykłady w materiałach uzupełniających:
http://www.cisco.com/en/US/technologies/tk648/tk872/technologies_white_paper0900aec
d8054d37d.html
4
Routing header
Routing header jest używany do określenia listy routerów, przez które powinien przejść pakiet
na drodze do miejsca przeznaczenia. Odpowiada to opcjom routowania źródłowego.
Struktura nagłówka typu Routing:
Next header (1 bajt)
Header Extension Length (1 bajt) – podaje wielkość tego nagłówka w jednostkach 8bajtowych, pierwsze 8 bajtów nie jest wliczane.
Routing Type (1 bajt)
Segments Left (1 bajt) – wartość pola określa przez ile węzłów datagram ma jeszcze przejść
zanim osiągnie ostateczne miejsce przeznaczenia.
Type-Specific Data – zależy od typu nagłówka Routing. Dla typu zero zawiera adresy IPv6
routerów, przez które datagram musi przejść. Dla typu 2 (wykorzystywanego w mobilnym
IPv6) zawiera tzw. Home Address urządzenia mobilnego. To pole ma zawsze taką długość, by
całkowita długość nagłówka była wielokrotnością liczby 8.
Pierwszy węzeł, który przetwarza nagłówek Routing to węzeł (router), którego adres znajduje
się w polu Destination Address nagłówka podstawowego. Węzeł ten zmniejsza o jeden liczbę
zawartą w polu Segments Left i przepisuje następny adres z nagłówka Routing do pola
Destination nagłówka podstawowego. Ostateczne miejsce docelowe datagramu jest
określone przez ostatni adres w nagłówku Routing. Jak widać, w odróżnieniu od IPv4, w IPv6
adres docelowy może się zmieniać na drodze datagramu – jeśli wykorzystywany jest nagłówek
dodatkowy Routing.
Sposób pobierania adresów z nagłówka Routing i wpisywania ich do Destination Address jest
zilustrowany w poniższym przykładzie.
Przykład
Pakiet ma być przesłany z węzła S do węzła D, po drodze muszą być odwiedzone węzły I1, I2,
I3.
Pakiet z S do I1
IPv6 header
Source address: S
Destination address: I1
Pakiet z I1 do I2
Source address: S
Destination address: I2
Pakiet z I2 do I3
Source address: S
Destination address: I3
Pakiet z I3 do D
Source address: S
Destination address: D
Routing header
Segments Left 3
Address(1) = I2
Address(2) = I3
Address(3) = D
Segments Left 2
Address(1) = I1
Address(2) = I3
Address(3) = D
Segments Left 1
Address(1) = I1
Address(2) = I2
Address(3) = D
Segments Left 0
Address(1) = I1
Address(2) = I2
Address(3) = I3
5
W polu Routing Type pierwotnie można było tylko wpisać 0. Ten typ Routing Header jest
określany RH0. W 2001 roku pokazano, że RH0 może być użyty w celu zablokowania usług
(denial of services). Można było wykonywać pętle routowania wpisując odpowiednie adresy
pośrednie. W RFC 5095 ogłoszono, że użycie RH0 jest niebezpieczne i w związku z tym należy
przestać wykorzystywać ten typ nagłówka.
Jednocześnie można stosować inny zdefiniowany typ: 2. Jako adres pośredni można tam
wpisać tylko jeden adres IPv6. Jest to wykorzystane do obsługi mobilności węzłów (do
przekazania Home Address mobilnego węzła docelowego).
Fragment header
Fragmentacja występuje tylko w węźle źródłowym. Pakiet ma część, która nie podlega
fragmentacji – jest to podstawowy nagłówek i wszystkie nagłówki dodatkowe, które muszą
być przetwarzane na drodze datagramu. Część, która podlega fragmentacji składa się z
pozostałych nagłówków dodatkowych, nagłówka warstwy wyższej i danych. Część nie
podlegająca fragmentacji jest na początku każdego fragmentu, potem jest nagłówek
Fragment, potem część fragmentowana.
Adresy IPv6
Adresację IPv6 omawia RFC 4291 (IP Version 6 Addressing Architecture)
Tekstowe przedstawianie adresów IPv6
Osiem 16 bitowych sekcji w zapisie szesnastkowym, oddzielonych dwukropkami, np.:
fe80:0000:0000:0000:0202:b3ff:fe1e:8329
Jeśli w jakiejś sekcji są zera na najstarszych bitach, to nie muszą być wypisywane, np.:
fe80: 0:0:0:202:b3ff:fe1e:8329
Długi ciąg zer może być połączony i przedstawiony jako dwa dwukropki „::”. Symbol „::” może
być użyty w adresie tylko jeden raz.
Na przykład:
fe80::202:b3ff:fe1e:8329
Adres
2002:ca01:0000:0000:0056:0000:0000:1234
może być przedstawiony jako
2002:ca01::0056:0000:0000:1234
6
lub
2002:ca01:0000:0000:0056::1234
ale niepoprawny jest następujący zapis:
2002:ca01::0056::1234
W środowisku z węzłami IPv4 oraz IPv6 mogą być w użyciu adresy IPv6, które na ostatnich
czterech bajtach zawierają adres IPv4. Wówczas sześć bardziej znaczących sekcji 16-bitowych
przedstawianych jest heksadecymalnie, pozostałe 32 bity mogą być przedstawione w postaci
dziesiętnej notacji kropkowej.
Są dwa typy takich adresów:
Typ 1: IPv4-Compatible IPv6 Address
96 bitów zero + adres IPv4
Przykłady
Adres 192.168.0.2 może być zapisany jako:
0:0:0:0:0:0:192.168.0.2
lub
::192.168.0.2
ale można też zapisać go tak:
::c0a8:2
Jednak ten typ jest wg RFC4291 przestarzały i nie powinien być używany.
Typ 2 to IPv4-Mapped IPv6 Address i ten jest obecnie zalecany.
Adres taki ma format:
0000..............................0000 ffff + IPv4 address
Adresy takie mogą być stosowane np. w aplikacjach, które korzystają aktywnie z IPv6 i
dopuszczają tylko taką wersję IP. Aplikacja taka może działać na komputerach z
zaimplementowanym stosem protokołów z IPv4 oraz z IPv6. Komputery obsługujące obydwie
wersje IP czasem są określane jako „dual stack”. Przykład: program serwer TCP korzysta tylko
z adresów IPv6 (jest taka możliwość), ale chcemy umożliwić komunikację tego programu z
klientami IPv4. Komputery „dual stack” dostarczą do programu adres IPv6 typu IPv4-Mapped
IPv6 Address (np. w serwerze TCP może być wykorzystywana struktura adresowa gniazda
sockaddr_in6).
Proponowana forma kanoniczna tekstowej reprezentacji adresów IPv6
Różne sposoby prezentacji tego samego adresu sprawiają jednak wiele kłopotów. Z tego
powodu w sierpniu 2010 opublikowano RFC5952 („A Recommendation for IPv6 Address Text
Representation”), który określa zalecenia w tym zakresie. Proponuje się formę kanoniczną
(canonical format) reprezentacji tekstowej. Jednocześnie wszystkie inne wcześniej omówione
formaty są dopuszczalne.
7
Główne postulaty:
• Zawsze opuszczać wiodące (początkowe) zera w sekcjach.
• Skracać przez dwa dwukropki :: tak dużą część adresu, jak to możliwe.
• Nie skracać przez :: pojedynczej sekcji 16-to bitowej złożonej z samych zer.
• Pojedyncza sekcja 16-to bitowa złożona z samych zer powinna być reprezentowana
jako 0.
• Podwójny dwukropek należy stosować w tym miejscu adresu, w którym skrócenie będzie
największe. Jeśli jest kilka takich miejsc o tej samej długości, należy wybrać pierwsze z
lewej strony.
• Należy używać małych liter, nie dużych (ze względu na podobieństwo dużej litery D do 0
oraz dużego B do 8).
Prefiksy adresów IPv6
Zamiast identyfikatora sieci (jak było w IPv4), w IPv6 używa się tzw. prefiksu. Prefiks to pewna
liczba bitów adresu licząc z lewej strony (najbardziej znaczące bity). Prefiks określa zatem sieć.
Prefiks podaje się standardowo jako pewną liczbę sekcji adresu.
Przykład:
2001:db8:0:cd30
Prefiks można podać również w formie:
ipv6-address/prefix-length
Przykłady:
2001:db8:0000:cd30:0000:0000:0000:0000/60
2001:db8::cd30:0:0:0:0/60
2001:db8:0:cd30::/60
Typ adresu IPv6 można określić na podstawie pierwszych jego bitów. Przedstawia to poniższa
tabela:
Typ
Prefiks binarnie
Adres
niewyspecyfikowany
Pętla zwrotna
(Loopback)
Multicast
Link-local unicast
Same zera
Global unicast
(globalne
jednostkowe)
Wszystkie pozostałe
Prefiks
szesnastkowo
::/128
Najmłodszy bit 1, ::1/128
reszta same zera
1111 1111
ff00::/8
1111111010
fe80::/10
Część
przestrzeni
adresowej
1/256
1/1024
8
Typy adresów IPv6
Klasyfikacja adresów IPv6:
adresy jednostkowe (unicast), adresy pobliskie (anycast) i adresy grupowe (multicast). Nie ma
w IPv6 adresów rozgłoszeniowych, zastępują je adresy grupowe.
Inna klasyfikacja – adresy IPv6 mogą być typu:
Unique stable IP addresses: przypisane w drodze konfiguracji ręcznej, poprzez serwer DHCP
lub w drodze autokonfiguracji z wykorzystaniem adresów MAC (identyfikatorów interfejsów);
Temporary transient IP addresses: otrzymane z wykorzystaniem liczby pseudolosowej w
miejscu identyfikatora interfejsu.
Inny podział: stateful (skonfigurowane przy udziale serwerów DHCPv6) i stateless
(autokonfiguracja bez DHCPv6). Uwaga – konfiguracja stateless oznacza, że nie ma obiektów
(np. serwera DHCPv6), które utrzymywałyby stan adresu (kiedy i komu adres został
przydzielony, na jak długo itp.). RFC 3736 dopuszcza wykorzystanie autokonfiguracji stateless
z udziałem serwera DHCPv6 (czasem określany jako DHCP-lite), ale wówczas serwer ten nie
przydziela adresu IPv6, lecz podaje inne informacje, np. listę serwerów DNS.
Adresy jednostkowe (Unicast addresses)
W IPv6 określony pojedynczy adres jednostkowy może być przypisany do wielu interfejsów w
węźle (komputerze) lub wielu komputerów. Może to być wykorzystywane do adresacji typu
anycast (będzie wyjaśniona dalej) lub do równoważenia obciążeń.
Adres jednostkowy generalnie jest podzielony na dwie części: n bitowy prefiks oraz 128-n
bitowy identyfikator interfejsu. Typowo prefiks otrzymany od dostawcy ma 48 bitów, 16 bitów
mamy na wewnętrzny podział sieci na podsieci (np. w firmie).
Adresy jednostkowe o prefiksie różnym od 000 powinny używać 64-bitowego identyfikatora
interfejsu, zgodnego ze standardem o nazwie EUI-64.
Identyfikator interfejsu może być wyznaczony w trakcie autokonfiguracji na podstawie adresu
warstwy łącza danych. Np. dla adresu MAC w technologii Ethernet: najpierw między trzeci i
czwarty bajt 6-cio bajtowego adresu MAC wstawiona jest liczba 0xfffe (0x oznacza zapis
szesnastkowy), następnie zamieniany jest drugi najmłodszy bit z prawej strony pierwszego
(najbardziej znaczącego) bajta adresu (ta zamiana nie jest wykonywana w przypadku adresu
typu Link-local).
Na przykład dla adresu MAC: 00-02-b3-1e-83-29 otrzymujemy:
0202:b3ff:fe1e:8329.
Adres może być budowany automatycznie na podstawie MAC ale nie musi. Można go np.
wpisać ręcznie lub może być generowany losowo lub przydzielony przez serwer DHCPv6.
Zarezerwowane specjalne adresy jednostkowe
Adres nieokreślony
0:0:0:0:0:0:0:0 (lub :: w formacie skompresowanym) – nie może być przypisany do węzła,
używany jest np. przy inicjalizacji IPv6, gdy węzeł nie zna swojego adresu (w datagramach IPv6
w miejscu adresu źródłowego).
9
Adres pętli zwrotnej (loopback), odpowiednik 127.0.0.1 z IPv4.
0:0:0:0:0:0:0:1 (lub ::1 w formacie skompresowanym).
2001:db8::/32 - Adresy zarezerwowane tylko dla celów wykorzystywania w dokumentacji –
RFC 3849 (nie można ich przypisywać do rzeczywistych interfejsów)
Global Unicast Addresses
Dawna struktura:
FP
001
TLA ID
13 bitów
RES
8 bitów
NLA ID
24 bity
SLA ID
16 bitów
ID interfejsu
64 bity
Adresy te były zorganizowane w strukturę hierarchiczną.
Najwyższy poziom hierarchii był wyznaczony przez tzw. TLA ID – Top Level Aggregation
Identifier. Za 8192 trasy typu top level były odpowiedzialne następujące organizacje:
ARIN – American Registry for Internet Numbers,
RIPE – Reseau IP Europeens Network Coordinator Center in Europe,
APNIC – Asia Pacific Network Information Center.
NLA ID – Next Level Aggregation Identifier wyznaczał przestrzeń adresową przypisaną do
dostawców Internetu.
SLA ID – Site Level Aggregation to tzw. topologia siedziby (Site topology). Część adresu
poświęcona na potrzeby routowania wewnętrznego (w ramach organizacji). Identyfikator
podsieci, pozwalał organizacjom utworzyć wewnętrzną strukturę routingu, 16 bitów daje
możliwości obsługi 65536 wewnętrznych podsieci.
Obecnie, w RFC 4291 struktura została uproszczona:
Global routing prefix
n bits
Subnet ID
m bits
Interface ID
64 bits
Ze względu na to, że identyfikator interfejsu powinien mieć 64 bity, n+m powinno być równe
64.
Adresy jednostkowe używane lokalnie (Link-local Unicast Addresses)
Używane na łączach, na których nie ma routerów, przy autokonfiguracji adresu (host sam
przydziela sobie adres), do tworzenia sieci tymczasowych lub przed przydzieleniem prefiksu
przez router lub serwer DHCPv6.
10 bitów
1111111010
54 bity
0
64 bity
ID interfejsu
Adresy tego typu mają prefiks fe80/10. Identyfikator interfejsu jest automatycznie wyliczany
z adresu MAC (opis znajduje się w tekście wyżej). Typowo adresy te są wykorzystywane np.
jako adresy Next Hop Router w tablicy routowania IPv6 (oczywiście interfejs routera o takim
adresie może mieć też adres IPv6 unikalny globalnie, jednak użycie takich adresów jako Next
Hop nie jest rekomendowane).
10
Adresy jednostkowe siedziby lokalnej (Site-local Unicast Addresses)
Ten typ adresów według najnowszej specyfikacji jest już przestarzały, chociaż dotychczasowe
implementacje mogą być używane nadal. Są odpowiednikiem adresów prywatnych IPv4,
używane do adresacji wewnątrz prywatnej organizacji. Routery nie mogą przesyłać
datagramów z tymi adresami na zewnątrz, ale wewnątrz organizacji sieć może być podzielona
z wykorzystaniem routerów.
10 bitów
1111111011
38 bitów
0
16 bitów
ID podsieci
64 bity
ID interfejsu
Adresy tego typu mają prefiks fec0.
Adresy IPv6 z wbudowanymi adresami IPv4
Wspominane już wcześniej przy okazji omawiania sposobu zapisu adresów IPv6.
80 bitów
0000 .......... 000000
16 bitów
a) 0000 lub
b) ffff
32 bity
Adres IPv4
a) IPv4-compatible IPv6 addresses – przestarzałe, niezalecane.
b) IPv4-mapped IPv6 addresses.
Adresy pobliskie (Anycast Addresses)
Są z zakresu adresów jednostkowych danej organizacji. Nie są przydzielane do pojedynczego
węzła, lecz do grupy węzłów (np. routerów, serwerów DNS). Routery muszą być odpowiednio
skonfigurowane, aby można było je używać z wykorzystaniem adresów pobliskich.
Routowanie powinno być tak skonfigurowane, żeby użycie adresu pobliskiego oznaczało
„najbliższy” (w sensie protokołu routowania) komputer (router) z takim adresem pobliskim.
Proponowany sposób wykorzystania: można nadać ten sam adres pobliski wszystkim
routerom należącym do pewnego dostawcy Internetu. Użycie tego adresu jako adresu
pośredniego w Routing Header (odpowiednik „routowania źródłowego” w IPv4) oznacza
żądanie przekazywania pakietu przez routery należące do danego dostawcy.
Required Anycast Address.
Wygląda podobnie, jak adres sieci w IPv4:
Subnet prefix
n bits
00000000…000
128-n bits
Oznacza: najbliższy router na tym łączu (tj. w tym segmencie sieci). Każdy router uczestniczący
w tym mechanizmie powinien rozpoznawać ten (odpowiedni) adres jako własny.
11
Adresy grupowe (Multicast Addresses)
Zastępują adresy rozgłoszeniowe i grupowe w Ipv4. Adres grupowy jest przydzielany do grupy
węzłów (podobnie jak adres pobliski), lecz w odróżnieniu od adresu pobliskiego, wszystkie
węzły skonfigurowane do stosowania adresu grupowego odbierają pakiety wysłane do tego
adresu.
8 bitów
11111111
4 bity
flagi
4 bity
zakres
112 bitów
ID grupy
Czwarty bit w drugim (od lewej) polu równy zero określa trwały przydział adresu grupowego
(przydzielony przez IANA), jedynka oznacza adres nietrwały. Pozostałe dwie flagi (bity) są
określone w RFC 3306 oraz RFC 3956.
Zakresy:
0 reserved
1 zakres węzła lokalnego (interface or node-local) – tylko transmisja loopback typu multicast
2 adres lokalnego łącza (segmentu sieci lokalnej, link-local)
3 reserved
4 Admin-Local scope – zakres konfigurowany przez administratora
5 zakres lokalnej siedziby (site-local)
6 (unassigned)
7 (unassigned)
8 zakres organizacji (organization-local) – wiele siedzib (sites) jednej organizacji
9 (unassigned)
A (unassigned)
B (unassigned)
C (unassigned)
D (unassigned)
E zakres globalny (global)
F reserved
Routery nie mogą przekazywać poza określony zakres pakietów wysłanych na adres grupowy.
Przykłady adresów typu multicast:
ff02:0:0:0:0:0:0:1 – wszystkie węzły (zakres link-local)
ff02:0:0:0:0:0:0:2 – wszystkie routery (zakres link-local)
ff02:0:0:0:0:0:0:5 – routery OSPF (zakres link-local)
ff02:0:0:0:0:0:0:6 – routery DR (Designated Routers) OSPF (zakres link-local)
ff02:0:0:0:0:0:0:9 – routery RIP (zakres link-local)
ff02:0:0:0:0:0:0:a – routery EIGRP (zakres link-local)
ff05: 0:0:0:0:0:0:2 – wszystkie routery (zakres site local)
ff05: 0:0:0:0:0:1:2 – wszystkie serwery DHCP (zakres site local)
Solicited-Node Multicast Addresses
12
Adres typu Solicited-Node Multicast jest adresem grupowym, tworzonym automatycznie dla
każdego adresu jednostkowego (i pobliskiego) w każdym węźle. Adres ten jest tworzony przez
24 najmniej znaczące bity adresu IPv6 (ostatnia część identyfikatora hosta) przez dodanie do
nich prefiksu: ff02:0:0:0:0:1:ff00::/104.
Na przykład dla adresu MAC 00-02-b3-1e-83-29 adres IPv6 może być
fe80::202:b3ff:fe1e:8329, a odpowiadający adres solicited-node multicast będzie:
ff02:0:0:0:0:1:ff00:ff1e:8329.
Adresy typu solicited-node multicast są wykorzystywane w omawianym poniżej mechanizmie
Neighbor Discovery.
Wymagane adresy IPv6
Host powinien rozpoznawać następujące adresy:
• Link-Local address dla każdego swojego interfejsu.
• Dodatkowe adresy Unicast i Anycast skonfigurowane ręcznie lub automatycznie dla
interfejsów.
• Adres loopback (::1).
• Adres All-Nodes multicast (ff02:0:0:0:0:0:0:1).
• Adres Solicited-Node multicast dla każdego adresu Unicast i Anycast skonfigurowanego na
interfejsach.
• Adresy Multicast wszystkich grup, do których host należy.
Router powinien ponadto rozpoznawać następujące adresy:
• Adres Subnet-Router Anycast na wszystkich łączach, na których działa jako router
• Wszystkie inne adresy Anycast, skonfigurowane na routerze.
• Adresy multicast dotyczące routerów.
ICMPv6
Protokół ICMP dla IPv6 został bardzo zmieniony w porównaniu do IPv4. Przejmuje on zadania
protokołu ARP, RARP, jest wykorzystywany w autokonfiguracji, zawiera mechanizmy
wykrywania sąsiadów i szukania routerów, zawiera też takie możliwości, jakie były w ICMPv4,
tzn. przekazywanie komunikatów o błędach w routowaniu oraz komunikaty Echo Request i
Echo Reply.
ICMPv6 Error Messages:
Destination Unreachable
Packet Too Big
Time Exceeded (odpowiednik wyzerowania TTL w IPv4, jest też wykorzystywany do zgłoszenia
że upłynął czas 60 s oczekiwania na fragmenty datagramu)
Parameter Problem
ICMPv6 Informational Messages:
Echo Request
13
Echo Reply
Jeszcze inne komunikaty są związane z mechanizmem Neighbor Discovery (ND) oraz Path MTU
Discovery.
Wykrywanie sąsiada (Neighbor Discovery)
Mechanizmy związane z wykrywaniem sąsiada (Neighbor Discovery ND) zastępują ARP, starą
wersję ICMP router discovery oraz przekierowanie a także wykrywanie zduplikowanych
adresów IP (DAD – Duplicate Address Detection). Jest też opracowany nowy mechanizm –
wykrywanie czy sąsiad jest osiągalny.
Do analizy działania mechanizmów wykrywania sąsiada warto przypomnieć o odwzorowaniu
adresów rozgłoszenia grupowego (multicast) w adresy MAC w technologiach Ethernet.
Dla IPv4:
Dla IPv6:
Rozgłoszenia grupowe ICMPv6 wykorzystują odpowiednie adresy multicast w warstwie 3,
odpowiednio jest to tłumaczone na adresy MAC.
Wprowadzono komunikaty ogłoszeniowe routera (Router Advertisement), które zawierają w
treści adres warstwy drugiej routera, a zatem węzły otrzymujące takie komunikaty nie muszą
wykorzystywać ARP do pytania o adres MAC routera (jak to było w IPv4). Podobnie komunikaty
o przekierowaniu zawierają adres warstwy drugiej (MAC). Komunikaty rozgłoszeniowe routera
zawierają też prefiks sieci, zatem nie trzeba konfigurować maski sieci. Routery mogą też w
komunikatach Router Advertisement ogłaszać MTU na łączu.
Komunikaty Router Advertisement są przesyłane regularnie okresowo. Jednak host może
poprosić router o wysłanie takiego komunikatu (ogłoszenia) w dowolnym momencie wysyłając
komunikat Router Solicitation.
14
Ze względów bezpieczeństwa komunikaty związane z ND i Router Solicitation są przyjmowane
tylko z wartością hop limit równą 255. Zapobiega to infiltracji sieci z zewnątrz, gdyż
komunikaty z zewnątrz mają hop limit co najmniej o jeden mniejszy (gdyż przeszły przez co
najmniej jeden router)
Dla celów wykrywania adresów warstwy drugiej (analogicznie do ARP w IPv4) oraz wykrywania
osiągalności hosta i wykrywania powtórzenia adresów IP stosuje się komunikaty Neighbor
Solicitation oraz Neighbor Advertisement. Komunikaty Neighbor Advertisement są wysyłane
po zmianach w sieci oraz w odpowiedzi na Neighbor Solicitation. Neighbor Advertisement
zawiera adres MAC. Komunikaty Neighbor Solicitation i Router Solicitation są przesyłane na
adres IPv6 typu solicited-node multicast.
Poniższa tabela zawiera zwięzły opis procesów (procedur) obejmowanych wspólna nazwą
Neighbor Discovery.
Proces
Opis
Router discovery
Proces wykorzystywany do wykrycia lokalnych routerów
dostępnych na łączu. W ICMPv4 jest odpowiedni process (i
komunikat) o takiej samej nazwie: Router discovery.
Proces, dzięki któremu host wykrywa prefiksy sieci. W ICMPv4
jest podobny mechanizm. Odpowiednie komunikaty miały nazwy:
Address Mask Request/Reply.
Prefix discovery
Parameter discovery
Address
autoconfiguration
Address resolution
Next-hop
determination
Neighbor
unreachability
detection
Duplicate
address
detection
Redirect function
Proces używany przez hosty do wykrycia innych parametrów,
takich jak MTU na łączu lub standardowa wartość Hop Limit dla
pakietów wychodzących.
Proces automatycznej konfiguracji adresów IP dla interfejsów
sieciowych zarówno przy obecności jak i nieobecności serwerów
Dynamic Host Configuration Protocol version 6 (DHCPv6).
Proces wykrycia adresu warstwy drugiej. Odpowiednik protokołu
ARP z IPv4.
Proces określenia adresu IPv6 sąsiada, do którego pakiet ma być
skierowany na podstawie adresu docelowego. Next-hop address
jest albo adresem przeznaczenia, albo adresem domyślnego
routera na łączu.
Proces wykorzystywany do wykrycia, że warstwa IPv6 u sąsiada
nie działa poprawnie (nie otrzymuje/wysyła pakietów).
Proces służący do wykrycia, czy jakiś sąsiad nie używa “naszego”
adresu IP. Odpowiedni mechanizm w IPv4 był zapewniony przez
protokół ARP.
Komunikat o przekierowaniu. Informuje hosta, że jest lepszy
adres IPv6 następnego skoku. W ICMPv4 jest analogiczny
komunikat ICMP Redirect.
Multicast Listener Discovery (MLD)
Multicast Listener Discovery (MLD) w IPv6 jest odpowiednikiem Internet Group Management
Protocol (IGMP) w IPv4. MLD obejmuje grupę komunikatów wymienianych między ruterami i
15
zwykłymi węzłami (komputerami), które umożliwiają odpytywanie o uczestnictwo w grupie
(multicast address), zgłaszanie uczestnictwa oraz zgłaszanie zakończenia pracy w grupie
(nasłuchiwania na adresie grupowym).
IGMP wykorzystywał własne komunikaty, natomiast MLD wykorzystuje komunikaty protokołu
ICMPv6. Trzy główne typy komunikatów MLD to:
1) Multicast Listener Query (pytanie o uczestnictwo w grupie).
2) Multicast Listener Report (zgłoszenie uczestnictwa oraz odpowiedź na zapytania).
3) Multicast Listener Done (zgłoszenie zakończenia pracy w grupie).
Wersja 2 MLD (MLD v.2) umożliwia określanie uczestnictwa w rozgłaszaniu grupowym z
określeniem adresów źródłowych, z których ruch będzie przyjmowany (include list) lub
odrzucany (exclude list).
Wykrywanie ścieżki MTU (Path MTU Discovery)
Wykrywanie ścieżki MTU nie musi być implementowane w pełni w każdym węźle. Host
zaczyna wysyłać pakiety o wielkości MTU dla wykorzystywanego łącza. Jeśli dostanie
komunikat ICMPv6 Packet Too Big, to zmniejsza rozmiar pakietu. Może to wystąpić
wielokrotnie w czasie komunikacji do miejsca docelowego. Po ewentualnym zmniejszeniu
rozmiaru pakietu od czasu do czasu host próbuje wysłać większy datagram, aby wykryć
możliwość przesłania większego datagramu.
Bezpieczeństwo w IPv6
IPv6 zawiera elementy bezpieczeństwa przejęte z IPSec. Umożliwia ustalenie wspólnych cech
i mechanizmów bezpieczeństwa między komunikującymi się hostami, umożliwia
uwierzytelnianie i szyfrowanie datagramów.
IPSec w IPv6
Kolejność nagłówków w IPv6 (jak już przedstawiono wcześniej):
1) IPv6 header (nagłówek podstawowy)
2) Hop-by-hop Options header (jest używany przez routery np. w protokole RVSP – Resource
Reservation Protocol, w protokole MLD – Multicast Listener Discovery, w jumbogramach).
3) Destination Options header, jeśli użyty jest nagłówek dodatkowy Routing (służy do
przekazania opcji, które będą przetwarzane przez węzeł o adresie zawartym w polu
Destination Address w nagłówku podstawowym oraz przez węzły o adresach wymienionych
w nagłówku dodatkowym typu Routing).
4) Routing header (typ 0 – odpowiednik routowania źródłowego z IPv4 oraz typ 2 –
wykorzystywany do obsługi mobilności)
5) Fragment header
6) Authentication header
7) Encapsulating Security Payload header
16
8) Destination Options header (dla opcji, które będą przetwarzane tylko przez ostatecznego
odbiorcę pakietu)
9) Mobility header
10) Upper-Layer header (np. TCP, UDP).
Ważne elementy IPSec:
1) Ustalenie skojarzeń bezpieczeństwa (Security Associations SA),
2) Stosowanie określonej polityki (policy).
Authentication Header
Tryb transportowy
Integralność jest zapewniona dla następujących elementów:
IPv6 Header.
Kontrola
integralności nie
obejmuje pól
Version, Class, Flow
label, Hop Limit.
Authentication
Header
TCP Header
Payload
Struktura nagłówka AH:
Next header
Payload length
Reserved
Security Parameter Index (identyfikuje SA)
Sequence number
Authentication data
Tryb tunelowy
Integralność:
IPv6 Header.
Authentication
Kontrola
Header
integralności nie
obejmuje
pól
Version, Class,
Flow label, Hop
Limit.
IP Header
(oryginalny)
TCP Header
Payload
Encrypted Security Payload
17
Tryb transportowy
IP Header
(bez
szyfrowania)
Encryption
TCP Header
Header (nie cały
szyfrowany)
Payload
Encryption
trailer
Encryption header:
Security Parameter Index (nie szyfrowany)
Sequence number (nie szyfrowany)
Encryption parameters (szyfrowany)
Pole Encryption trailer może zawierać uwierzytelnienie (opcjonalnie).
Tryb tunelowy
IP Header
(bez
szyfrowania)
Encryption
IP Header
Header (nie
cały
szyfrowany)
TCP Header
Payload
Encryption
trailer
Pole Encryption trailer może zawierać uwierzytelnienie (opcjonalnie).
18
Mechanizmy przejściowe (IPv4/IPv6)
6to4
Przeznaczenie: łączenie sieci 6to4 z innymi sieciami 6to4 i innymi IPv6 poprzez sieć IPv4 w
okresie przejściowym.
Postać adresu:
| 3 | 13 |
32
|
16
|
64 bits
|
+---+------+-----------+--------+--------------------------------+
|FP | TLA | V4ADDR
| SLA ID |
Interface ID
|
|001|0x0002|
|
|
|
+---+------+-----------+--------+--------------------------------+
V4addr – adres IPv4 routera granicznego (unikalny globalnie adres).
Przykład – dwie sieci 6to4 połączone siecią IPv4
_______________________________
|
|
| Wide Area IPv4 Network
|
|_______________________________|
/
\
192.1.2.3/
9.254.253.252\
_______________________________/_
____________________\____________
|
/ | |
\
|
|IPv4 Site A
########## | |IPv4 Site B
########## |
| ____________________# 6to4
#_ | | ____________________# 6to4
#_ |
||
# router # || ||
# router # ||
||IPv6 Site A
########## || ||IPv6 Site B
########## ||
||2002:c001:0203::/48
|| ||2002:09fe:fdfc::/48
||
||_______________________________|| ||_______________________________||
|
| |
|
|_________________________________| |_________________________________|
19
Połączenie 6to4 z siecią działającą jedynie wg IPv6 następuje przez „Relay router”.
____________________________
______________________
|
|
|
|
| Wide Area IPv4 Network
|
|
Native IPv6
|
|
|
|
Wide Area Network |
|____________________________|
|______________________|
/
\
//
192.1.2.3/
9.254.253.252\
// 2001:0600::/48
____________/_
____________________\_________//_
/ | |
\
// |
########## | |IPv4 Site B
########## |
__# 6to4
#_ | | ____________________# 6to4
#_ |
# router # || ||
# router # ||
########## || ||IPv6 Site B
########## ||
|| ||2002:09fe:fdfc::/48
||
__Site A_____|| ||2001:0600::/48_________________||
as before
| |
|
______________| |_________________________________|
Na powyższym rysunku prawy router 6to4 jest routerem typu „relay”.
Poniższy przykład ilustruje poprawne skonfigurowanie wielu sieci 6to4.
______________
|
AS3
|
|_IPv6 Network_|
| AS1 | AS2
|
|______|______ |
//
\\
__________//_
_\\__________
| 6to4 Relay1 |
| 6to4 Relay2 |
|_____________|
|_____________|
|
|
________|______________________|________
______________
| IPv6 Network |
|
AS4
|
|______________|
|
|
|
______|______
|
Global IPv4 Network
|-----| 6to4 Relay3 |
|________________________________________|
|_____________|
|
|
|
|
____|___
___|____
____|___
___|____
| 6to4 | | 6to4 | | 6to4 | | 6to4 |
| Site A | | Site B | | Site C | | Site D |
|________| |________| |________| |________|
Routery graniczące NIE mogą przekazać do sieci działającej tylko według IPv6 trasy bardziej
szczegółowej niż 2002::/16. Chodzi o to, aby nie „zaśmiecać” natywnych sieci IPv6. W związku
z tym nie jest poprawna konfiguracja, w której sieci 6to4 są połączone z dwoma niespójnymi
kawałkami sieci działającej według IPv4.
20
Ilustruje to poniższy rysunek (jest to niepoprawna konfiguracja):
______________
|
AS3
|
|_IPv6 Network_| Both AS1 and AS2 advertise
| AS1 | AS2
| 2002::/16, but sites A and B
|______|_______| cannot reach C and D.
//
\\
__________//_
_\\__________
| 6to4 Relay1 |
| 6to4 Relay2 |
|_____________|
|_____________|
|
|
________|_______
_______|________
| IPv4 Network
|
| IPv4 Network
|
| Segment 1
|
| Segment 2
|
|________________|
|________________|
|
|
|
|
____|___
___|____
____|___
___|____
| 6to4 | | 6to4 | | 6to4 | | 6to4 |
| Site A | | Site B | | Site C | | Site D |
|________| |________| |________| |________|
Przejście z sieci 6to4 do sieci natywnej IPv6 może nastąpić na drodze rozgłoszenia nowego
prefiksu po podłączeniu się do routera IPv6.
Inne mechanizmy przejściowe
6over4
6over4 umożliwia konfigurowanie węzłów działających według protokołu IPv6 (dual stack, tj.
obsługujących zarówno IPv4 jak i IPv6) w środowisku komputerów IPv4 (na ogół w sieci
lokalnej).
U podstaw 6over4 leży pomysł wykorzystania IPv4 jako protokołu warstwy łącza danych.
Zatem podobnie jak normalne datagramy IPv4 są kapsułkowane np. w ramkach Ethernet (lub
innych technologii), tak w 6over4 pakiety IPv6 są kapsułkowane w pakietach IPv4.
6over4 obejmuje sposób tworzenia adresów IPv6 na podstawie adresu IPv4 a także
mechanizm Neighbor Discovery z wykorzystaniem możliwości rozgłaszania grupowego
(multicast) w IPv4.
Adres link-local IPv6 tworzony jest tak:
fe80:0000:0000:0000:0000:0000 + adres IPv4
Np. dla 192.0.2.142 będzie to fe80::c000:28e.
Implementacja Neighbor Discovery wykorzystuje przesyłanie grupowe na adres IPv4
239.192.x.y, gdzie x i y oznaczają przedostatni i ostatni bajt adresu grupowego IPv6.
Przykłady:
All-Nodes Multicast (ff02::1) -
239.192.0.1
21
All-Routers Multicast (ff02::2) 239.192.0.2
Solicited Node Multicast dla fe80::c000:28e (adres link-local komputera o adresie IPv4
192.0.2.142) 239.192.2.142
Komputery mają więc możliwość wykorzystania Neighbor Discovery, zatem wykrycia sąsiadów
i routerów na łączu. Jak widać, w 6over4 nie trzeba specjalnie konfigurować tuneli między
komputerami IPv6 w środowisku IPv4.
Wadą 6over4 jest zależność od mechanizmów rozgłaszania grupowego w środowisku IPv4. Nie
zawsze routery są skonfigurowane by wspierać te mechanizmy.
Kolejny przedstawiony mechanizm przejściowy (ISATAP) nie opiera się na rozgłaszaniu
grupowym.
ISATAP
Inną propozycją na okres przejściowy między IPv4 a IPv6 jest ISATAP (RFC 5214).
(Intra-Site Automatic Tunnel Addressing Protocol).
Podobnie jak 6over4, mechanizm ten może być wykorzystany w sieci lokalnej, umożliwia
koegzystencję IPv4 i IPv6 w ramach sieci lokalnej bez jawnego zestawiania tuneli.
Adres ISATAP (ostatnie, najmniej znaczące 64 bity):
|0
1|1
3|3
6|
|0
5|6
1|2
3|
+----------------+----------------+--------------------------------+
|000000ug00000000|0101111011111110|mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm|
+----------------+----------------+--------------------------------+
gdzie mmmmm…. oznacza adres IPv4. Dla adresu unikalnego globalnie bit „u” ustawiony jest
na 1, dla adresu grupowego bit g ustawiony jest na 1. Reszta adresu (pierwsze bity z lewej
strony całego adresu mogą być dowolne, może tam być poprawny prefiks nadany przez
dostawcę Internetu, prefiks 6to4 itd.).
ISATAP nie wykorzystuje rozsyłania na adresy grupowe. Ze względu na to, że adres IPv4 jest
zawarty w adresie IPv6 a IPv4 gra tu rolę warstwy łącza danych, Neighbor Solicitation nie jest
potrzebny. Natomiast należy rozwiązać problem routerów. W ISATAP Router Solicitation nie
występuje, natomiast definiuje się listę potencjalnych routerów (Potential Router List PRL), do
których jest wysyłany Router Discovery Message (na adresy jednostkowe). PRL może być
budowany ręcznie lub automatycznie – zwykle przez odpytanie serwera DNS o adres
isatap.xx.yy.zz (xx.yy.zz jest domeną, może być uzyskana z serwera DHCP).
W odróżnieniu od 6over4, ISATAP jest powszechnie implementowany w popularnych
systemach operacyjnych.
22
Wzmacniaki (repeaters), koncentratory (hubs), mosty (bridges),
przełączniki (switches)
Wzmacniaki (repeateres) (już nie używane).
Wzmacniaki (repeaters) służą do wzmacniania sygnału, który w trakcie przechodzenia przez
nośnik transmisji ulega osłabieniu. Ze względu na to, że wzmacniaki zajmują się sygnałem
fizycznym, nie „znają” budowy ramki ani nie „rozumieją” znaczenia bitów, mówi się, że
działanie tych urządzeń ogranicza się do warstwy 1 modelu ISO OSI. Obecnie inne urządzenia
wzmacniają sygnały (przełączniki, koncentratory), w związku z tym wzmacniaki nie są używane
w sieciach lokalnych.
Koncentratory (hubs)
Podobnie jak wzmacniaki, koncentratory (hubs) są urządzeniami, których działanie opisywane
jest w warstwie 1 modelu ISO OSI. Sygnały elektryczne otrzymane na jednym porcie są zawsze
przekazywane na wszystkie pozostałe porty. Urządzenia te nie analizują ramek. Koncentratory
można konfigurować programowo, np. dzieląc (logicznie) koncentrator na kilka oddzielnie
pracujących urządzeń. Większość koncentratorów wzmacnia sygnały, są to zatem
wieloportowe wzmacniaki. Fragment sieci budowany w oparciu o koncentrator ma fizyczną
topologię połączeń gwiazdy. Sieć taka jest bardziej niezawodna w porównaniu z fizyczną
topologią magistrali, gdyż np. uszkodzenie kabla prowadzącego od koncentratora do pewnego
komputera nie powoduje uszkodzenia dużego segmentu w sieci. W topologii magistrali
uszkodzenie kabla w dowolnym miejscu powoduje, że cały segment sieci przestaje
funkcjonować. Niemniej logicznie połączenia uzyskane za pomocą koncentratora są
traktowane jako połączenia w topologii magistrali, gdyż każdy z podłączonych komputerów
„widzi” wszystkie ramki.
W nieużywanych już sieciach Token Ring stosowane były specjalne koncentratory, zwane MAU
(Media Access Unit), w sieciach FDDI są stosowane concentrators (w odróżnieniu od hubs).
Działanie tych urządzeń również jest opisywane w warstwie pierwszej modelu OSI i jest
charakterystyczne dla danej technologii (np. przekazywanie ramki tokenu i innych ramek po
okręgu w sieciach Token Ring).
Mosty (bridges) (już nie używane)
Mosty, pomosty (bridges) są urządzeniami analizującymi ramki, zatem ich działanie przypisuje
się do warstwy 2 modelu ISO OSI (choć oczywiście ich działanie obejmuje również warstwę
pierwszą). Most posiada kilka portów (co najmniej dwa), do których na ogół łączy się segmenty
sieci lub inne wymieniane tu urządzenia. Most ma za zadanie filtrować ruch w sieci lokalnej
tak, by pewne ramki pozostawić w jednym segmencie (jeśli adres docelowy MAC jest w tym
segmencie), oczywiście przy pozostawieniu możliwości przekazywania ramek do innych
segmentów (jeśli adres docelowy MAC jest w innym segmencie).
Uwaga. Tak opisane segmenty sieci rozumiane są w sensie warstwy drugiej modelu OSI.
Segmenty te nie są przedzielone routerem, tylko mostem. Gdyby takie segmenty rozważać w
1
warstwie trzeciej modelu ISO OSI, to należą one do jednej sieci (podsieci) lokalnej, tzn. mają
wspólny ID sieci w adresach IP. Termin segment sieci jest wieloznaczny i można spotkać to
określenie w sensie zarówno warstwy 1 (bezpośrednie połączenie kablem np. w topologii
magistrali), warstwy 2 i warstwy 3. Na przykład w Akademii Cisco często używa się terminu
segment sieci w odniesieniu do domeny kolizji (fragment sieci, w którym jest rywalizacja o
dostęp do nośnika transmisji).
Most „uczy się” który adres MAC „należy” do jakiego portu. Jeśli otrzyma ramkę z adresem
docelowym, który już zna i pamięta jego położenie (tzn. przypisanie do portu), to wysyła ramkę
do przypisanego portu. Jeśli odpowiedniego przypisania jeszcze nie ma, to wysyła ramkę do
wszystkich portów z wyjątkiem tego, z którego ramkę dostał. Przełączanie następuje na ogół
na drodze programowej. Wszystkie porty dzielą (wykorzystują) wspólną przepustowość (a
więc inaczej jak przełączniki – switch’e).
Przełączniki (switches) Ethernet
Przełączniki (switches, przełączniki warstwy drugiej) są urządzeniami analizującymi ramki. Ich
działanie przypisuje się do warstwy 2 modelu ISO OSI. Przełącznik posiada pewną liczbę
portów (na ogół kilka – kilkadziesiąt) i podobnie jak most „uczy się” z jakim portem związany
jest jaki adres MAC i zapamiętuje tę informację w tablicy o nazwie CAM (Content Addressable
Memory – rodzaj tablicy asocjacyjnej). Często do portu przypięty jest jeden komputer, ale
bywa też, że do portu przyłączane jest inne urządzenie rozgałęziające, np. koncentrator lub
inny przełącznik. Wówczas przełącznik pamięta dla każdego swojego portu wszystkie adresy
MAC osiągalne poprzez ten port. Inaczej jak w przypadku mostów, w przełącznikach warstwy
drugiej przełączanie realizowane jest na zasadzie sprzętowej mikrosegmentacji. Każde
zestawione połączenie (mikropołączenie) między portami ma maksymalną przepustowość
charakterystyczną dla danej technologii (niezależnie od obciążenia pozostałych
mikropołączeń).
Jeśli na dwa różne porty zostaną jednocześnie przesłane ramki, które mają to samo miejsce
docelowe, to nie występuje kolizja, tylko buforowanie ramek.
Standardowe przełączniki warstwy drugiej mogą pracować w dwóch trybach pracy:
1. Store-and-Forward – przełącznik pobiera całą ramkę, analizuje czy nie jest błędna i przesyła
ją dalej. Ten tryb wprowadza największe opóźnienie.
2. Cut-through (dwa podtypy):
a) Fast-forward switching, po otrzymaniu adresu MAC miejsca docelowego ramki już
rozpoczyna się jej nadawanie. Jest to najszybsza metoda, ale nie sprawdza się czy nie
nastąpiła kolizja i ramka jest niepoprawna.
b) Fragment-free switching, ramka jest przesyłana do portu docelowego dopiero po
otrzymaniu 64 bajtów (rozmiar najmniejszej poprawnej ramki w Ethernecie). Zapewnia
to, że ramka nie koliduje z inną.
Niektóre przełączniki mogą pracować w jeszcze innym trybie – adaptive cut-through. W tym
trybie przełącznik zaczyna pracę z wykorzystaniem metody cut-through, jednak po wykryciu
pewnej liczby błędów (wyższej od zadanego progu) przełącznik przechodzi w tryb store-andforward.
2
Przełączniki są na ogół konfigurowalne programowo.
Przełączniki umożliwiają również analizę adresów IP i budowanie tzw. wirtualnych sieci
lokalnych – Virtual LANs (VLAN).
Wirtualne sieci LAN (VLAN)
VLAN – wirtualne sieci LAN tworzone są przy pomocy przełączników. Przez odpowiednią
konfigurację portów w przełącznikach można tworzyć podsieci (sieci wirtualne)
„przełączalne”, ze wspólną dziedziną rozgłaszania w warstwie trzeciej (i drugiej). Każda sieć
VLAN musi mieć przypisany inny adres IP (adres sieci). Sieci VLAN są konfigurowane
programowo, zatem ewentualne zmiany konfiguracji nie wymagają zmian w okablowaniu.
Komputery z każdej utworzonej sieci wirtualnej nie muszą być dołączone bezpośrednio do
jednego przełącznika (jednak wszystkie połączone przełączniki muszą być odpowiednio
skonfigurowane). Komputery odległe od siebie, np. na różnych piętrach budynku, podłączone
do różnych przełączników mogą należeć do jednej sieci VLAN – mają wtedy taki sam adres sieci
w warstwie trzeciej (adres IP). Na jednym przełączniku można zbudować wiele sieci VLAN.
Urządzenia należące do jednej sieci wirtualnej mogą się ze sobą komunikować tak jakby były
w jednym segmencie sieci LAN (segment w warstwie drugiej i trzeciej ISO OSI). W całym takim
segmencie na przykład działa protokół ARP, czyli ramka ARP request wysłana na adres
rozgłoszeniowy MAC (48 jedynek) powinna dotrzeć (dociera) do wszystkich komputerów
dołączonych do tej samej sieci VLAN (i przypiętych do tego samego przełącznika lub do różnych
przełączników). Natomiast komunikacja między sieciami wirtualnymi wymaga routera,
nawet jeśli sieci wirtualne utworzone są tylko na jednym przełączniku (tzn. jest tylko jeden
przełącznik podzielony na kilka sieci VLAN). Są jednak przełączniki (przełączniki obsługujące
warstwę 3), które potrafią wykonywać routowanie między równymi sieciami VLAN.
Sieci VLAN tworzone są w technologiach Ethernet (IEEE 802.3), FDDI, („antyczny” Token Ring
też :)).
Sieci VLAN mogą być budowane w oparciu o
•
•
porty w przełącznikach (porty przypisywane są do odpowiednich VLAN’ów), takie sieci
VLAN określa się jako statyczne, port-centric lub port-based. Ten typ sieci VLAN jest
najczęściej stosowany. Umożliwia łatwą współpracę z serwerami DHCP.
adresy MAC (urządzenie o danym adresie MAC będzie zawsze przypisywane do jednej
określonej sieci VLAN bez względu na to, do którego przełącznika jest w danej chwili
bezpośrednio dołączone). Wymaga sporo dodatkowej pracy administracyjnej (zapisanie
każdego adresu MAC i przypisanie go do odpowiedniego VLAN w konfiguracji
przełączników). Uwaga! adresy MAC można łatwo w komputerze zmieniać na drodze
konfiguracji, trzeba to mieć na uwadze tworząc taki typ sieci VLAN.
Korzyści związane z zastosowaniem VLAN:
3
•
•
•
•
można łatwo zmieniać położenie stacji roboczych w sieci VLAN
można łatwo zmieniać konfigurację sieci lokalnej VLAN
można łatwo kontrolować ruch w sieci (np. na routerach łączących różne sieci VLAN)
można zwiększyć bezpieczeństwo (rozdzielenie użytkowników do różnych sieci VLAN).
Połączenia między przełącznikami są określane jako „trunk” (mówi się też o łączach
„trunkingowych”). Połączenie tupu trunk umożliwia przekazywanie ramek należących do
różnych sieci VLAN po jednym fizycznym nośniku. Za kontrolę połączenia trunk odpowiada
protokół VTP (VLAN Trunking Protocol). Protokół VTP umożliwia zautomatyzowaną
konfigurację wielu przełączników z jednego miejsca.
Połączenie typu trunk może być również tworzone między przełącznikiem a routerem (router
on a stick). Konfiguracja routera dla odpowiedniej sieci VLAN jest realizowana poprzez tzw.
logiczne podinterfejsy (sub-interfaces). Jeden fizyczny interfejs routera dzielony jest logicznie
(poprzez odpowiednią konfigurację) na wiele podinterfejsów. Router połączony jest tylko
jednym połączeniem trunk z jednym z przełączników, ale logicznie działa tak, jakby było kilka
interfejsów, każdy przypisany do innej sieci VLAN. Zatem dla kilku sieci VLAN podłączonych z
przełącznika do routera należy w routerze skonfigurować kilka podinterfejsów.
Ramki przekazywane połączeniem trunk są w specjalny sposób zmieniane – wędruje z nimi
dodatkowa informacja – o przypisaniu ramki do odpowiedniej sieci wirtualnej. Takie
zaznaczanie ramek (frame tagging) może być realizowane na różne sposoby, zależnie od
producentów przełączników.
Najpopularniejsza metoda to:
• Najczęściej stosowany standard IEEE 802.1Q, w którym zmieniony jest nagłówek ramki
802.3.
Inna metoda (przestarzała):
ISL (Cisco Inter-swirch Link), metoda, w której ramka jest enkapsulowana w ramce ISL. W
nagłówku ISL jest pole identyfikujące VLAN.
Są też inne.
•
Protokół VTP umożliwia konfigurację wielu przełączników na drodze wymiany odpowiednich
ramek z sąsiadującymi przełącznikami. Przełącznik można skonfigurować jako serwer VTP,
klient VTP lub „transparent VTP”. Można tworzyć tzw. dziedziny składające się z wielu
przełączników (każda dziedzina jest identyfikowana przez nazwę). Informacje VTP są
przekazywane i interpretowane w ramach odpowiednich dziedzin. W dziedzinie jeden
przełącznik powinien być serwerem, reszta to na ogół klienci. Zmiany konfiguracji
przeprowadza się na serwerze. Dla dziedziny należy określić hasło (w celu zabezpieczenia).
Między sieciami VLAN musi być zapewnione routowanie. Można to osiągnąć łącząc router
łączem trunkingowym z pewnym przełącznikiem (wystarczy z jednym – wspomniany wcześniej
router on a stick). Jeśli router jest wykorzystywany jedynie do przekazywania pakietów między
różnymi sieciami VLAN, to można rozważyć też zastosowanie innego rozwiązania –
przełączników warstwy trzeciej. Taki przełącznik umożliwia zdefiniowanie sieci VLAN oraz
sam zapewnia routing między sieciami. Przełącznik ma „w sobie” router. Router ten może być
łączony z innymi routerami, można na nim konfigurować protokoły routowania. Zwykle jednak
przełącznik warstwy trzeciej nie ma interfejsów technologii sieci rozległych WAN.
4
Rysunki z wykładu:
W firmie są trzy działy: Sales, Marketing i Accounting. Każdy dział ma mieć inny adres IP sieci.
Przykładowa sieć nie wykorzystująca VLAN-ów:
5
Jak można zorganizować sieć, gdybyśmy chcieli umieszczać komputery z różnych działów na
różnych piętrach?
Niżej przedstawione rozwiązanie ma wadę – może być problem z umieszczeniem dużej liczby
kabli między piętrami. Ponadto są ograniczenia długości kabli.
6
Pewien pomysł:
Wada – stosunkowo duża komplikacja.
Rozwiązanie – VLAN’y.
7
Wykorzystanie wielowarstwowego przełącznika:
8
STP (Spanning-Tree Protocol)
W nieco bardziej rozbudowanej sieci łączy się kilka lub więcej przełączników. Korzystnie jest,
gdy przełączniki w sieci są połączone tak, by umożliwić zduplikowane ścieżki między nimi, ale
żeby nie występowały pętle i niekorzystne zjawiska z nimi związane (burze rozgłoszeń w
warstwie drugiej, dublowanie ramek, niestabilność zawartości tablicy CAM). Do realizacji tego
celu służy protokół STP.
Przykład prostej sieci z połączeniami redundantnymi (na wykładzie omówiono negatywne
zjawiska, z których najważniejsze to burza broadcastów – broadcast storm):
Przykład bardziej rozbudowany (Enterprise Architecture):
STP umożliwia tworzenie redundantnych ścieżek (połączeń) między przełącznikami, ale w
danej chwili tylko jedno ze zduplikowanych połączeń jest aktywne. Aktywne połączenia tworzą
strukturę drzewiastą z jednym przełącznikiem wybranym jako korzeń (root, root-switch lub
root-bridge). STP powstał jak mosty były jeszcze powszechnie wykorzystywane i stąd w
terminologii STP często zamiast switch mówi się bridge.
9
STP wykorzystuje specjalne ramki BPDU (Bridge Protocol Data Units), które są regularnie
przesyłane między przełącznikami (np. co dwie sekundy). Ramki BPDU mają specjalny adres
MAC docelowy typu multicast (01:80:C2:00:00:00) i są przesyłane według innych zasad jak
zwykłe ramki (otrzymane ramki BPDU nie są wprost przekazywane do innych portów,
przełącznik buduje swoje ramki BPDU uwzględniające otrzymane od innych informacje).
Standard STP określany jest jako IEEE 802.1D (jest kilka wersji, najnowsza z roku 2004). STP
wykorzystuje algorytm drzewa rozpinającego (STA – Spanning Tree Algorithm). W 2012 został
przyjęty jeszcze nowszy standard – Shortest Path Bridging IEEE 802.1aq.
Działanie STP
1) Wybór przełącznika (mostu) – korzenia (root-bridge). Wybór jest realizowany na
podstawie priorytetu przełącznika, który jest konfigurowalny. W pierwszej wersji STP
priorytet był liczbą 16-bitową, później uwzględniono w protokole sieci VLAN i na
priorytet pozostawiono bardziej znaczące 4 bity, pozostałe 12 oznaczają numer sieci
VLAN. STP jest więc niezależnie realizowany w każdym VLAN-ie. Standardowo np.
przełączniki Cisco Catalyst mają ustawiony priorytet na 32768. Jako korzeń wybierany
jest przełącznik o najniższym priorytecie. Jeśli priorytety są jednakowe, to wybierany
jest przełącznik o najniższym identyfikatorze BID (Bridge Identifier). Każdy przełącznik
ma przypisany podstawowy adres MAC (basic Ethernet address) i jest on traktowany
jako identyfikator przełącznika (BID). Oprócz tego każdy port przełącznika ma też
przypisany pewien adres MAC. Wybór korzenia drzewa rozpinającego jest realizowany
z wykorzystaniem specjalnych ramek BPDU.
2) Wybór portów do korzeni (root ports). Są to porty, którymi będą przekazywane ramki
do przełącznika-korzenia. Port staje się zawsze „root-portem” jeśli jest bezpośrednio
połączony do przełącznika – korzenia. Jeśli nie ma portów bezpośrednio dołączonych
do korzenia, to jest analizowany koszt połączenia. Koszt ten jest zależny od szerokości
pasma i według starych zaleceń był wyliczany wg wzoru: 1000/szerokość pasma. Np.
dla 100Mbps (100 megabitów na sekundę) koszt wynosił 10, dla 10Mbps koszt wynosił
100. Dla 10Gbps koszt był ustalany taki jak dla 1Gbps, czyli 1. Według kolejnych,
nowszych zaleceń koszt dla 10Gbps wynosił 2, dla 1Gbps było to 4, dla 100Mbps koszt
był równy 19 a dla 10 Mbps wartość była podobnie jak poprzednio 100. Standard
802.1w-2004 (określający inną wersję protokołu o nazwie RSTP – Rapid STP,
pierwotnie oznaczoną jako IEEE 802.1w, potem pomysły z RSTP zostały włączone do
najnowszej wersji standardu 802.1D) określa dla 100Mbps koszt 200 000, dla 1Gbps 20
000, dla 2 Gbps 10 000 i dla 10 Gbps 2000. Koszty są przekazywane w ramkach BPDU i
przełączniki wyliczają całkowite koszty połączenia z przełącznikiem korzeniem – jako
sumy kosztów poszczególnych połączeń. W każdym przełączniku port o najniższym
koszcie trasy do przełącznika korzenia staje się root-portem (oczywiście tylko w
przypadku, gdy w danym przełączniku nie ma bezpośredniego połączenia z
przełącznikiem-korzeniem).
3) Wybór tzw. portów wyznaczonych (designated ports). Są to porty, które uczestniczą w
wymianie informacji w drzewie rozpinającym (spanning tree). Dla każdego segmentu
sieci LAN jest określany jeden przełącznik wyznaczony (designated switch), przez który
wiedzie najlepsza droga (tj. o najniższym koszcie) z danego segmentu do przełącznikakorzenia. Przykładowy segment sieci LAN: koncentrator połączony z dwoma
przełącznikami oraz z pewną liczba komputerów – hostów.
10
4) Po ustaleniu stanu połączeń wszystkie porty umożliwiające połączenia redundantne, a
nie będące root-portami ani portami wyznaczonymi, są blokowane.
Stan połączeń jest analizowany na podstawie ramek BPDU, które są przesyłane cyklicznie,
standardowo co 2s (ten czas można zmienić). W przypadku, gdy nastąpi uszkodzenie jakiejś
wykorzystywanej ścieżki (lub przełącznika), to działający STP spowoduje automatycznie
odblokowywane pewnych do tej pory blokowanych portów. Porty te przejmą przekazywanie
ramek, ramki będą zatem przesyłane nową trasą.
Konfiguracja STP obejmuje trzy zegary:
Hello time (standardowo 2 sekundy)
Forward delay (standardowo 15 sekund)
Maximum age (maksymalny czas, przez który przełącznik traktuje informację z BPDU za
aktualną; standardowo 20 sekund).
Stany portów w STP (dla każdego portu wyznaczane oddzielnie):
1) Blocking (zwykłe ramki nie są przekazywane, odczytywane są tylko ramki BPDU, ale przez
port nie są wysyłane własne ramki BPDU).
2) Listening (zwykłe ramki są odczytywane, ale nie są przekazywane; ramki BPDU są
odczytywane i przez port, który jest w tym stanie, są wysyłane własne ramki BPDU)
3) Learning (zwykłe ramki są odczytywane, następuje uczenie adresów MAC (i zapisywanie
ich do CAM), zwykłe ramki nie są jeszcze przekazywane, ramki BPDU są odczytywane i
wysyłane)
4) Forwarding (uczenie adresów, zwykłe ramki są przekazywane, ramki BPDU są odczytywane
i wysyłane)
5) Disabled (żadne ramki nie są przekazywane, żadne ramki nie są odczytywane), port jest
wyłączony przez administratora.
Wadą STP jest stosunkowo wolna zbieżność. Stan listening trwa standardowo 15 sekund
(forward delay), potem learning też 15 s (forward delay). W tym czasie ramki nie są
przekazywane.
Po włączeniu przełącznika jego porty są w stanie blocking. Jeśli żadna ramka BPDU w tym
stanie nie dotrze do żadnego portu, to przełącznik zakłada, że jest korzeniem, porty
przełączane są w stan listening i wysyłane są ramki BPDU z informacją: „jestem korzeniem,
mój BID=….”. Jeśli w tym samym czasie włączymy więcej połączonych przełączników, wówczas
każdy z nich wysyła informację, że jest korzeniem. Jednak po otrzymaniu ramki BPDU z
„lepszą” wartością BID (tj. mniejszą liczbą) przełącznik wie, że korzeniem jest inny przełącznik,
oblicza koszt dotarcia do tego przełącznika i odpowiednią informację rozsyła dalej (do
bezpośrednio połączonych przełączników) w utworzonych przez siebie ramkach BPDU. W
czasie trwania stanu blocking i listening ustalany jest przełącznik root, root-porty oraz porty
wyznaczone i przełączniki wyznaczone. Do stanu learning przechodzą te porty, które będą
przekazywać zwykłe ramki. Są to root-porty oraz porty wyznaczone. Po upływie 15 sekund w
stanie learning port, który ma uczestniczyć w przekazywaniu zwykłych ramek przełączany jest
do stanu forwarding. Pozostałe porty są blokowane.
Jeśli nastąpiło uszkodzenie pewnego połączenia (np. zostało celowo rozłączone), wówczas
odpowiedni port przechodzi natychmiast do stanu blocking. Po włączeniu połączenia
odpowiednie porty też są w stanie blocking, jednak wskutek wymiany BPDU przełącznik może
11
zdecydować, że port będzie uczestniczył w przekazywaniu ramek i wówczas port przechodzi
do stanu listening (tu już wysyła własne BPDU), potem po 15s. przechodzi do stanu learning i
po kolejnych 15s. do stanu forwarding.
Ze stanu listening (oraz learning) port może być przesunięty do stanu blocking. Jest tak, gdy
po wymianie ramek BPDU przełącznik stwierdzi, że dany port nie będzie uczestniczył w
drzewie rozpinającym (tj. nie będzie przekazywał zwykłych ramek).
Pewien problem z uszkodzonym połączeniem wiąże się z faktem, że przełączniki pamiętają
przez kilka minut (przełącznikach Cisco standardowo 5) przypisanie adresów MAC do portów,
przy czym pamiętane są wszystkie adresy MAC osiągalne z pewnego portu przełącznika. Zatem
po wyłączeniu pewnego połączenia, informacja o tym zdarzeniu powinna być ogłoszona do
wszystkich przełączników w drzewie tak, by przełączniki mogły usunąć wpis z tablic CAM. W
rzeczywistości odbywa się to w ten sposób, że informacja jest przekazywana przez root-port i
osiąga przełącznik korzeń. Wykorzystywane są specjalne ramki BPDU TCN (Topology Change).
Zwykłe BPDU nie są normalnie przekazywane od liści do korzenia, ramki BPDU TCN są. Korzeń
z kolei przez pewien czas (max. age + forward delay = 35 s.) ustawia bit TC w swoich ramkach
BPDU normalnie przesyłanych co 2 s. w dół drzewa, do liści. Przełączniki po otrzymaniu takiej
ramki skracają ważność wpisów w tablicy CAM do 15 sekund (forward delay).
Firma Cisco wprowadziła pewne udoskonalenia do protokołu STP. Należy do nich PortFast –
ustawienie portu, mówiące, że port nie jest połączony z żadnym kolejnym przełącznikiem,
tylko z hostem. Taki port jest natychmiast przestawiany ze stanu blocking do stanu forwarding.
Tego typu ustawienie warto stosować np. w sieciach z serwerem DHCP. Bez tego ustawienia
może się zdarzyć, że komputer nie doczeka się adresu IP, ponieważ odpowiedni port
przełącznika nie zostanie w odpowiednim czasie przestawiony do stanu forwarding. Inne
usprawnienia to UplinkFast oraz BackboneFast. Idee te zostały włączone do nowszego
standardu STP – RSTP (Rapid STP), znanego też jako 802.1w-2004.
Rapid STP (RSTP)
W Rapid STP wprowadzono nieco inne stany portów oraz role portów. Istotą nowego
protokołu jest uzyskanie szybszej zbieżności, tzn. stanu, w którym porty albo przekazują ramki,
albo są zablokowane.
Dokładniejszy opis znajduje się w pliku rstp.pdf dołączonym do wykładu.
Najnowsza wersja tego protokołu znana jest opisana w standardzie 802.1w-2004. Standard
802.1q-2005 opisuje rozszerzenie RSTP uwzględniające m.in. wiele sieci VLAN – Multiple
Spanning Tree Protocol MSTP (802.1s). Idea MSTP: STP był stosowany w każdym VLAN’ie
oddzielnie, co w przypadku dużej liczby VLAN’ów powoduje zbyt duże obciążenie i komplikację
w konfiguracji. Protokół STP działający na wielu VLAN’ach nazywał się PVSTP (Per-VLAN STP).
Zwykle tylko niewielka liczba drzew STP (mniejsza od liczby VLAN’ów) ma sens dla danej sieci,
dlatego zaproponowano mechanizm tworzenia pewnej liczby drzew STP niezależnie od
VLAN’ów, a potem przypisanie do VLAN’u jednego z drzew STP. Opis MSTP można znaleźć na
przykład tu:
https://www.cisco.com/c/en/us/support/docs/lan-switching/spanning-tree-protocol/24248147.html oraz np. tu:
https://blog.ine.com/2010/02/22/understanding-mstp.
12
Shortest Path Bridging (SPB), IEEE 802.1aq
W 2012 roku został zatwierdzony standard IEEE 802.1aq, który jest rozwinięciem idei STP na
większe sieci. W SPB wiele redundantnych ścieżek jest wykorzystywanych jednocześnie. Węzły
przełączniki w SPB wykorzystują metodę link-state do wyznaczenia najkrótszych ścieżek w
warstwie drugiej (podobnie jak w metodach routowania link-state w warstwie trzeciej, np.
OSPF). Z danego przełącznika może prowadzić do pewnego miejsca wiele ścieżek o tym samym
najmniejszym koszcie. SPB umożliwia budowę sieci warstwy drugiej w skali np. miasta (szybkie
technologie Ethernet >=10Gb umożliwiają to).
EtherChannel, 802.3ad.
EtherChannel – technologia dostępna na większości przełączników firmy Cisco, pozwala na
połączenie kilku ethernetowych łączy fizycznych w jedno łącze logiczne. Przełączniki mogą
wówczas równomiernie rozkładać obciążenie na łączu. Dzięki temu jest możliwe utworzenie
wysokowydajnych połączeń pomiędzy urządzeniami sieciowymi np. przełącznikami, routerami
lub serwerami. Łącze EtherChannel może być utworzone z wykorzystaniem od dwóch do
ośmiu portów. W zależności od szybkości portu, używając 8 portów można stworzyć łącze 800
Mbit/s, 8 Gb/s albo 80 Gb/s. Gdy EtherChannel jest uaktywniony, wszystkie porty biorące
udział w procesie mają ten sam adres MAC i adres IP.
IEEE opracował w roku 2000 wersję otwartą standardu 802.3ad o analogicznych
możliwościach.
Graficzne przedstawienie połączenie EtherChannel.
(Cisco) Enterprise Architecture.
Materiały ogólnodostępne:
http://www.cisco.com/c/en/us/td/docs/solutions/Enterprise/Campus/campover.html
Rysunki pochodzą z powyższej strony WWW.
Figure 1
13
Figure 2
Figure 4 (uzasadnienie tworzenia warstwy Core).
14
Figure 3 (Przykład architektury dla kampusu).
Figure 5 – przywrócenie komunikacji po awarii.
Figure 7 (Dwie główne odmiany Multi-Tier Distribution Block).
15
Figure 9 (Koncepcja Virtual Switch – Virtual Switching System)
Figure 10 (Virtual switch vs. Spanning Tree Topology).
16
Figure 11
Figure 17
17
Download