Również analogicznie jak w tradycyjnej poczcie pakiety transportowane są do określonej sieci, w której router jest odpowiednikiem urzędu pocztowego. Router decyduje również do którego hosta adresuje ramkę z danym pakietem, podobnie jak listonosz, który przynosi przesyłki do konkretnego adresata.
Oba ww sposoby adresacji można porównać do danych wymienionych w dowodzie rejestracyjnym pojazdu, w którym pośród różnorodnych pól znajdują się: numer nadwozia (unikalnym dla każdego pojazdu i nadawany przez producenta karoserii) oraz adres właściciela i związane z tym numery tablic rejestracyjnych (zależne od miejsca zameldowania posiadacza pojazdu). Pierwsze pole jest unikalne i dzięki temu można określić czy dany pojazd nie został skradziony drugie z tych pól zmienia się w momencie zmiany miejsca zameldowania właściciela. Reasumując: adres MAC jest adresem identyfikującym konkretne urządzenia i nadawanym przez producenta, podobnie jak numer nadwozia pojazdu. Adres IP jest adresem logicznym i nadawany w zależności od tego do jakiej sieci zostało podłączone dane urządzenie sieciowe, analogicznie jak adres i numery rejestracyjne pojazdu. Oczywiście w obu przypadkach możliwe jest zmienianie tych adresów przy pomocy programów podobnie jak zmienia się (fałszuje) dane dotyczące pojazdu.
Można to porównać do adresu listowego, który składa się z kodu identyfikującego miasto (część miasta) oraz dokładnego adresu identyfikującego precyzyjnie adresata. Kod umożliwia szybkie przesłanie przesyłki do właściwego urzędu pocztowego. Dokładny adres umożliwia listonoszowi (z danego urzędu pocztowego) doręczenie przesyłki. W przypadku IPv4 część adresu przeznaczona na identyfikator sieci jest zależna od długości maski sieciowej. Maska ta służy do wyznaczania adresu sieciowego, który jest (musi być) taki sam dla wszystkich interfejsów znajdujących się w tej samej podsieci. Netmaska podobnie jak adres IPv4 składa się z 32 bitów. Bity na najbardziej znaczących pozycjach powinny być ustawione na 1. Liczba tych jedynek pogrupowanych w oktety decyduje o tym ile bitów z adresu będzie odpowiadało za identyfikację sieci, np. dla maski 11111111.00000000.00000000.00000000 (dziesiętnie: 255.0.0.0) do zapisania adresu sieci będzie wykorzystywanych 8 najbardziej znaczących bitów adresu, zaś pozostałe 24 bity zostaną przeznaczone na adresy hostów w tej sieci. W przypadku maski, np.: 11111111.11111111.11111111.00000000 (netmaska zapisana dziesiętnie wynosi: 255.255.255.0), liczba bitów przeznaczonych na adresację sieci wynosi 24, zaś na adresację hosta pozostanie 8 bitów. Ze względu na wygodę zapisu i mniejszą możliwość pomyłek netmaski zapisuje się najczęściej w postaci notacji dziesiętnej.
Adresacja z podziałem na klasy zostanie omówiona na następnym slajdzie, zaś adresacja bezklasowa w dalszej części wykładu.
Klasa A została przeznaczona dla dużych organizacji z bardzo dużą liczbą hostów. Pula adresowa sieci zawiera się w przedziale 1-126 i stanowi połowę wszystkich dostępnych adresów. Klasa B została przeznaczona dla dużej liczby organizacji z dużą liczbą hostów. Numery sieci w tej klasie zawierają adresy od 128 do 191, stąd dostępna liczba adresów stanowi 25 procent całej puli adresowej. Klasa C była zaplanowana przede wszystkim dla małych organizacji z liczbą hostów nie przekraczającą kilkuset sztuk. Klasa D służy do rozsyłania grupowego pakietów przy pomocy adresów IPv4. Klasa E została zarezerwowana przez IETF dla celów badawczych. Jak się później okazało podział ten nie pozwalał na efektywne zarządzanie pulą adresów. Stąd późniejsze próby przeciwdziałania temu zjawisku przez IETF , przez wprowadzenie mechanizmów, o których będzie mowa w dalszej części wykładu. Aby określić właściwie klasę adresu IP należy spojrzeć na pierwszą liczbę (w zapisie dziesiętnym) adresu lub na najbardziej znaczące bity (w zapisie binarnym).
W sieci tej klasy pozostałe 24 bity są przeznaczone na część identyfikującą hosty. Daje to przestrzeń adresową ponad 16 milionową (16.777.216). Standardowa (naturalna) maska dla sieci tej klasy to 255.0.0.0
W sieci tej klasy pozostałe 16 bitów przeznaczone są na część identyfikującą hosty. Daje to przestrzeń adresową umożliwiającą wykorzystanie ponad 65 tysięcy adresów sieciowych. W każdej z sieci z tego zakresu, do dyspozycji jest ponad 65 tysięcy adresów na hosty. (65536). Standardowa (naturalna) maska sieciowa dla tej klasy wynosi: 255.255.0.0
W sieci tej klasy pozostałe 8 bitów przeznaczone są na część identyfikującą hosty. Daje to przestrzeń adresową umożliwiającą zaadresowanie małych sieci składających z się z nie więcej niż 256 adresów. Standardowa (naturalna) maska sieciowa dla tej klasy wynosi: 255.255.255.0 Przykładowo jeśli adres hosta w sieci tej klasy wynosi: 194.29.145.84 co można zapisać binarnie: 11000010. 00011101. 10010001. 01010100 Standardowa netmaska 255.255.255.0 binarnie 11111111. 11111111. 11111111.00000000 Zatem adres sieci wyznaczony przez operacje iloczynu logicznego poszczególnych bitów adresu wynosi: 11000010. 00011101. 10010001.00000000 co w notacji dziesiętnej zapisane jest następująco: 194.29.145.84
Przykładem takich pakietów są pakiety wysyłane przez protokoły rotingu: - RIPv2 wysyła uaktualnienia na adres 224.0.0.9 - OSPF - wysyła pakiety „Hello” na adres 224.0.0.5
Jednym z takich ograniczeń jest adres postaci 127.x.x.x. Został on zarezerwowany na potrzeby pętli zwrotnej. Kolejnym ograniczeniem jest adres, w którym identyfikator hosta skłąda się z liczb 255. Wynika, to z założenia, że ten rodzaj adresu przeznaczony jest do rozsyłania komunikatów typu broadcast. W przypadku adresacji bezklasowej ograniczenie to rozszerzone jest do ostatniego adresu w danej sieci, możliwych do wykorzystania adresów. Identyfikator hosta nie może składać się z samych zer, gdyż jest to adres sieci, w której znajduje się host. W przypadku adresacji bezklasowej ta zasada jest uogólniona do pierwszego adresu hosta. Aby spełniony był warunek unikalności całych adresów IP, identyfikator hosta nie może powtórzyć się w sieci. W przypadku przypadkowego nadania tego samego adresu IP w sieci, np. adresu interfejsu routera, wszystkie komputery w sieci będą próbowały wysłać do takiego mylnie zaadresowanego interfejsu pakiety. W wyniku takich zakłóceń może zostać całkowicie sparaliżowany transport pakietów.
Jeśli weźmiemy pod uwagę pulę adresów dla sieci 194.29.145.0 z netmaską 255.255.255.0, to zgodnie ze wzorem liczba dostępnych adresów wynosi 2^8 - 2, co daje 254 użyteczne adresy w zakresie dziesiętnym od 1 do 254. Adres 194.29.145.0 jest adresem sieci, zaś adres 194.29.145.255 jest adresem rozgłoszeniowym (ang. broadcast). Zwyczajowo nadaje się pierwszy poprawny identyfikator hosta interfejsowi routera obsługującego daną sieć.
Potrzeba co raz większej liczby adresów wymusiła potrzebę zarządzania dostępną pulą adresów. Problem ten szczególnie dotyczył adresów klasy C, która zakładała przydzielanie całej puli składającej się z 255 adresów. W przypadku, gdy sieć ta posiadała zaledwie kilkanaście hostów pozostałe ponad dwieście było niewykorzystanych. Jeszcze większa „rozrzutność” dotyczyła sieci klasy A, czy też B. Sytuacja odwrotna występowała w przypadku organizacji z dużą liczbą hostów. W tym przypadku istniała potrzeba używania większej puli adresów. W obu przypadkach wiązało się to z nieefektywnym wykorzystaniem przydzielonych adresów. Dodatkowym problemem były duże tablice routingu i związane z tym długie czasy przesyłania pakietów w sieciach.
Jednym ze sposobów, zaproponowanym w 1985 roku, było tworzenie podsieci. Zakres adresów hostów w danej sieci był dzielony na mniejsze podsieci z mniejszą liczbą hostów, w każdej z nowo utworzonych. Metoda ta wymagała „pożyczenia” bitów z części adresu przeznaczonej dla identyfikacji hosta dla zaadresowania podsieci. Szczegółowo zostanie ona omówiona w dalszej części wykładu. Innym sposobem rozwiązania problemu brakujących adresów było, zaproponowanie w dokumencie RFC 1009 (w 1987 roku), tworzenie podsieci o zróżnicowanej długości masek adresów (ang. Variable Length Subnet Masks (VLSM). Przydzielona danej organizacji pula adresów jest następnie dzielona wewnątrz niej na mniejsze porcje. Podział ten jest następnie niewidoczny z zewnątrz sieci danej organizacji. Jeszcze inne rozwiązanie polegało na wprowadzeniu bezklasowego routingu międzydomenowego - CIDR (ang. Classless Inter-Domain Routing). Metoda CIDR podobnie jak metoda VLSM pozwala na podział puli adresów na mniejsze porcje. Przy czym w odróżnieniu do metody VLSM, metoda CIDR polega na podziale puli dostępnych adresów przez Internet Registry dla dostawcy Internetu (ISP) najwyższego poziomu, poprzez poziom pośredni niski, aż do odbiorcy usług Internetowych. W metodzie CIDR informacje na temat masek sieci są przekazywane przez poszczególne routery w trakcie aktualizacji tablic routingu. Szczegółowo routing pakietów zostanie omówiony w innej części materiałów. Kolejnym sposobem, który może być stosowany w sieciach lokalnych jest mechanizm adresów prywatnych. Nie wymaga on praktycznie żadnych nakładów poza wyborem numeracji. Pakiety pochodzące z takich adresów będą odfiltrowywane przez routery. W przypadku adresów prywatnych, aby była możliwa komunikacja w Internecie, wprowadzono mechanizm tłumaczenia adresów prywatnych na publiczne, tzw. NAT (ang. Network Address Translation). Dzięki temu organizacjom wystarczy pojedynczy publiczny adres IP, w przypadku braku serwerów WWW, pocztowych i innych. Przedstawione sposoby zostaną omówione dokładniej w dalszej części wykładu.
W klasie A są to adresy z zakresu 10.0.0.0 - 10.255.255.255 W klasie B do dyspozycji jest pula adresów 172.16.0.0 - 172.31.255.255 W klasie C są to adresy 192.168.0.0 192.168.255.255
Dodatkowo stosując netmaski i zmiennej długości (VLSM) można te pule zmniejszać lub też zwiększać w zależności od potrzeb.
Przy maskach standardowych liczba bitów ustawionych na 1 na pozycjach najbardziej znaczących stanowi 8,16 lub 24 bity. W przypadku jeśli standardową netmaskę dla sieci klasy C (255.255.255) zmodyfikujemy przez pożyczenie jednego lub tez kilku bitów z części przeznaczonej na identyfikację hosta, to zamiast sieci, w której można zaadresować 254 hosty otrzymamy sieci w których można będzie zaadresować tylko 126 hostów. W przypadku działania odwrotnego - próby konsolidacji adresów pożyczamy bity z części sieciowej na adresację hostów. Tworzone w ten sposób adresy zapisujemy w skrócie poprzez numer sieci i liczbę bitów ustawionych na 1 w netmasce sieciowej. I tak jeśli pożyczymy 2 bity z adresu hosta z sieci 192.168.1.0 i przeznaczymy je na adresację sieci, to uzyskamy adres: 192.168.1.0/26, gdzie 26 oznacza maskę sieciowa z 26 bitami ustawionymi na 1 ( w zapisie dziesiętnym 255.255.255.192) Obie te czynności, czyli tworzenie podsieci i nadsieci zostaną omówione na przykładach w dalszej części wykładu.
Weźmy dla przykładu adres sieci 192.168.1.0 Standardowo w ramach takiej sieci mamy do dyspozycji 256 adresów, z których można wykorzystać 254 na zaadresowanie poszczególnych interfejsów. Załóżmy, że chcielibyśmy je wykorzystać w taki sposób, żeby rozdzielić całą pulę adresów na kilka mniejszych i przydzielić te adresy hostom, które znajdują się w 8 pracowniach komputerowych. Trzeba przy tym założyć, że w pracowniach tych będzie nie więcej niż 30 komputerów. Aby zaadresować 8 podsieci potrzeba 3 bity (2^3=8) bity te trzeba pożyczyć z części przeznaczonej na adresację hosta. Przy takich wymaganiach netmaska będzie miała 27 bitów, tzn. 11111111. 11111111. 11111111.11100000 i jej postać dziesiętna zapis. 255.255.255.224. Cały zakres adresów można opisać jako: 193.168.1.0/27 Przy użyciu takiej maski sieciowej adresy poszczególnych sieci będą miały postać: 192.168.1.0, 192.168.1.32, 192.168.1.64, 192.168.1.96, 192.168.1.128, 192.168.1.160, 192.168.1.192, 192.168.1.224 Ostatni adres będący adresem broadcastowym w każdej z tych sieci będzie miał postać: 192.168.1.31, 192.168.1.63, 192.168.1.95, 192.168.1.127, 192.168.1.159, 192.168.1.191, 192.168.1.224, 192.168.1.255 Odpowiednie pierwsze adresy użyteczne do zaadresowania hostów w tych sieciach będą następujące: 192.168.1.1, 192.168.1.33, 192.168.1.65, 192.168.1.97, 192.168.1.129, 192.168.1.161, 192.168.1.193, 192.168.1.225 Administratorzy często dokonują podziału sieci na mniejsze segmenty w celu zmniejszenia komunikatów rozgłoszeniowych w domenach.
Przy tworzeniu nadsieci pożycza się bity z części przeznaczonej na adresację sieci w celu zaadresowania większej liczby hostów. Załóżmy, że w danej sieci powinno się znaleźć 500 hostów. Do zaadresowania takiej liczby komputerów potrzebujemy 9 bitów (2^9 = 512). W przypadku sieci klasy C zachodzi potrzeba pożyczenia tego jednego dodatkowego bitu z części 3 oktetu adresu. Weźmy dla przykładu adres, który był rozpatrywany w przypadku tworzenia podsieci: 192.168.1.0 Widać, że ten adres sam nie wystarczy, żeby uzyskać sieć złożoną z 500 hostów. Aby uzyskać dodatkowy bit, netmaska tej sieci będzie miała postać: 11111111. 11111111. 11111110.00000000, co w zapisie dziesiętnym daje: 255.255.254.0 Zapis sieci w tym przypadku będzie wyglądał następująco: 192.168.0.0/23. Pierwszy użyteczny adres hosta w tej sieci będzie miał postać: 192.168.0.1, zaś adres rozgłoszeniowy będzie następujący: 192.168.1.255 Ważnym aspektem przy tworzeniu nadsieci, z punktu metody CIDR, jest wybieranie adresów sieci sąsiadujących w taki sposób, żeby sąsiadujące sieci (obsługiwane przez ten sam router) miały adresy o takich samych znaczących bitach. Umożliwia to późniejszą agregację tras przez routery. Router, który obsługuje trasę złożoną z sieci o zmiennej długości zbudowaną wg powyższych zaleceń rozgłasza daną zagregowaną trasę jedną podsiecią.
Załóżmy również, że jest to lokalny dostawca Internetu, który obsługuje zaledwie kilku klientów (maksymalnie do 6). Sam dostawca Internetu udostępnia na potrzeby jednego z klientów adres 192.168.132.29/29. Jak widać z długości netmaski interfejsu routera w podsieci tej znajduje się 8 innych adresów (32-29 bitów= 3 --> 2^3) , z czego 6 (2^3-2) są to adresy użyteczne. Zakres adresów w tej sieci, to 192.168.132.24...31/29. W ramach dostępnych adresów uzyskanych od ISP część z nich zostanie przyznanych na adresację łączy pomiędzy routerami, a część na obsługę hostów. Załóżmy, że firma ma dwie lokalizacje. Router obsługujący te sieci musi zatem łączyć się z poszczególnymi podsieciami w lokalizacjach poprzez interfeisy WAN. I tak pierwsze 16 adresów z dostępnej puli będzie obsługiwało jedną z lokalizacji. Aby to zrealizować wykorzystana zostanie pula adresów: 192.168.132.224-239. Aby zaadresować 16 hostów w tej sieci potrzebne są 4 bity. Zatem netmaska tej sieci będzie składała się z 28 bitów (32-4). Zatem całą tak wydzieloną pulę adresów można zapisać jako 192.168.132.224/28. Pierwszy użyteczny adres w tej lokalizacji będzie 192.168.132.225 z netmaską 255.255.255.240, zaś adres rozgłoszeniowy 192.168.132.239. Pozostałe 16 adresów zostanie podzielone w taki sposób, żeby obsłużyć drugą lokalizację, w której będzie maksymalnie 6 hostów i na obsługę 2 sieci rozległych. Zatem adresy z zakresu 192.168.132.240-247/29 będą obsługiwały drugą lokalizację. Do dyspozycji będzie 8 adresów zatem natmaska będzie 29 bitowa: 255.255.255.248 Pierwszy użyteczny adres hosta w tej sieci będzie: 192.168.132.241 zaś adres rozgłoszeniowy: 192.168.132.247. Pozostałe 8 adresów zostanie rozdzielonych na adresy interfesjów sieciowych łączących poszczególne lokalizacje z routerem, który je obsługuje. I tak jedno z łączy WAN będzie miało adresy: 192.168.132.248/30. Wystarczy to do zaadresowania 2 interfejsów routerów adresami: 192.168.132.249/30 oraz 192.168.132.250. Adres rozgłoszeniowy będzie 192.168.132.251, zaś maska sieciowa 255.255.255.252 Drugie z łączy WAN będzie miało adresy: 192.168.132.252/30. Wystarczy to do zaadresowania 2 interfejsów routerów adresami: 192.168.132.253/30 oraz 192.168.132.254/30. Adres rozgłoszeniowy będzie 192.168.132.255, zaś maska sieciowa 255.255.255.252
Zwiększenie przestrzeni adresowej z 2^32 (IPv4) do 2^128 (IPv6) oznacza przyrost możliwych do przypisania adresów z ok. 4,3x10^9 do ok. 3,4x10^38. W przeliczeniu na powierzchnię daje to ok. 6,7x10^17 adresów/mm^2 powierzchni Ziemi. Jest to więc bardzo duża liczba adresów, która powinna zapewnić swobodne korzystanie dla większości znanych zastosowań. Adres IPv6 zapisywany jest postaci heksadecymalnej. Preferowany jest zapis, w którym co 16 bitów (4 cyfry heksadecymalne) wstawiany jest separator w postaci dwukropka. Przykładem takiego adresu może być: 0432:5678:abcd:00ef:0000:0000:1234:4321. Notacja pozwala opuszczać wiodące zera, zatem adres ten można zapisać również jako: 432:5678:abcd:ef:::1234:4321 Specyfikacja pozwala również w przypadku występowania mieszanej infrastruktury (IPv6 z Ipv4) na podkreślenie tego faktu poprzez zapis ostatnich 32 bitów podobnie jak to było zapisywane w wersji IPv4, np.: 0:0:0:0:0:0:13.1.68.3 0:0:0:0:0:FFFF:129.144.52.38 lub wersji skróconej:
Ze względu na fakt, że spora część ruchu odbywa się w dalszym ciągu w oparciu o IPv4 pakiety IPv6 są tunelowane wewnątrz IPv4.
- kierowanego (ang. Unicast) - identyfikator pojedynczego interfesju. Pakiety wysyłane na ten adres trafiają do określonego w nim hosta - uniwersalnego (ang. Anycast) - identyfikator zbioru interfejsów, które zwykle należą do różnych węzłów sieci. Pakiet wysłany na ten adres jest dostarczany tylko na jeden z interfejsów z tego zbioru. Zwykle jest to adres interfejsu najbliższego w rozumieniu metryki (Pojęcie metryki będzie omawiane w module poświęconym routingowi). - grupowego (ang. Multicast) - podobnie jak w przypadku poprzednim: identyfikator jest przypisany do zbioru interfejsów. Pakiet zawierający ten adres jest dostarczany na każdy z interfejsów należących do zbioru.
fe80::/10 – adresy typu "link-local" wykorzystywane wewnątrz sieci lokalnych, w procesie autokonfiguracji. ff00::/8 – adresy multicast
Omówiony został również format adresów IPv6. Adresowanie w warstwie sieciowej (L3) jest jednym z kluczowych zagadnień związanych z przesyłaniem pakietów przez routery. Informacjom na temat routingu poświęcony będzie osobny moduł.