Rozdział 2
Adresy w sieci złożonej
Podstawowym wymaganiem sieci jest obecność wydajnej architektury adresów, przystosowanej do wymagań wszystkich użytkowników sieci. Może ona przybierać różne formy. Adresy sieciowe występują zawsze w formie numerycznej, ale mogą być wyrażane w postaci binarnej (dwójkowej), decymalnej (dziesiętnej), a nawet heksadecymalnej (szesnastkowej). Architektura adresów może być wysoce skalowalna lub celowo zaprojektowana tak, aby obsłużyć małe środowisko użytkowników.
Poniższy rozdział przedstawia architekturę adresów stosowaną przez protokół IP oraz wyjaśnia podstawowe koncepcje, takie jak: podsieci, adresy i maski podsieci, bezklasowy routing (CIDR) i maski podsieci o zmiennej długości (ang. VLSM - Variable-Length Subnet Masking).
Architektura adresów internetu
Architektura adresów Internetu zaimplementowana jest w protokole IP. Powstanie schematu adresowania IP datuje się na początki sieci komputerowych. W tym czasie Internet był małą pseudopubliczną siecią łączącą parę uniwersytetów, organizacji badawczych i urzędów państwowych. Każde z tych ciał posiadało ograniczoną infrastrukturę sieciową składającą się zazwyczaj z niewielu więcej komputerów niż jeden typu mainframe lub minikomputerów opartych na ITIVIX-ie. Komputery PC nie były ujednolicone, a sieć lokalna dopiero zaczynała „raczkować". Z tych powodów sieć złożona nie potrzebowała rozbudowanej architektury.
Internet otrzymał odpowiednio prostą lecz zwartą dwupoziomową strukturę. Na górze znajduje się sam Internet, a na dole zgromadzone są sieci połączone ze sobą. Strukturę tę ilustruje rysunek 2.1.
Rysunek 2.1. Struktura Internetu
Taka struktura, prosta lecz skuteczna bardzo dobrze obsługuje rzesze użytkowników. Rozgłaszanie adresów sieciowych
Każdy z komputerów w Internecie wymaga unikatowej identyfikacji. W dwupoziomowej strukturze Internetu wymusza to stosowanie adresów składających się z dwóch części:
adresu sieci
adresu hosta.
Razem te dwa typy adresów mogą jednoznacznie zidentyfikować każdą maszynę podłączoną do Internetu. Dla małych sieci wystarczające mogą być tylko adresy hostów, tak jak dzieje się to w przypadku sieci lokalnych. Jednak adresy sieci niezbędne są w przypadku systemów końcowych różnych sieci do skomunikowania się ze sobą. Unikatowa kombinacja adresu sieci i hosta umożliwia uzyskanie dostępu do odpowiedniej maszyny podłączonej do sieci złożonej.
Internet używa obu tych adresów. Systemy końcowe, które muszą uzyskać dostęp do komputera z innej sieci, adresują swoje datagramy pełnym adresem zawierającym numery sieci i hosta. Routery zakładają, że sieć docelowa będzie wiedzieć, w jaki sposób dostarczyć datagramy do wszystkich systemów końcowych w obrębie swojej domeny. Dlatego zadaniem routerów internetowych jest jedynie prześledzenie wszystkich tras do każdej znanej sobie sieci.
Aby lepiej zrozumieć koncepcję rozgłaszania adresów sieciowych, użyty zostanie fikcyjny dwuczłonowy adres. Pierwsza część adresu identyfikuje sieć za pomocą pojedynczej litery, natomiast druga część identyfikuje system końcowy poprzez nadanie mu pojedynczego numeru. Te elementy adresu stosują się do konwencji adresów IP i oddzielone są od siebie kropką. I tak na przykład adres A.2 oznacza system 2 w sieci A.
Postawienie routerom zadania prześledzenia tras do każdego systemu lub hosta przez całą sieć Internet spowodowałoby zbyt duże ich obciążenie, a w efekcie niewydajną pracę. Zamiast tego, twórcy Internetu i IP zdecydowali się zastosować architekturę adresów składającą się z dwóch części: adresu sieci i adresu hosta. Praktycznym skutkiem przyjęcia takiej struktury było to, że routery mogły znacznie zredukować swoje obciążenie poprzez wyszukiwanie tras tylko do odpowiednich adresów sieci.
W celu lepszego zrozumienia rzeczy należy wyobrazić sobie następującą sytuację: dane są trzy sieci komputerowe A, B, C i każda posiada niewielką liczbę ponumerowanych hostów. Każdemu routerowi w jego numerze sieci przyporządkowany jest adres hosta nr 1, czyli router, który łączy sieć A z Internetem posiada adres A.1.
Routery, które obejmują szkielet Internetu, mogłyby wyznaczyć trasy do każdego hossa z rysunku 2.1. Tabela 2.1 prezentuje w sposób uproszczony ich tablice routingu.
Adres sieci |
Adres hosta |
Brama docelowa |
A |
2 |
A.1 |
|
3 |
A.1 |
B |
2 |
B.1 |
|
3 |
B.1 |
C |
2 |
C.1 |
|
3 |
C.1 |
|
4 |
C.2 |
Tabela 2.1. Tabela routingu opartego na hostach
Jak widać z tabeli 2.1, bramy docelowe (ang. destination gateway) identyfikowane przez routery nie różnią się od siebie adresami hostów. Dlatego śledzenie tras do indywidualnych hostów (znane jako routing oparty na hostach) przysporzyłoby routerom jedynie dodatkowej pracy. Natomiast bramy docelowe różnią się adresem sieci. Dlatego nie zajmując się trasami do każdego hosta routery internetowe zmniejszają swoje obciążenie, zwiększają efektywność działania. Routery mogą rozgłaszać trasy do różnych sieci, bez wpływu na swoją zdolność dostarczania datagramów. Tabela 2.2 demonstruje, w jaki sposób rozgłaszanie tras sieciowych redukuje rozmiar tablicy routingu.
Adres sieci Przesyłanie datagramów do |
A A.1 |
B B.1 |
C C.1 |
Tabela 2.2. Tabela routingu opartego na sieciach
Zredukowana tablica routingu opartego na sieciach nie wpływa na zdolność routerów do przesyłania do celu datagramów. Rozgłaszanie tras sieciowych wpływa na szereg innych rzeczy, na przykład usprawnia działanie routerów. Im więcej istnieje pozycji w tablicy routingu, tym dłużej trwa określenie miejsca przeznaczenia datagramu, który do tego czasu musi być buforowany w pamięci routera. Dlatego im większa jest tablica routingu, tym większe wymagania sprzętowe stawiane są routerom. Dotyczy to szczególnie wielkości pamięci RAM i szybkości procesora. Wszystko to prowadzi do znacznego wzrostu kosztu routera.
Blisko powiązana z jakością działania routerów, lecz znacznie ważniejsza jest skalowalność. Skalowalność Internetu została zapewniona przez jego architekturę adresów. Architekci Internetu przewidzieli potrzebę jego ciągłej rozbudowy i opracowali sposób adresowania, który jest jednocześnie elastyczny i umożliwiający dodawanie nowych elementów. Sposób ten został zaimplementowany właśnie w IP.
Adresowanie IP
IETF (The Internet Engineering Task Force), twórcy Internetu i IP zdecydowali się zarówno dla sieci, jak i hostów stosować przyjazny dla maszyn adres numeryczny. Dlatego każda sieć w drugiej warstwie Internetu posiada własny unikatowy numer sieci, a administratorzy z kolei powinni zadbać, aby wszystkie hosty miały swój unikatowy numer.
Oryginalna wersja IP, IPv4, używa 32-bitowego adresu binarnego. Każdy adres podzielony jest na cztery 8-bitowe numery oddzielone kropkami. Każdy z takich 8-bitowych numerów nazywany jest oktetem. Numery binarne są bardzo przyjazne maszynom, ale nie użytkownikom. Dlatego zostały opracowane normy w celu umożliwienia używania bardziej intuicyjnego systemu dziesiętnego w adresowaniu sieciowym. Ponieważ cała architektura adresów IP opiera się na systemie binarnym i dziesiętnym konieczne jest zrozumienie relacji pomiędzy nimi. Relacja ta przedstawiona jest w podrozdziale „System binarny a system dziesiętny".
32-bitowa architektura adresów IPv4 oznacza, że Internet dysponuje liczbą 4 294 967 296 możliwych adresów.
Uwaga
Nowa wersja IP jest bliska zakończenia. Wersja ta, IPv6, będzie cechować się odmienną architekturą adresów opartą na 128 bitach. Ponieważ szerokie stosowanie IPv6 może być jednak jeszcze kwestią kilku lat, w tej książce wszystkie prezentowane przykłady używają architektury adresów IPv4. Szczegółowo IPv6 przedstawiony jest w rozdziale 5.
System binarny a system dziesiętny
W liczbie binarnej wartość reprezentowana przez 1 jest ściśle określona jej pozycją w szeregu, przeciwnie niż w powszechnie znanym systemie dziesiętnym, w którym prawa skrajna cyfra określa jedności, druga określa dziesiątki, trzecia setki itd.
System dziesiętny dysponuje dziesięcioma cyframi do wyrażania różnych wartości (od 0 do 9), natomiast system binarny dysponuje tylko dwiema cyframi 0 i 1. Ich pozycja określa wartość, jaką oznaczają. Skrajna prawa pozycja równa jest 1. Następna pozycja na lewo równa jest 2, następna 4, 8 itd. Każda pozycja na lewo jest dwa razy większa od swojej poprzedniczki.
Wartość dziesiętna liczby binarnej obliczana jest poprzez zsumowanie wartości dziesiętnych reprezentowanych przez każdą jej pozycję, w której występuje 1. Każdy oktet adresu IPv4 (jest ich łącznie cztery) może osiągnąć maksymalną wartość 255 w systemie dziesiętnym. Liczba binarna równa 255 zawiera 8 bitów lub inaczej same jedynki. Tabela 2.3 demonstruje związek między liczbą binarną i dziesiętną.
Cyfra |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
Binarna |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Dziesiętna wartość pozycji |
128 |
64 |
32 |
16 |
8 |
4 |
2 |
1 |
Tabela 2.3. Wartość binarna (11111111) i dziesiętna (255) oktetu
Jak widać z tabeli 2.3, każdy bit w adresie binarnym wypełniony jest jedynką. Dlatego wartość dziesiętną liczby binarnej można wyznaczyć sumując wartości dziesiętne z ośmiu kolumn: 128+64+32+16+8+4+2+1=255.
Tabela 2.4 przedstawia inny przykład konwersji liczby binarnej na dziesiętną. Piąta cyfra od prawej strony jest zerem. Pozycja ta reprezentuje liczbę dziesiętną 16. Dlatego wartość dziesiętna liczby binarnej jest mniejsza od 255 0 16: 128+64+32+8+4+2+1=239.
Cyfra |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
Binarna |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
Dziesiętna |
128 |
64 |
32 |
16 |
8 |
4 |
2 |
1 |
Tabela 2.4. Wartość binarna (11101111) i dziesiętna (239) oktetu
Taki związek pomiędzy liczbami binarnymi i dziesiętnymi jest podstawą całej architektury adresów IP. Należy pamiętać, że w każdym adresie IPv4 znajdują się cztery oktety. Każdy inny aspekt architektury adresów IP, m.in. maski podsieci, VLSM, CIDR, oparty jest właśnie na tych systemach numerycznych.
Formaty adresów IPv4
IP został uznany za standard w 1981 roku. Jego architektura adresów wybiegła w przyszłość o tyle, o ile było to możliwe przy ówczesnym stanie informatyki. Podstawowy adres IP był 32-bitową liczbą binarną, która podzielona została na cztery 8-bitowe liczby binarne albo innymi słowy oktety.
Aby ułatwić użytkownikom stosowanie takich adresów, adresy binarne IP zostały przekształcone na bardziej znany system dziesiętny. Każdy z czterech oktetów w adresie IP reprezentowany jest liczbą dziesiętną z przedziału 0-255 i oddzielony jest od siebie kropką (.). Taki zapis znany jest jako format punktowo-dziesiętny. Najniższą możliwą wartością, która może być ustawiona w adresie IPv4 jest 0.0.0.0, a najwyższą 255.255.255.255. Jednakże obie te wartości są zarezerwowane i nie mogą być przypisane do indywidualnych systemów końcowych. Aby poznać powód takiego zastrzeżenia, należy prześledzić sposób, w jaki IETF zaimplementował tę podstawową strukturę adresów w swoim protokole.
Punktowo-dziesiętny adres IPv4 został podzielony na klasy w celu dostosowania go do dużych, średnich i małych sieci. Różnice pomiędzy klasami wynikają z liczby bitów przeznaczonych dla adresu sieci w stosunku do adresu hosta. Istnieje pięć klas adresów IP określanych alfabetycznie pojedynczą literą: klasa A, B, C, D i E. Każdy adres składa się z dwóch części, adresu sieci i adresu hosta. Pięć klas reprezentuje różne kompromisy pomiędzy liczbą możliwych sieci a liczbą hostów.
Adresy klasy A
Klasa A adresu IPv4 została zaprojektowana z myślą o ogromnych sieciach komputerowych. Architektura adresów została opracowana tak, aby uzyskać jak największą liczbę możliwych adresów hostów. Jednak przy tym silnie ograniczona jest liczba możliwych do zdefiniowania sieci klasy A.
Adres IP klasy A używa jedynie pierwszego oktetu, aby wskazać adres sieci. Pozostałe trzy oktety przeznaczone są dla adresów hostów. Pierwszy bit adresu klasy A jest zawsze 0. Ogranicza to zakres dostępnych adresów do najwyżej 127, co jest sumą 64+32+16+8+4+2+1. Skrajny lewy bit wartości dziesiętnej 128 jest nieobecny w tym równaniu. Dlatego może być tylko 127 możliwych sieci IP klasy A.
Ostatnie 24 bity adresu klasy A reprezentują dostępne adresy hostów. Zakres możliwych adresów sieci klasy A zawiera się w przedziale od 1.0.0.0 do 126.0.0.0. Należy zauważyć, że tylko pierwszy oktet niesie ze sobą informację o numerze adresu sieci. Pozostałe trzy używane są do tworzenia unikatowych adresów hostów w obrębie każdej z sieci. Jako takie są zerowane, kiedy opisywany jest zakres numerów sieci.
Uwaga
Technicznie adres 127.0.0.0 jest również adresem sieciowym klasy A, jednakże zarezerwowany jest do testów i nie może być przypisany żadnej sieci.
Każdy adres klasy A zapewnia 16 777 214 unikatowych adresów hostów. Wartość ta obliczana jest w następującym działaniu: 2z4-2. Odjęcie 2 jest niezbędne, ponieważ IP rezerwuje sobie adres składający się z samych zer na identyfikację sieci i adres składający się z samych jedynek na transmisję rozgłoszeniową, tzw. broadcast, w obrębie sieci. Rysunek 2.2 prezentuje podział oktetów na sieć i hosta.
|
Porcja sieci |
Porcja hosta |
||
Oktet |
1 |
2 |
3 |
4 |
Rysunek 2.2. Adres klasy A
Adres klasy B
Adresy klasy B zostały opracowane dla dużych i średnich sieci. Zakres dostępnych adresów sieci klasy B to 128.1.0.0 do 191.254.0.0.
Adres IP klasy B używa dwóch oktetów, aby określić adres sieci. Pozostałe dwa przeznaczone są dla adresów hostów. Pierwsze dwa bity pierwszego oktetu ustawiane są na 10. Pozostałych sześć bitów może przyjmować dowolnie cyfry 0 i 1. Matematycznie ogranicza to dopuszczalny zakres przestrzeni adresu klasy B do 191, co jest sumą 128+32+16+8+4+2+1.
Ostatnie 16 bitów (dwa oktety) identyfikuje potencjalne adresy hostów. Każdy adres klasy B zapewnia uzyskanie 65 534 unikatowych adresów hostów. Liczba ta otrzymywana jest w następującym działaniu: 216- 2 (dwie wartości zarezerwowane przez IP). Jednocześnie może być zdefiniowanych tylko 16 382 sieci klasy B.
Rysunek 2.3 prezentuje podział oktetów na sieć i hosta.
|
Porcja sieci |
Porcja hosta |
|
|
Oktet |
1 |
2 |
3 |
4 |
Rysunek 2.3. Adres klasy B
Adres klasy C
Adres klasy C jest najczęściej używaną klasą adresu IPv4. Został przewidziany dla wielu małych sieci komputerowych. Może być uważany za odwrotność adresu klasy A, gdyż używa trzech oktetów dla adresowania sieci i tylko jednego dla numerowania hostów.
Pierwsze trzy bity pierwszego oktetu adresu klasy C ustawiane są na 110. W ten sposób początkowe dwa bity oznaczają wartość 192 (128+64). Jest to dolna granica zakresu adresu klasy C. Trzeci bit równa się 32, a ustawienie go na 0 określa górną granicę zakresu adresu. Niewykorzystanie trzeciej cyfry liczby binarnej ogranicza maksymalną wartość tego oktetu do 223 (255-32). Dlatego zakres dostępnych adresów sieci klasy C to 192.0.1.0 - 223.255.254.0.
Ostatni oktet używany jest do adresowania hostów. Każdy adres klasy C udostępnia teoretycznie maksymalnie 256 unikatowych adresów hostów (0-255). Wykorzystywane są tylko 254, ponieważ adresy 0 i 255 nie są numerami hostów. Może być 2 097 150 różnych numerów sieci klasy C.
Uwaga
W świecie adresowania IP 0 i 255 są zarezerwowanymi wartościami adresów hostów. Adresy IP, których wszystkie bity adresu hosta ustawione są na 0, identyfikują sieć lokalną, natomiast gdy te bity ustawione są na 255, to takie adresy IP używane '' są do transmisji rozgłoszeniowej do wszystkich systemów końcowych w obrębie numeru sieci.
Rysunek 2.4 prezentuje podział oktetów na sieć i hosta.
|
Porcja sieci |
Porcja hosta |
||
Oktet |
1 |
2 |
3 |
4 |
Rysunek 2.4. Adres klasy C
Adres klasy D
Adresy klasy D zostały opracowane z myślą o umożliwieniu rozgłaszania do grup (ang. multicast) w sieci IP. Mechanizmy multicastu klasy D znajdują ograniczone zastosowanie. Adres multicastu jest unikatowym adresem sieciowym, który kieruje pakiety z adresem docelowym do pewnej predefiniowanej grupy adresów IP. Dlatego też pojedyncza stacja może jednocześnie transmitować pojedynczy ciąg datagramów do wielu odbiorców. W ten sposób została wyeliminowana konieczność tworzenia osobnych ciągów datagramów dla każdego punktu docelowego. Routery, które obsługują mechanizmy multicastu, powielają datagramy i przesyłają je do wcześniej określonych systemów końcowych. Multicast jest od dłuższego czasu uważany za niezbędną funkcję sieci IP, ponieważ znacznie redukuje w niej natężenie ruchu.
Adres klasy D jest jak i inne adresy ograniczony matematycznie. Pierwsze cztery bity muszą być ustawione na 1110. Ustawienie trzech początkowych bitów pierwszego oktetu na jedynki oznacza, że adres zaczyna się od 224 (128+64+32). Niewykorzystywanie czwartego bitu ogranicza maksymalną wartość adresu klasy D do 239 (128+64+32+8+4+2+1). Dlatego zakres adresu klasy D to 224.0.0.0 - 239.255.255.254.
Powyższy zakres może wydawać się dziwny, ponieważ jego górna granica określona jest wszystkimi czterema oktetami. Pierwotnie oznaczałoby to, że oktety numerów sieci i hostów byłyby używane do oznaczenia numeru sieci. Adres klasy D nie jest używany do wymiany danych między różnymi sieciami i ich indywidualnymi systemami końcowymi. Adresy klasy D używane są natomiast do dostarczania w obrębie sieci datagramów do grup systemów końcowych. Dlatego też zbędne jest rezerwowanie oktetów czy bitów adresu na adres sieci i hostów. Zamiast tego cała przestrzeń adresowa wykorzystywana jest do identyfikacji grupy adresów IP (klasy A, B lub C).
Rysunek 2.5 prezentuje podział oktetów na sieć i hosta.
|
Porcja hosta |
|||
Oktet |
1 |
2 |
3 |
4 |
Rysunek 2.5. Adres klasy D
Adres klasy E
Adres klasy E został zdefiniowany i zarezerwowany na potrzeby badań IETF i nie jest używany przez Internet. Pierwsze cztery bity zawsze ustawiane są na 1111 i dlatego zakres dostępnych adresów to 240.0.0.0 - 255.255.255.255.
Niewydajność systemu
Ogromna przepaść pomiędzy poszczególnymi klasami adresów doprowadziła do marnowania przez lata znacznej liczby potencjalnych adresów. Przykładowo, średniej wielkości firma potrzebuje 300 adresów IP. Adres klasy C oferujący maksymalnie 254 adresy jest tu nieodpowiedni. Zastosowanie dwóch takich adresów zapewni wystarczającą ich liczbę lecz spowoduje konieczność wykorzystania oddzielnych domen. To z kolei wpłynie na zwiększenie rozmiaru tablic routingu: po jednej tablicy wymagane jest dla każdej przestrzeni adresowej, nawet jeśli należą do tej samej organizacji.
Alternatywą jest zastosowanie adresu klasy B, który zapewnia potrzebną liczbę adresów w pojedynczej domenie, ale nie korzysta z pozostałych 65 234 adresów. Zbyt często klasa B była w ten sposób wykorzystywana, gdy sieć zawierała więcej niż 254 hosty i dlatego znacznie szybciej niż inne klasy uległa wyeksploatowaniu.
Każda organizacja, która chciała otrzymać adres, po prostu o niego występowała i nikt nie podejmował prób weryfikacji rzeczywistej takiej potrzeby. W ten sposób wiele organizacji zawłaszczało sobie adresy IPv4 jako zabezpieczenie na wypadek nieprzewidzianych potrzeb w przyszłości.
Obecnie taki proceder został już zatrzymany. Zaprojektowano liczne rozszerzenia IP, z myślą o polepszeniu wydajności 32-bitowej przestrzeni adresowej, z którą mogą być użyte. Trzy najważniejsze z nich to:
maski podsieci
VLSM
CIDR.
Są to różne mechanizmy zaprojektowane do rozwiązywania przeróżnych problemów. Maski podsieci, zwykłe i o zmiennej długości (VLSM) zostały opracowane w celu przystosowania wielorakich sieci logicznych, które mogą istnieć w obrębie jednego fizycznego miejsca, do Internetu. Natomiast bezklasowy routing (CIDR) stworzono, aby wyeliminować wszelkie niewydajne elementy charakterystyczne dla oryginalnych klas adresów. Umożliwia to routerom wydajniejsze grupowanie różnych adresów sieciowych w jedną pozycję tablicy routingu. Należy zauważyć, że oba mechanizmy powinny być wspólnie wykorzystywane.
Zarządzanie przestrzenią adresową
Stabilność Internetu bezpośrednio zależy od unikatowości publicznie stosowanych adresów sieciowych. Dlatego została powołana organizacja IANA (Internet Assigned Numbers Authority), która zarządza wolnymi adresami IPv4 i strzeże, aby publicznie stosowany adres nie uległ powieleniu. Taka duplikacja adresu spowodowałaby niestabilność Internetu: problemy z routingiem i obniżenie zdolności do dostarczania datagramów właściwym sieciom.
Narodziny podsieci
Pierwotna dwupoziomowa hierarchia Internetu zakładała, że w każdym miejscu jest pojedyncza sieć i wymagane tylko pojedyncze połączenie z Internetem. Było to bezpieczne założenie. Jednak z czasem gdy informatyka okrzepła, twierdzenie, że organizacje zadowolą się pojedynczą siecią i pojedynczym łączem z Internetem, nie jest już zgodne z prawdą.
W momencie gdy w każdej lokalizacji Internetowej zaczęto tworzyć liczne sieci komputerowe, stało się jasne, że potrzebne są mechanizmy rozróżniające logiczne sieci powstające w drugiej warstwie Internetu. W przeciwnym wypadku nie byłoby właściwego i wydajnego sposobu routingu danych do odpowiednich systemów końcowych w miejscach z wieloma sieciami. Ilustruje to rysunek 2.6.
Rysunek 2.6. Wpływ wielu sieci na strukturę Internetu
Jednym z rozwiązań było nadanie każdej logicznej sieci lub podsieci jej własnego zakresu adresu IP. Jednak byłoby to nieefektywnym wykorzystaniem przestrzeni adresowej IP, ponieważ w krótkim czasie zostałby wykorzystany cały zakres adresu. Poza tym wpłynęłoby to na poszerzenie tablic routingu, gdyż każda sieć wymagałby własnego w tablicy. Znacznie lepszym rozwiązaniem okazało się zorganizowanie sieci logi w sposób hierarchiczny i routing pomiędzy nimi. Miejsca z licznymi sieciami, z widzenia Internetu powinny być traktowane jak pojedyncza sieć. Dlatego powinny się wspólnym zakresem adresu IP i posiadać własny, unikatowy zakres numerów podsieci.
Podsieci
W środku lat osiemdziesiątych opracowane zostały dokumenty, które proponowały środki do rozwiązania problemu rozrastania się sieci i dwupoziomowej hierarchii adresowania IP. Rozwiązanie to zostało nazwane podsiecią. Koncepcja podsieci opiera się na potrzebie wprowadzenia trzeciego poziomu Internetu. Rezultatem dojrzewania technologii sieciowych stało się to, że duże organizacje zaczęły wykorzystywać wiele sieci. Najczęściej były to sieci lokalne, które można traktować właśnie jak podsieci.
W takim środowisku wielu sieci każda podsieć łączy się z Internetem przez wspólny punkt - muter. Szczegóły dotyczące środowiska sieciowego są dla Internetu sprawą mało ważną. Składają się one na sieć prywatną, która powinna być zdolna do dostarczania własnych datagramów. Dlatego Internet zainteresowany jest jedynie tym, jak dotrzeć do routera bramowego (łączącego sieć z Internetem). Wewnątrz sieci prywatnej część adresu IP zarezerwowanego dla hosta może być podzielona w celu identyfikacji podsieci.
Podsieci umożliwiają numerowi sieci adresu IP każdej klasy (A, B i C) podział na I z kolei mniejsze numery sieci. Obecnie adres IP podsieci składa się z trzech części:
adres sieci
adres podsieci
adres hosta.
Adresy podsieci i hosta wygospodarowane są z części oryginalnego adresu IP przeznaczonej na adres hosta. Dlatego możliwość tworzenia podsieci bezpośrednio zależy od używanego adresu IP. Im więcej bitów w adresie IP przeznaczonych jest na adres hosta, tym więcej można stworzyć podsieci i zidentyfikować hostów. Liczba podsieci zmniejsza liczbę hostów, którą można zaadresować. W efekcie aby móc identyfikować numery podsieci z adresu hosta, trzeba zabrać odpowiednią liczbę bitów. Podsieci identyfikowane są pseudo adresem IP, który znany jest jako maska podsieci.
Maska podsieci jest 32-bitowym binarnym numerem, który można wyrazić w formie punktowo-dziesiętnej. Maska jest stosowana w celu poinformowania systemów końcowych (m.in. routery i inne hosty) w sieci o tym, ile bitów adresu IP używanych jest do identyfikacji sieci i podsieci. Bity te nazywane są rozszerzonym prefiksem sieciowym. Pozostałe bity identyfikują hosty w obrębie podsieci. Bity maski, które identyfikują numer sieci, ustawiane są na 1, a bity hosta na 0 ; podstawieniu jedynek zamiast zer wynosi 64 w systemie dziesiętnym. Dlatego możliwa jest tylko unikalna identyfikacja 64 urządzeń w obrębie podsieci, a tak naprawdę po odjęciu dwóch zarezerwowanych adresów pozostaje możliwość identyfikacji 62 urządzeń. Pierwszy numer hosta w podsieci jest zawsze zarezerwowany na samoidentyfikację podsieci. Natomiast ostatni używany jest dla broadcastu IP w podsieci. Dlatego zawsze należy pamiętać o odjęciu dwóch numerów hostów od maksymalnej ich liczby, aby otrzymać maksymalną liczbę dostępnych do użycia adresów hostów w podsieci.
Jednakże liczba dostępnych podsieci zależy od wybranej klasy adresu. Każda klasa rezerwuje różną ilość bitów dla numeru sieci, a co za tym idzie, oferuje różną ilość bitów, które mogą być użyte do podsieci. Tabela 2.6 demonstruje zależność pomiędzy liczbą podsieci a liczbą hostów dla każdej z nich, które mogą być wydzielone z adresu klasy B. Adres klasy B wykorzystuje 16 bitów na numer sieci i 16 na identyfikację hosta. Przeglądając tabelę 2.6 należy zauważyć, że najmniejszą liczbą bitów, którą można przypisać prefiksowi sieciowemu, jest 2, a największą 14. Powód jest prosty - prefiks składający się z jednego bitu pozwala na zdefiniowanie dwóch numerów podsieci 0 lub 1. Zasady dla podsieci zabraniają używania adresów złożonych z samych zer lub jedynek, ponieważ te adresy są zarezerwowane. Dlatego 1-bitowy prefiks jest nieużyteczny w adresowaniu podsieci.
Podobnie, 2-bitowy prefiks daje tylko dwa możliwe do wykorzystania adresy podsieci. Dla 2-bitowego pola adresu podsieci możliwe są tylko następujące kombinacje: 00, 01, 10 i 11. Pierwsza i ostatnia jest zarezerwowana, co pozostawia tylko 01 i 10 dla identyfikacji podsieci.
Oczywistym jest fakt, że im więcej bitów przypisanych jest do identyfikacji numerów podsieci, tym mniej ich pozostaje na identyfikację hostów i odwrotnie.
Adres klasy C może również zawierać numery podsieci. Ponieważ 24 bity przypisane są dla adresowania sieci, tylko 8 bitów pozostaje do podziału pomiędzy adresy podsieci i hostów. Prezentuje to tabela 2.7.
Liczba bitów w prefiksie sieciowym |
Maska podsieci |
Liczba możliwych do użycia adresów podsieci |
Liczba możliwych do użycia adresów hostów w podsieci |
2 |
255.255.192.0 |
2 |
16 382 |
3 |
255.255.224 |
6 |
8190 |
4 |
255.255.240.0 |
14 |
4096 |
5 |
255.255.248.0 |
30 |
2 046 |
6 |
255.255.252.0 |
62 |
1022 |
7 |
255.255.254.0 |
126 |
510 |
8 |
255:255.255.0 |
254 |
254 |
9 |
255.255.255:128 |
510 |
126 |
10 |
255.255. 255.192 |
1022 |
62 |
11 |
255.255. 255.224 |
2 046 |
30 |
12 |
255.255. 255.240 |
4 096 |
14 |
13 |
255.255. 255.248 |
8190 |
6 |
14 |
255.255. 255.252 |
16 382 |
2 |
Tabela 2.6. Podsieci w adresie klasy B
Liczba bitów w prefiksie sieciowym |
Maska podnieci |
Liczba możliwych do użycia adresów podnieci |
Liczba możliwych do użycia adresów hostów w podsieci |
2 |
255.255.192.0 |
2 |
62 |
3 |
255.255.224.0 |
6 |
30 |
4 |
255.255.240.0 |
14 |
14 |
5 |
255.255.248.0 |
30 |
6 |
6 |
255.255.252.0 |
62 |
2 |
Tabela 2.7. Podnieci w adresie klasy C
Przykład podnieci
Podnieci są prawdopodobnie najtrudniejszym do pojęcia aspektem architektury adresów IP. Dzieje się tak dlatego, że nabierają one sensu w momencie posługiwania się systemem binarnym, który nie jest intuicyjnie zrozumiały. Przykładowo, do dyspozycji jest adres klasy C 193.168.125.0. Jest to adres bazowy, z którego należy wydzielić sześć podsieci. W takim przypadku wymagane są przynajmniej trzy bity z ośmiobitowego adresu hosta, aby stworzyć unikatowy rozszerzony prefiks sieciowy dla każdej z sześciu podnieci. Są to następujące adresy: 001, 010, 011, 100, 101 i 110. W ten sposób ostatni oktet został podzielony: 3 bity zostały dodane do numeru sieci, aby uformować rozszerzony prefiks sieciowy, a pozostałe pięć używanych jest do identyfikacji hostów. Tabela 2.8 pokazuje sposób tworzenia podnieci.
W tabeli 2.8 rozszerzony prefiks sieciowy (który składa się z adresu sieci IP i adresu podsieci) oznaczony jest tłustą czcionką. Adres podsieci pisany jest pogrubioną kursywą, natomiast adres hosta normalną czcionką i oddzielony jest myślnikiem. Ułatwia to zrozumienie, w jaki sposób podstawowy adres sieciowy IP dzielony jest na podsieci.
Nr sieci |
Adres binarny |
Adres dziesiętny |
Baza |
11000000.101010001.01111101.00000000 |
193.168.125.0 |
Podsieć 0 |
11000000.101010001.01111101. 000-00000 |
193.168.125.0 |
Podsieć 1 |
11000000.101010001.01111101. 001-00000 |
193.168.125.32 |
Podsieć 2 |
11000000.101010001.01111101. 010-00000 |
193.168.125.64 |
Podsieć3 |
11000000.101010001.01111101. 011-00000 |
193.168.125.96 |
Podsieć 4 |
11000000.101010001.01111101. 100-00000 |
193.168.125.128 |
Podsieć5 |
11000000.101010001.01111101. 101-00000 |
193.168.125.160 |
Podsieć 6 |
11000000.101010001.01111101. 110-00000 |
193.168.125.192 |
Podsieć7 |
11000000.101010001.01111101. 111-00000 |
193.168.125.224 |
Tabela 2.8. Formowanie podsieci
Każdy numer podsieci określany jest przez pierwsze trzy bity ostatniego oktetu. Odpowiednio 128, 64 i 32. Początkowy adres IP (dziesiętny) dla każdej podsieci określany jest w czwartej kolumnie i różni się zawsze iloczynem 32. Wynika to ze znaczenia skrajnego prawego bitu numeru podsieci.
W każdej podsieci hosty określane są pozostałymi pięcioma bitami w ostatnim oktecie. Dlatego istnieją tylko 32 możliwe kombinacje zer i jedynek, a naprawdę dopuszczalnych jest 30 adresów hostów w każdej podsieci, gdyż maksymalna i minimalna wartość jest zarezerwowana. I tak na przykład pierwszym hostem zdefiniowanym w podsieci nr 6 byłoby urządzenie z adresem IP 193.168.125.193, a ostatnim możliwym do określenia urządzenie 193.168.125.223.
Uwaga
Podsieci 0 i 7, chociaż matematycznie możliwe do zdefiniowania, nie są do wykorzystania. Ich adresy podsieci są odpowiednio 000 i 111, a jako takie są adresami zarezerwowanymi. Adres podsieci składający się z samych zer jest zawsze zarezerwowany dla samoidentyfikacji podsieci. Natomiast adres z samymi jedynkami przeznaczony jest do broadcastu w obrębie podsieci. Adresy te zawarte są w tabeli 2.8 jedynie w celu zademonstrowania wzrostu z wartości minimalnej do maksymalnej pola binarnego adresu podsieci.
VLSM
Chociaż podsieci okazały się być wartościowym uzupełnieniem architektury adresów Internetu, pomimo to miały jedną podstawową wadę - ograniczenie do jednej maski podsieci dla całej sieci. Oznaczało to, że po wyborze maski podsieci (która określała liczbę hostów 1 możliwych do zdefiniowania w podsieci) nie można było obsługiwać podsieci o różnych rozmiarach. Jedynym wyjściem dla większych podsieci była zmiana rozmiaru maski dla całej sieci. Oznaczałoby to komplikacje i pochłaniałoby dużo czasu.
Rozwiązanie tego problemu narodziło się w 1987 roku. IETF opublikował dokument, który specyfikował sposób, w jaki sieci mogą wykorzystywać więcej niż jedną maskę podsieci. Z pozoru każda maska byłaby innych rozmiarów, a w rzeczywistości maski niczym by się od siebie nie różniły, ich prefiks sieciowy byłby identyczny. Ta nowa technika podsieci ; z tego powodu nazwana została VLSM - maski podsieci o zmiennej długości.
VLSM zapewnia lepsze wykorzystanie przestrzeni adresu IP poprzez umożliwienie administratorowi sieci dopasowania rozmiaru maski podsieci do specyficznych wymagań każdej z podsieci. Aby to zilustrować, przyjęto sieć o bazowym adresie IP 172.16.9.0. Jest ', to adres klasy B, który używa 16-bitowego numeru sieci. Powiększając prefiks sieciowy 0 6 bitów otrzymuje się 22-bitowy rozszerzony prefiks sieciowy. Matematycznie daje to 62 możliwe do użycia adresy podsieci oraz 1022 adresy hostów na podsieć.
Uwaga
Rozmiar rozszerzonego prefiksu sieciowego określany jest znakiem / użytym za adresem sieciowym. 193.168.125.0/27 oznacza adres klasy C z 27-bitowym prefiksem.
Taki schemat podsieci byłby odpowiedni dla organizacji mającej więcej niż 30 podsieci z co najmniej pięciuset hostami w każdej z nich. Natomiast już tylko przy kilku dużych podsieciach i wielu małych (z 40, 50 urządzeniami) większość adresów IP nie byłaby wykorzystana. Każda podsieć miałaby do dyspozycji 1022 adresów hostów co w przypadku małych podsieci oznaczałoby niepotrzebną stratę około 950 adresów.
Matematycznie rzecz biorąc, podsieci były idealnym rozwiązaniem irytującego problemu szybkiego opróżniania skończonej przestrzeni adresu IP. Umożliwienie sieciom podziału pola hosta adresu IP na adres podsieci i hosta znacznie zredukowało liczbę traconych adresów IP. Niestety, w rzeczywistości nie można oczekiwać, aby każda sieć składała się z podsieci o takich samych rozmiarach. Dlatego używanie maski o stałej długości spowodowałoby niepotrzebną stratę adresów IP hostów w każdej zdefiniowanej podsieci (jak pokazano w przykładzie).
Rozwiązaniem tego dylematu okazał się elastyczny podział przestrzeni adresu IP za pomocą masek podsieci o różnych rozmiarach. W ten sposób, używając poprzedniego przykładu administrator sieci mógłby wykroić z adresu bazowego IP różne maski podsieci.
go, a mniejsze 25-bitowego (podsieci ze 126 hostami) albo 26-bitowego (62 hosty w podsieci). Takim rozwiązaniem jest właśnie VLSM.
Routing bezklasowy
Stosunkowo niedawnym dodatkiem do architektury adresów IP jest CIDR - bezklasowy routing. CIDR narodził się w czasie kryzysu, który wiązał się z nagłym rozwojem Internetu we wczesnych latach dziewięćdziesiątych.
W 1992 IETF stanął przed problemem, czy w obliczu współczesnych wymagań co do działania sieci, Internet nadaje się do dalszego rozwoju. Spowodowane to było następującymi kwestiami:
wyczerpanie się wszystkich nieprzyporządkowanych adresów sieciowych IPv4; przestrzeń klasy B była szczególnie zagrożona wyeksploatowaniem
szybki wzrost rozmiaru tablic routingu Internetu w rezultacie jego dotychczasowego rozwoju.
Wszystko wskazywało na to, że szybkość powiększania się liczby użytkowników Internetu nie spadnie. Jako datę całkowitego załamania się struktury Internetu określono marzec 1994 roku. Wtedy to nastąpiłoby kompletne wykorzystanie przestrzeni adresu klasy B, a brak innych mechanizmów adresowania spowodowałby poważne naruszenie skalowalności Internetu. Co więcej, mechanizmy routingu mogłyby znacznie wcześniej załamać się pod ciężarem powiększających się tablic routingu.
Internet stał się w ten sposób ofiarą własnego sukcesu. Aby uniknąć katastrofy, IETF zdecydował się podjąć krótko- i długoterminowe kroki. Długoterminowym rozwiązaniem było opracowanie całkowicie nowego protokołu IP ze znacznie rozszerzoną przestrzenią i architekturą adresów. Protokół ten stał się znany jako IPng (Internet Protocol: The Next Generation) lub formalnie IP Wersja 6 (IPv6). Jednak szybko potrzebne było spowolnienie procesu wyczerpywania się jeszcze niewykorzystanych adresów. Odpowiedzią okazało się wyeliminowanie niewydajnych klas adresów na rzecz bardziej elastycznej architektury adresów - CIDR.
CIDR posiada trzy kluczowe cechy, które stały się nieocenione w ratowaniu przestrzeni adresów IPv4:
eliminacja adresowania opartego na klasach
usprawniona agregacja tras
tworzenie supersieci.
Adresowanie bezklasowe
Matematycznie przestrzeń adresowa IPv4 w dalszym ciągu zawierała pewną liczbę dostępnych adresów. Niestety, wiele z nich zostało bezpowrotnie straconych, ponieważ zostały zamknięte w blokach lub klasach przydzielonych już adresów. Wyeliminowanie klas nie spowodowałoby odzyskania adresów, które zostały już przypisane, ale umożliwiłoby znacznie lepsze wykorzystanie pozostałych wolnych adresów. Takie rozwiązanie zapewniłoby czas potrzebny na wprowadzenie IPv6.
Usprawniona agregacja tras
Bezklasowy routing umożliwia routerom znacznie lepsze gromadzenie informacji routingu. Innymi słowy, pojedyncza pozycja w tablicy routingu może reprezentować przestrzenie adresowe wielu sieci. Powoduje to znaczną redukcję rozmiaru tablicy, który może być potrzebny do obsłużenia współpracy pomiędzy innymi sieciami i bezpośrednio przekłada się na wzrost skalowalności.
CIDR został zaimplementowany w latach 1994-1995 i od razu stał się efektywnym mechanizmem powiększania zakresu tablic routingu routerów internetowych. Wątpliwe jest, aby obecnie Internet kontynuował swój dotychczasowy rozwój bez zaimplementowanego CIDR.
Tworzenie supersieci
Inną zaletą CIDR jest zdolność do tworzenia supersieci. Polega to na użyciu sąsiednich bloków przestrzeni adresów klasy C w celu zasymulowania pojedynczego lecz większego adresu. Przy zestawieniu wystarczającej liczby sąsiednich adresów klasy C można dokonać zmiany liczby bitów przypisanych do pól identyfikujących sieć i hosty i zasymulować adres klasy B.
Tworzenie supersieci zaprojektowane zostało z myślą o złagodzeniu presji kurczącej się liczby wolnych adresów klasy B. Poprzednia architektura oparta na klasach adresów cierpiała na ogromną różnicę pomiędzy sieciami klasy B i C. Sieci, które wymagały więcej niż 254 hosty (oferowane przez klasę C), miały dwa możliwe wyjścia (żadne z nich nie było optymalne):
1. użycie wielu adresów klasy C co wymagałoby routingu między domenami sieci 2. przejście do adresu klasy B zapewniającego 65 534 adresy hostów.
Najczęściej stosowanym i najprostszym rozwiązaniem było użycie adresu klasy B, nawet mimo tego, że traconych było w ten sposób dziesiątki tysięcy adresów IP.
Działanie bezklasowego routingu (CIDR)
CIDR był dramatycznym zerwaniem z tradycją ścisłych klas adresów. Architektura adresów IPv4 używała 8-bitowego numeru sieci dla adresów klasy A, 16-bitowego numeru dla klasy B i 24-bitowego dla adresu klasy C. CIDR zastąpił te kategorie bardziej ogólnym prefiksem sieciowym. Prefiks ten może być różnej długości, a nie tylko 8; 16 - czy 24-bitowy. Umożliwia to dopasowanie przestrzeni adresu sieciowego do sieci o konkretnym rozmiarze a nie odwrotnie.
Każdy adres sieciowy zgodny z CIDR określany jest specyficzną maską bitową. Maska ta identyfikuje długość prefiksu sieciowego. Na przykład 192.125.61.8/20 oznacza adres CIDR z 20-bitowym adresem sieci. Adres IP może być każdym matematycznie osiągalnym adresem bez względu na to, czy zawierał się w zakresie klasy A, B czy C! Routery zgodne z CIDR zwracają uwagę na liczbę po znaku /, aby określić numer sieci. Dlatego adres klasy C 192.125.61.8 poprzednio posiadał numer sieci 192.125.61 i numer hosta 8. Klasa C zapewnia adresy dla maksymalnie 254 hostów w obrębie sieci. Używając bezklasowego routingu eliminuje się niedostatki architektury 8-bitowych granic pomiędzy poszczególnymi częściami adresu. W celu lepszego zrozumienia działania CIDR należy liczbę dziesiętną przekonwertować na binarną.
W systemie binarnym część sieciowa adresu to 11000000.01111101.00111101. Pierwsze 20 bitów tego przykładu identyfikuje numer sieci. Rysunek 2.7 demonstruje podział adresu na numery sieci i hosta.
|
Numer sieci |
Numer hosta |
Adres binarny |
11000000.1111101.0011 |
1101.00000000 |
Rysunek 2.7. 20-bitowy numer sieci CIDR
Należy zauważyć, że podział adresu na część sieci i hosta wypada w środku trzeciego oktetu. Bity, które nie są przypisane do numeru sieci, używane są do identyfikacji hostów. Dlatego adres IPv4 z 20-bitowym prefiksem sieciowym posiada 12 bitów na identyfikację hosta. Matematycznie daje to możliwość 4 094 adresów hosta. Ponieważ żaden z lewych skrajnych bitów nie jest wcześniej ustawiony (co określało klasę adresu), cały zakres adresów może być użyty w sieci CIDR. 20-bitowemu prefiksowi sieciowemu może być przypisana wartość poprzednio zarezerwowana dla klasy A, B lub C sieci.
Podsumowanie
Dokładne zrozumienie architektury adresów IP jest podstawowym warunkiem do oceny zasad działania IP. Wiele mechanizmów zaprezentowanych w tym rozdziale, wliczając w to bezklasowy routing, maski podsieci i VLSM, jest tak szerokim stopniu, że niezrozumienie ich bezpośrednio rzutuje na zdolność prawidłowego zaprojektowania i zapewnienia działania sieci złożonej.