Rozdział 5
Wersje protokołów Internetu
Koniecznym warunkiem wstępnym zapoznania się z wewnętrznym działaniem routera jest wpierw poznanie przesyłanych przez niego struktur danych. Struktury te, lepiej znane jako pakiety lub datagramy, są nieodzowną częścią routowanych protokołów. Takie protokoły obudowują dane i instrukcje w celu przygotowania ich do transportu. Następnie routery przesyłają takie pakiety w stronę ich określonego miejsca przeznaczenia. Każdy pakiet protokołu routowanego musi zawierać wszystkie niezbędne informacje umożliwiające routerom przemieszczenie ich z punktu źródłowego do celu.
Wadą protokołów routowanych jest ich znaczna złożoność, natomiast zaletą jest to, że nie jest konieczne opanowanie wszystkich ich zawiłości do zrozumienia mechanizmów routingu. Niniejszy rozdział poświęcony jest najpopularniejszemu na świecie routowanemu protokołowi - protokołowi IP. Istnieją dwie wersje tego protokołu:
IP wersja 4 (IPv4)
IP wersja 6 (IPv6).
Warstwa sieciowa
Jak pokazano w rozdziale 3, warstwa sieciowa (warstwa 3) modelu OSI umożliwia urządzeniom komunikację, bez względu ich odległość między nimi. Jednocześnie warstwa sieciowa definiuje funkcje i usługi niezbędne do zainicjowania takiej komunikacji.
Obecnie istnieją dwa typy protokołów sieciowych, które działają w warstwie 3: protokoły routowane i protokoły routingu. Te ostatnie używane są w komunikacji pomiędzy routerami do uzyskiwania informacji o innych trasach, ich statusie i dostępności.
Protokoły routowane są takimi protokołami, które umieszczają informacje użytkownika i dane w pakietach oraz przesyłają je do punktu docelowego. Protokoły te zapewniają adresowanie, które może być dostępne i interpretowane przez routery. Następnie routery przesyłają dane poza domenę sieci LAN będącej nadawcą.
Warstwa transportu
Jakkolwiek protokoły warstwy 3 wyposażają routery w różne mechanizmy wymagane do przesyłania pakietów, ich możliwości nie są nieograniczone. Warstwa 3 zapewnia jedynie mechanizmy potrzebne do transferu danych pomiędzy sieciami, podczas gdy warstwa 4, transportu, może zapewnić protokołom warstwy 3 pełną niezawodność i integralność.
Warstwa transportu może być potrzebna do zapewnienia wolnej od błędów dostawy pakietów i ich porządkowania. Funkcje tych dwóch warstw są ściśle ze sobą powiązane i zazwyczaj umieszczane w stosach protokołów.
Przykładem protokołu warstwy 4 jest protokół TCP, który prawie zawsze występuje w kombinacji z protokołem warstwy 3 - IP jako TCP/IP. TCP nie może być używany bez swojego uzupełnienia w postaci protokołu IP. Podobnie jak protokół SPX może być tylko użyty z protokołem warstwy 3 IPX.
Uwaga
Obecnie bardzo niewiele protokołów implementowanych jest w sposób ściśle zgodny z modelem OSI.
Sukces tego modelu polegał na jego użyteczności jako modelu akademickiego. Ścisły sposób, w jaki trzyma się hierarchicznej struktury funkcji, jest odpowiedni do wyjaśniania mechanizmów komunikacji. Dlatego większość ludzi mówiąc o różnych funkcjach warstw myśli kategoriami nazw i numerów warstw modelu OSI.
Obecnie każdy nowy stos protokołów sieciowych implementowany jest z własnym modelem. Zazwyczaj te nowe modele łączą siedem warstw modelu OSI w pięć lub mniej. Modele i ich protokoły wciąż mogą pochwalić się funkcjonalnością niezbędną do wsparcia komunikacji.
Internet protocol, wersja 4 (IPv4)
Protokół IP został opracowany w przybliżeniu 20 lat temu na użytek Ministerstwa Obrony USA, które potrzebowało sposobu połączenia ze sobą firmowych komputerów. Osiągnięte to zostało w drodze zastosowania protokołu warstwowego, który izolował aplikacje od urządzeń sieciowych. Protokół ten wykorzystuje model nieznacznie różniący się od modelu OSI, a który znany jest jako model TCP/IP.
W przeciwieństwie do modelu OSI, TCP/IP bardziej skupia się na zapewnianiu połączenia niż na ścisłym stosowaniu się do modelu warstwowego. Osiąga to poprzez potwierdzenie ważności hierarchicznej struktury funkcji, ale przy tym wciąż pozostawia projektantom protokołów pokaźne pole swobody do implementacji. Spowodowało to duży
sukces rynkowy TCP/IP, głównie ze względu na jego otwartość, która pozwala uniezależnić się od jednego dostawcy czy producenta.
Elastyczność modelu TCP/IP w porównaniu z modelem OSI pokazano na rysunku 5.1.
Warstwa według modelu OSI |
Numer warstwy |
Równoważny opis warstwy TCP/IP |
Aplikacji |
7 |
Proces/ aplikacja |
Prezentacji |
6 |
|
Sesji |
5 |
Host-to-host |
Transportu |
4 |
|
Sieci |
3 |
Internet |
Łączenia danych |
2 |
Dostęp do sieci |
Fizyczna |
1 |
|
Rysunek 5.1. Porównanie modelu OSI z TCP/IP
Model TCP/IP
Stos protokołu TCP/IP zawiera cztery funkcjonalne warstwy: dostępu do sieci, internetową, łącza host-host i procesu/aplikacji.
Warstwa procesu/aplikacji
Warstwa aplikacji zapewnia protokoły niezbędne do zdalnego dostępu i współdzielenia zasobów. Takie znane aplikacje jak Telnet, FTP, SMTP i HTTP, rezydują i operują w tej warstwie oraz zależą od funkcjonalności niższych warstw.
Warstwa łącza host-host
Warstwa IP łącza host-host jest luźno powiązana z warstwą sesyjną i transportu modelu OSI. Składa się z dwóch protokołów: TCP (Transmission Control Protocol) i UDP (User Datagram Protocol). Trzeci protokół jest w trakcie definiowania i ma na celu przystosowanie ciągle rozrastającej się, zorientowanej na transakcje natury Internetu. Protokół ten wstępnie nazywany jest T/TCP (Transaction Transmission Protocol).
Protokół TCP
TCP zapewnia transmisję danych pomiędzy dwoma hostami, może obsługiwać wiele strumieni danych oraz zapewnia kontrolę przepływu i błędów, a nawet porządkowanie pakietów, które mogły przyjść w niewłaściwej kolejności.
Rysunek 5.2 ilustruje strukturę i rozmiary pól nagłówka protokołu TCP.
16-bitowy port źródłowy TCP |
16bitowy port docelowy TCP |
32-bitowy numer sekwencyjny |
32-bitowy numer potwierdzenia |
4-bitowe pole przesunięcia danych |
6-bitowe pole rezerwowe |
6-bitowe pole flag |
16-bitowe pole rozmiaru okna |
16-bitowa suma kontrolna |
wypełnienie |
Rysunek 5.2. Struktura nagłówka TCP
Nagłówek TCP składa się z minimum dwudziestu oktetów i zawiera następujące pola:
Port źródłowy TCP - 16-bitowe pole portu źródłowego zawiera numer portu inicjującego sesję komunikacyjną. Port źródłowy i adres źródłowy IP funkcjonują jako adres zwrotny pakietu.
Port docelowy TCP - 16-bitowe pole portu docelowego jest adresem portu, dla którego przeznaczona jest dana transmisja. Port ten zawiera adres interfejsu aplikacji komputera odbiorcy, do którego zostaną przesłane dane pakietów.
Numer sekwencyjny - 32-bitowy numer sekwencyjny używany jest przez komputeryodbiorców w celu rekonstrukcji danych aplikacji do ich oryginalnej postaci. W dynamicznie routowanej sieci całkiem możliwe jest, że niektóre pakiety obiorą różne trasy, a przez to nie zachowają odpowiedniej kolejności przychodzenia. Dlatego pole sekwencyjne rekompensuje ewentualny nieporządek w dostarczaniu pakietów.
Numer potwierdzenia - TCP używa 32-bitowego potwierdzenia (ACK) pierwszego oktetu danych zawartych w następnym oczekiwanym segmencie. Numer wykorzystywany do identyfikacji każdego potwierdzenia jest numerem sekwencyjnym potwierdzanego pakietu.
Pole przesunięcia danych - to 4-bitowe pole zawiera rozmiar nagłówka TCP, mierzony w 32-bitowej strukturze danych, znanej jako „słowo".
Pole rezerwowe - to 6-bitowe pole jest zawsze ustawiane na 0, ponieważ jest zarezerwowane na jeszcze nieokreślone przyszłe potrzeby.
Pole flag - 6-bitowe pole flag zawiera sześć 1-bitowych flag, które pozwalają kontrolować funkcje potwierdzania znaczących pól, zerowania połączenia, synchronizacji numerów sekwencyjnych i końca przesyłania danych.
Pole rozmiaru okna - to 16-bitowe pole używane jest przez maszynę docelową, aby powiadomić host źródłowy jak dużą liczbę danych jest gotowa przyjąć.
Suma kontrolna - nagłówek TCP zawiera również 16-bitowe pole sprawdzania błędu, znane jako suma kontrolna. Host źródłowy oblicza matematyczną wartość, opartą na zawartości segmentów. Host docelowy wykonuje taką samą kalkulację. Jeśli zawartość jest nienaruszona, wtedy rezultaty tych dwóch kalkulacji są identyczne, co dowodzi ważności danych.
Wypełnienie - w tym polu dodawana jest odpowiednia liczba zer, aby nagłówek TCP był zawsze wielokrotnością 32 bitów.
Protokół UDP
UDP jest kolejnym protokołem warstwy łącza host-host (odpowiadającej warstwie transportu modelu OSI). UDP zapewnia podstawową, o niskich kosztach administracyjnych, transmisję, tzn. zapewnia bezpołączeniową sesję pomiędzy dwoma systemami końcowymi. Nie zapewnia natomiast potwierdzania otrzymywanych datagramów.
Uwaga
UDP podnosi interesującą i potencjalnie sporną kwestię: jaka jest różnica pomiędzy datagramem a pakietem? Oba są konstrukcjami warstwy 3 i oba są wspierane przez protokół sieciowy IP. Podstawową różnicą jest to, że datagramy nie wymagają potwierdzenia przyjęcia przez odbiorcę.
To implikuje fakt, że wszystkie konstrukcje danych warstwy 3 są z natury datagramami, ponieważ działanie warstwy 3 jest bezpołączeniowe. Dopiero niezawodność zapewniana jest przez protokoły transportowe warstwy 4, takie jak TCP czy SPX. Dlatego pojęcie pakietu tak naprawdę jedynie opisuje konstrukcje danych warstwy 3, które również zawierają segmenty wiarygodnego protokołu warstwy 4. W przeciwnym wypadku są one tylko datagramami.
Protokół UDP może być używany do wymiany takich danych jak rozgłaszane nazwy NetBIOS-u, wiadomości systemowe ind., ponieważ taki typ wymiany nie wymaga kontroli przepływu, potwierdzeń, porządkowania oraz innych funkcji zapewnianych przez TCP.
Rysunek 5.3 ilustruje zarówno strukturę, jak i rozmiary pól nagłówka UDP.
Nagłówek protokołu UDP posiada następujące pola:
16-bitowy port źródłowy UDP |
16-bitowy port docelowy UDP |
16-bitowe pole długości |
16-bitowa suma kontrolna |
Rysunek 5.3. Struktura nagłówka UDP
• Numer portu źródłowego UDP - 16-bitowy port źródłowy jest logicznym numerem portu w komputerze źródłowym. Port źródłowy i adres źródłowy IP funkcjonują jako adres zwrotny pakietu.
• Numer portu docelowego UDP - 16-bitowy port docelowy jest numerem łącza w komputerze docelowym. Port docelowy UDP używany jest do przesyła pakietów do właściwej aplikacji po tym jak pakiet przybył do zamierzonej maszyny docelowej.
• Długość wiadomości UDP - 16-bitowe pole długości wiadomości UDP komputer docelowy o rozmiarze wiadomości.
• Suma kontrolna UDP - 16-bitowe pole do sprawdzania błędu, obliczane w oparciu o zawartość datagramu. Komputer docelowy wykonuje te same matematyczne działanie jak host źródłowy. Wszelka rozbieżność w obu obliczonych wartościach wskazuje, że w czasie transmisji pakietu wystąpił błąd.
Główną różnicą pomiędzy TCP a UDP jest wiarygodność. TCP jest wysoce wiarygodny, natomiast UDP jest szybkim, ale prostym mechanizmem. Z kolei główne podobieństwo TCP i UDP polega na tym, że oba protokoły zawierają informacje, które mogą być wykorzystane jedynie przez maszynę docelową. Generalnie routery nie używają żadnej informacji TCP czy UDP, gdy wyznaczają swoje trasy lub podejmują decyzję co do przesyłu. Zamiast tego szeroko polegają na informacji nagłówkowej zawartej w strukturach danych warstwy 3, takiej jak nagłówek IP.
Warstwa internetowa
Warstwa internetowa IPv4 składa się ze wszystkich protokołów i procedur niezbędnych do wystąpienia komunikacji pomiędzy hostami poprzez wiele sieci. Oznacza to, że przenoszące dane pakiety muszą być routowalne, co czyni je takimi IP.
Rysunek 5.4 ilustruje strukturę i rozmiar pół nagłówka IP.
4-bitowy numer wersji IP |
4-bitowa długość nagłówka |
4-bitowy typ flag serwisowych |
16-bitowe pole całkowitej długości |
16-bitowy identyfikator pakietu |
Trzy 1-bitowe flagi |
13-bitowe przesunięcia fragmentu |
8-bitowe pole czasu życia |
8-bitowe
|
16-bitowa
|
32-bitowy źródłowy adres IP |
32-bitowy docelowy adres IP |
wypełnienie |
Rysunek 5.4. Struktura nagłówka IP
Nagłówek IP posiada następujące pola:
Numer wersji IP - pierwsze cztery bity nagłówka IP identyfikują działającą wersję IP (np. wersję 4 lub 6).
Długość nagłówka internetowego - następne 4-bity nagłówka zawierają jego długość wyrażoną wielokrotnością 32.
Typ flag serwisowych - kolejne 8 bitów zawiera 1-bitowe flagi, które mogą być użyte do określenia parametrów pierwszeństwa, opóźnienia, przepustowości i niezawodności dla danego pakietu.
Pole długości całkowitej - to 16-bitowe pole zawiera całkowitą długość pakietu IP mierzoną w oktetach. Maksymalna wartość tego pola może sięgać nawet 65 535 oktetom.
Identyfikator pakietu - każdemu pakietowi IP nadany jest unikalny 16-bitowy identyfikator, który używany jest do identyfikacji fragmentów datagramu.
Flagi - następne pole zawiera trzy 1-bitowe flagi, które wskazują czy, dozwolona jest fragmentacja pakietu i czy już została przeprowadzona.
Pole przesunięcia fragmentu - to 13-bitowe pole mierzy przesunięcie fragmentowanej zawartości w stosunku do początku całego pakietu. Wartość ta mierzona jest w 64bitowych przyrostach.
Pole czasu życia (ang. TTL - Time-toLive) - pakiety IP nie mogą wędrować w sieci WAN bez końca i dlatego ich czas życia musi być ograniczony do skończonej wartości. 8-bitowe pole TTL ustawiane jest przez nadawcę na każdą wartość aż do 255. Wartość ta zmniejszana jest przynajmniej o jeden dla każdego skoku (1 skok - przejście pakietu przez 1 router - przyp. tłum.), jakiego dokona pakiet. Jeśli wartość zmniejszy się do jednego wtedy zakłada się, że niemożliwe jest doręczenie pakietu. Wiadomość jest z powrotem generowana i przesyłana do maszyny źródłowej, a następnie pakiet ten jest niszczony.
Pole identyfikatora protokołu - to 8-bitowe pole identyfikuje protokół, który występuje za nagłówkiem IP, taki jak VINES, TCP, UDP itd.
Suma kontrolna - pole sumy kontrolnej jest 16- bitowym polem służącym do sprawdzania błędów. Komputer docelowy i każdy węzeł bramowy w sieci ponownie dokonują matematycznych obliczeń związanych z nagłówkiem pakietu, tak jak czynił to komputer źródłowy. Jeśli dane przetrwają podróż w stanie niezmienionym, wtedy rezultat wszystkich tych kalkulacji będzie identyczny. Pole to również informuje host docelowy o ilości przychodzących danych.
Źródłowy adres IP - adres źródłowy jest adresem IP komputera źródłowego.
Docelowy adres IP - adres docelowy jest adresem IP komputera docelowego.
Wypełnienie - w tym polu dodawana jest odpowiednia liczba zer, aby nagłówek IP był zawsze wielokrotnością 32 bitów.
Powyższe pola nagłówka ujawniają, że warstwa internetowa IPv4 jest z natury bezpołączeniowa: urządzenia przesyłające pakiety w sieci mogą określać idealne ścieżki dla każdego pakietu przez sieć. Nie zapewnia także żadnych potwierdzeń, kontroli przepływu czy funkcji porządkowania pakietów. Takie funkcje pozostawione są protokołom wyższego poziomu.
Warstwa internetowa, poza formatowaniem pakietów IP, musi realizować inne funkcje zarządzające routingiem. Musi zapewniać mechanizmy przekładania adresów warstwy 2 na adresy warstwy 3 i odwrotnie. Takie funkcje zapewniane są przez protokoły równorzędne do IP na przykład IGP (Interior Gateway Protocol), EGP (Exterior Gateway Protocol), ARP (Address Resolution Protocol), RARP (Reverse Address Resolution Protocol) i ICMP (Internet Control Message Protocol).
Typowe działanie IPv4
Warstwa aplikacji umieszcza nagłówek w pakiecie danych, identyfikując docelowy ; host i port. Natomiast protokół warstwy host-host (TCP - albo UDP, w zależności od aplikacji) rozbija takie bloki danych na mniejsze, łatwiejsze do zarządzania kawałki. Każdy kawałek posiada odpowiedni nagłówek TCP lub UDP. Struktura taka znana jest jako segment TCP.
Pola nagłówka segmentu są odpowiednio wypełniane i segment przesyłany jest do warstwy internetowej. Warstwa ta z kolei dodaje informacje o adresowaniu, typie protokołu i sumie kontrolnej.
Maszyna docelowa wykonuje odwrotne operacje do powyżej opisanych. Otrzymuje pakiety i przesyła je do swojego protokołu warstwy host-host, a jeśli to konieczne, pakiety przeobrażane są w segmenty danych i wysyłane do odpowiedniej aplikacji.
Schemat adresowania IPv4
IPv4 wykorzystuje 32-bitowy schemat adresowania do identyfikacji sieci, urządzeń sieciowych i innych podłączonych do sieci maszyn. Te adresy, znane jako adresy IP, są ściśle regulowane przez organizację o nazwie IANA (Internet Assigned Numbers Authority) w celu zapewnienia ich unikalności w Internecie. Obecnie funkcja ta przechodzi z rąk rządu USA do organizacji prywatnych.
IPv4 uwzględnia pięć klas adresów IP, każdy identyfikowany przez pojedynczą literę alfabetu: A, B, C, D i E. Każdy adres składa się z dwóch części, adresu sieci i hosta. Te pięć klas reprezentuje kompromis pomiędzy liczbą obsługiwanych sieci i hostów. Pomimo tego, że adresy są liczbami binarnymi, aby ułatwić człowiekowi posługiwanie się nimi, identyfikowane są za pomocą formatu punktowo-dziesiętnego. Kropki oddzielają cztery oktety adresu.
Uwaga
Notacja punktowo-dziesiętna odpowiada konwersji adresu binarnego na dziesiętny. Punkt (.) używany jest do oddzielenia numerów węzła i sieci. Na przykład adres 192.168.251.99 odpowiada urządzeniu numer 99 w sieci 192.168.251.
Klasy adresów obsługiwane przez IPv4:
• Adres IP klasy A - pierwszy bit adresu klasy A jest zawsze zerem. Następnych 7 bitów identyfikuje numer sieci. Natomiast ostatnie 24 bity reprezentują możliwe adresy hosta. Zakres dostępnych adresów klasy A to 1.0.0.0 do 126.0.0.0. Każdy taki adres może obsłużyć 16 774 214 unikalnych adresów hostów.
• Adres IP klasy B - pierwsze dwa bity adresu klasy B ustawione są na 10. Następne 16 bitów identyfikuje numer sieci, a ostatnich 14 bitów potencjalne adresy hosta. Adresy klasy B mieszczą się w zakresie od 128.1.0.0 do 191.254.0.0 i każdy z nich może obsłużyć 65 534 unikalnych adresów hostów.
• Adres IP klasy C - pierwsze trzy bity adresu klasy C ustawione są na 110. Kolejnych 21 bitów identyfikuje numer sieci. Ostatni oktet używany jest do adresowania hosta. Adresy klasy C mieszczą się w zakresie od 192.0.1.0 do 223.255.254.0 i każdy może obsłużyć 254 unikalne adresy hostów.
• Adres IP klasy D - pierwsze cztery bity adresu klasy D ustawione są na 1110. Adresy takie wykorzystywane są do rozgłaszania do grupy (ang. multicasting) i mają ograniczone zastosowanie. Adres multicastowy jest adresem sieciowym, który kieruje pakiety z takim adresem docelowym do predefiniowanych grup adresów IP. Adresy klasy D mieszczą się w zakresie od 224.0.0.0 do 239.255.255.254.
• Adres IP klasy E - adres klasy E, choć zdefiniowany, zarezerwowany jest przez IETF na potrzeby własnych badań i mieści się w zakresie od 240.0.0.0 do 255.255.255.0. Duża luka pomiędzy tymi klasami adresów spowodowała zmarnowanie znacznej liczby potencjalnych adresów. Weźmy pod uwagę średnich rozmiarów firmę, której potrzebnych jest 300 adresów IP. Adres klasy C (254 adresy) jest nieodpowiedni w tej sytuacji. Użycie dwóch adresów klasy C zapewnia więcej niż wystarczającą liczbę adresów, ale powoduje powstanie dwóch odrębnych domen w obrębie sieci. Natomiast alternatywne przejście do adresu klasy B zapewnia także wszystkie niezbędne adresy w obrębie tej samej domeny, ale marnuje 65 234 adresy, które nie są wykorzystywane.
Na szczęście nie jest to dłużej problemem. Nowy protokół routingu między domenami, znany jako bezklasowy routing, został opracowany, aby umożliwić wielu mniejszym klasom adresów funkcjonowanie jako jedna domena routingu. Adresowanie IP wymaga, aby każda maszyna posiadała własny unikalny adres. Maski podsieci mogą rekompensować ogromną lukę pomiędzy klasami adresów poprzez indywidualne dopasowanie długości adresów hosta i/lub sieci. Te dwa numery używane są do routingu każdego datagramu IP do jego punktu docelowego.
Ponieważ TCP/IP jest zdolne do obsługi wielu sesji z jednego hosta, musi zapewniać sposób adresowania określonego programu komunikacyjnego, który mógłby działać na każdym hoście. TCP/IP dokonuje tego poprzez numery portów. IETF przypisała najpowszechniejszym aplikacjom ich własne dobrze znane numery portów. Numery te są stałe dla aplikacji i z hosta do hosta. Pozostałym aplikacjom przypisywany jest wolny numer portu.
IPv4 - konkluzja
IPv4 liczy sobie już prawie 20 lat. Przetrwał znaczne zmiany w zaawansowaniu technologicznym oraz radykalną zmianę w demografii bazy swoich użytkowników.
Być może najbardziej znaczącą zmianą była komercjalizacja Internetu. Przyniosło to ze sobą bezprecedensowy rozrost populacji użytkowników Internetu i zmianę w jego demografii. To z kolei stworzyło potrzebę większej ilości adresów i dostarczania przez warstwę internetową nowych typów usług. I właśnie ograniczenia IPv4 doprowadziły do opracowania całkowicie nowej wersji protokołu nazywanego IP wersja 6 (IPv6), ale również powszechnie określanego mianem Internet Protocol: Next Generation (IPng).
Internet Protocol wersja 6 (IPv6)
IPv6 został zaprojektowany z myślą o zastąpieniu istniejącej wersji IP. W zamierzeniach jego twórców leżało wyeliminowanie wszystkich słabości aktualnie stosowanego IPv4, takich jak niedobór wolnych adresów IP czy brak bezpieczeństwa warstwy sieciowej.
Uwaga
IPv6 czasami nazywany jest IPng lub IP: Next Generation. IPng było nazwą oryginalnej inicjatywy polegającej na opracowaniu protokołu IP następnej generacji. W trakcie prac nad tym protokołem pojawiła się nazwa IP wersja 6 (skracana do IPv6).
Jakkolwiek IPng i IPv6 naprawdę odnoszą się do różnych rzeczy (inicjatywy i protokołu), te dwa terminy używane są wymiennie do identyfikacji nowego protokołu.
IPv4 jest „upośledzony" poprzez swoją 32-bitową architekturę adresów, swoją dwu poziomową hierarchią adresowania oraz klasami adresów. Taka dwupoziomowa hierarchia (nazwa hostu i domeny) nie pozwala na konstrukcję wydajnych hierarchii adresów które mogłyby zostać wykorzystane przez routery na skalę wymaganą przez dzisiejszy Internet.
IPv6 rozwiązuje wszystkie te problemy. Będzie on oferować znacznie poszerzony schemat adresowania, aby obsłużyć ciągły rozwój Internetu. IPv6 również obsługiwać będzie wiele innych cech takich jak transmisja audio-wideo w czasie rzeczywistym, mobilność hostów, bezpieczeństwo od początku do końca poprzez uwierzytelnianie i kodowanie warstwy internetowej oraz autokonfigurację. Oczekuje się, że wszystkie te usługi będą pokaźnym bodźcem do przejścia na IPv6 w momencie, gdy produkty obsługujące ten protokół wejdą na rynek.
Jednym z aspektów IPv6, który może i powinien zostać przedstawiony, jest jego sposób adresowania. 32-bitowa długość adresu IPv4 daje protokołowi teoretyczną zdolność adresowania 232 albo inaczej około czterech miliardów urządzeń. Niewydajna technika masek podsieci roztrwoniła ten zasób.
IPv6 używa 128-bitowego adresu i jest teoretycznie 296 razy większy od rozmiaru przestrzeni adresowej IPv4. Daje to 340 282 366 920 938 463 463 374 607 431 768 211 456 możliwych matematycznie adresów. Obecnie tylko około 15% z tych potencjalnych adresów jest przydzielonych. Reszta zarezerwowana jest na nieokreślone przyszłe wykorzystanie i pojawia się w polu adresowym jako ciąg heksadecymalnych zer.
W rzeczywistości przypisanie i routing adresów wymaga utworzenia pewnej hierarchii. Hierarchia taka może zredukować liczbę potencjalnych adresów, ale zwiększy wydajność protokołów routingu IPv6. Wzrost w rozmiarze przestrzeni adresowej oznacza, że nowy format adresowania będzie bardzo nieprzyjazny dla użytkownika. Dodatkowo sytuację zaostrza fakt, że adres IPv6 wyrażany jest w formacie heksadecymalnym z dwukropkiem (:), a nie dobrze znanym punktowo dziesiętnym. Praktyczną tego implikacją jest to, że użytkownicy polegać będą znacznie bardziej na przyjaznych dla nich nazwach mnemonicznych. Dlatego DNS (Domain Name Service) staje się absolutnie konieczny, a nie jest usługą opcjonalną jak w przypadku środowiska sieciowego IPv4.
Uwaga
DNS jest usługą odpowiedzialną za tłumaczenie mnemonicznych nazw hostów na numeryczne adresy IP.
Równie ważny jest fakt, że z nową strukturą adresów IPv6 osiąga się bardzo dużą elastyczność. IPv6 obywa się bez poprzedniego opartego na klasach adresowania. Zamiast tego, rozpoznaje trzy rodzaje adresu unicast, poprzednią klasę D adresu zastępuje nowym formatem adresu multicast oraz wprowadza nowe typy adresów.
Struktury adresów IPv6 unicast
Adresowanie unicast zapewnia połączenie od jednego punktu końcowego do drugiego. IPv6 wspiera kilka form adresów unicast, które opisane są w kolejnych rozdziałach książki.
Adres dostawcy usług internetowych
IPv6 zapewnia format adresu unicast zaprojektowany specjalnie do użytku przez dostawców usług internetowych (ang. ISP - Internet Service Provider) w celu podłączenia indywidualnych użytkowników do Internetu. Takie adresy oferują unikalne adresy dla indywidualnych osób lub grup, które posiadają dostęp do Internetu przez dostawcę usług internetowych.
Istnieją następujące formaty adresu dostawcy usług internetowych:
• 3-bitowa flaga adresu ISP, która zawsze ustawiona jest na 010
• pole ID archiwum, które ma długość n bitów
• pole ID dostawcy, o długości m bitów • pole ID abonenta, o długości o bitów
• pole ID podsieci, o długości p bitów
• pole ID interfejsu, o długości 125 (n+m+o+p) bitów.
Litery alfabetu n, m, o i p oznaczają pola o zmiennej długości. Długość ID interfejsu wynosi 125 bitów (maksymalna długość adresu IPv6 wynosi 128 bitów minus 3-bitowa flaga) minus suma tych pól.
Przykładem takiego typu adresu może być 010:0:0:0:0:x, gdzie x może być każdą liczbą. Zważywszy, że ogromna przestrzeń nowych adresów musi być dopiero przydzielona, adresy takie zawierać będą mnóstwo zer. Dlatego grupy zer mogą być wyrażone w formie skróconej przy użyciu znaku ::. Taką skróconą notacją jest 010::x.
Inne typy adresu zaprojektowane są do użytku lokalnego. Adresy lokalnego użytku mogą być przypisane do urządzeń sieciowych w obrębie samodzielnego intranetu lub do urządzeń w intranecie, które muszą posiadać dostęp do Internetu.
Link-Local
Link-local przeznaczone jest do użytku na pojedynczym łączu do takich celów jak autokonfiguracja adresu, rozpoznawanie sąsiedztwa lub w sytuacji, gdy żaden router nie jest obecny. Adresy link-local posiadają następujący format:
• 10-bitowa flaga lokalnego użycia, która zawsze ustawiana jest na 1111111011
• zarezerwowane pole bez nazwy o długości n-bitów, domyślnie ustawiane na 0
• pole ID interfejsu o długości 118 n bitów.
ID interfejsu może być adres MAC ethernetowej karty sieciowej. Adresy MAC, będąc teoretycznie adresami unikalnymi, mogą być powiązane ze standardowymi prefiksami adresów IP, aby tworzyć unikalne adresy dla ruchomych i krótkotrwałych użytkowników: Przykładem adresu z adresem MAC jest 1111111011:0:mac adres.
Adres unicast site-local
Adresy site-local przeznaczone są do użycia w pojedynczej lokalizacji. Mogą być wykorzystywane dla miejsc lub organizacji, które nie są podłączone do Internetu. Organizacje te nie muszą domagać się prefiksu adresu z przestrzeni adresów Internetu, gdyż w zamian mogą użyć adresu IPv6 site-local. Gdy organizacja łączy się z Internetem, wtedy może utworzyć unikalne adresy globalne poprzez zastąpienie prefiksu site-local prefiksem abonenta, który zawiera identyfikację archiwum, dostawcy usług internetowych i abonenta.
Adresy site-local posiadają następujący format:
• 10-bitowa flaga lokalnego użycia, która zawsze ustawiana jest na 1111111011
• zarezerwowane pole bez nazwy o długości n-bitów i domyślnie ustawiane na 0
• pole ID podsieci, o długości m bitów
• Pole m interfejsu, o długości na 118 (n+m) bitów.
Przykładem adresu site-local jest 1111111011:0: podsieć:interfejs.
Struktury przejściowych adresów IPv6 unicast
Dwa specjalne adresy IPv6 unicast zostały zdefiniowane jako przejściowe mechanizmy pozwalające hostom i routerom dynamicznie routować pakiety IPv6 po sieci IPv4 i odwrotnie.
Adres IPv6 unicast zgodny z IPv4
Pierwszy typ adresu unicast nazywany jest adresem IPv6 zgodnym z IPv4. Ten przejściowy adres unicast może być przypisany do węzłów IPv6 i zawierać w ostatnich 32bitach adres IPv4. Rysunek 5.5 ilustruje format takich adresów.
80-bitowe zarezerwowane pole ustawione na 0 |
16-bitowe zarezerwowane pole ustawione na 0 |
32-bitowy adres IPv4
|
Rysunek 5.5. Struktura adresu IPv6 unicast zgodnego z IPv4
Adres IPv6 unicast zamapowany jako IPv4
Drugim, podobnym typem adresu IPv6, który również zawiera w swoich ostatnich 32 bitach adres IPv4, jest zamapowany jako IPv4 adres IPv6 unicast. Adres ten skonstruowany jest przez router z podwójnym protokołem i zezwala węzłom tylko z IPv4 na tunelowanie infrastruktury sieci IPv6. Jedyną rzeczą różniącą ten adres od poprzedniego jest to, że budowany jest automatycznie przez routery z podwójnym protokołem i nie może być przypisany do żadnego węzła. Na rysunku 5.6 pokazany jest format takiego adresu.
80-bitowe zarezerwowane pole ustawione na zera |
16-bitowe zarezerwowane pole ustawione na FS |
32-bitowy adres IPv4
|
Rysunek 5.6. Struktura adresu IPv6 unicast zamapowanego jako IPv4
Oba adresy, adres unicast zamapowany i zgodny z IPv4, są niezbędne do tunelowania. Tunelowanie umożliwia transport pakietów przez regiony niekompatybilnych sieci poprzez pakowanie ich w zewnętrznie akceptowalne struktury.
Struktury adresu IPv6 anycast
Adres anycast, wprowadzony w IPv6, jest pojedynczą wartością przypisaną do więcej niż jednego interfejsu. Zazwyczaj interfejsy takie należą do różnych urządzeń. Pakiet wysłany do adresu anycast routowany jest do jednego urządzenia. Wysyłany jest do najbliższego interfejsu posiadającego adres, który jaki zdefiniowany jest przez pomiar odległości protokołu routingu. Na przykład strona WWW może posiadać mirroring na wielu serwerach. Poprzez przypisanie adresu anycast do tych serwerów, żądanie połączenia ze stroną WWW automatyczny routing jest do jednego, najbliższego od użytkownika serwem.
Uwaga
W mutowanym środowisku określenie najbliższy interfejs może wcale nie oznaczać fizycznie najbliższego. Zależy to od aktualnie używanego protokołu routingu oraz jego metryk.
Adresy anycast tworzone są z przestrzeni adresów unicast i mogą przybierać formę dowolnego adresu unicast. Tworzone są poprzez przypisanie tego samego adresu unicast więcej niż jednemu interfejsowi.
Struktury adresu IPv6 multicast
Mechanizm multicastingu realizowany był już w IPv4, ale wymagał użycia niejasnego adresowania klasy D. IPv6 eliminuje adresy klasy D na korzyść nowego formatu adresów, który pozwala uzyskać miliardy kodów grup multicastowych. Każdy kod grupy identyfikuje dwóch lub więcej odbiorców pakietów. Zakres szczególnych adresów multicastowych jest elastyczny. Każdy adres może być ograniczony do pojedynczego systemu, umieszczonego w określonym miejscu, skojarzonego z określonym łączem sieciowym lub dystrybuowanego globalnie.
Należy zaznaczyć, że również rozgłoszenia IP zostały wyeliminowane na rzecz nowego formatu adresów.
Pomimo potencjalnych korzyści wynikających z zastosowania IPv6 proces migracji z IPv4 nie jest pozbawiony ryzyka. Rozszerzenie długości adresu z 32 do 128 bitów automatycznie ogranicza współpracę pomiędzy IPv4 i IPv6. Węzły tylko z IPv4 nie mogą współpracować z węzami tylko z IPv6, ponieważ architektura adresów nie jest kompatybilna.
Podsumowanie
Dwie wersje routowanych protokołów IPv4 i IPv6 znacznie się różnią. Razem reprezentują przeszłość, teraźniejszość i przyszłość. Zrozumienie tych protokołów routowanych, szczególnie ich schematu adresowania, pomoże lepiej pojąć sposób, w jaki routery przesyłają dane z maszyny źródłowej do docelowej.