podstawy_sieci_IP.pdf

(597 KB) Pobierz
Microsoft Word - Podstawy sieci IP.doc
Adresy i sieci
W każdej sieci każde miejsce, do którego inne komputery wysyłają informacje, musi mieć niepowtarzalny identyfikator.
Identyfikator taki nazywany jest zwykle adresem. W niektórych technologiach sieciowych adres wskazuje konkretną
maszynę, podczas gdy w innych, takich jak IP, adres wskazuje punkt przyłączenia do sieci, który jest powszechnie
nazywany interfejsem. W rezultacie pojedyncza maszyna pracująca w sieci, która jest wyposażona w kilka interfejsów,
może mieć kilka adresów IP - po jednym dla każdego z tych interfejsów. Interfejsy to zwykle fizycznie rozróżnialne
przyłącza (tzn. gniazda, do których dołączany jest kabel sieciowy), ale mogą być nimi również logiczne przyłącza, które
mają jedno wspólne przyłącze fizyczne.
Możesz się spotkać również z innym rozwiązaniem określanym jako multipleksacja interfejsu, które stosuje się w
przyłączach do sieci ATM. Logiczny podział hostów w sieci ATM na kilka grup pozwala na traktowanie każdej z nich
jako oddzielnej sieci logicznej, mimo że wszystkie hosty przyłączone są do jednej sieci fizycznej. Urządzenie
przyłączone do tego typu sieci fizycznej może jednocześnie należeć do kilku sieci logicznych dzięki nawiązaniu kilku
logicznych połączeń, z których każde ma własny adres IP.
Maszyny, które mają kilka adresów, określa się jako multi-homed. Wszystkie rutery są z definicji maszynami multi-
homed, ponieważ zajmują się przesyłaniem pakietów pomiędzy kilkoma sieciami. Jednakże nie wszystkie maszyny
określane mianem multi-homed są ruterami, np.: jedna maszyna może mieć kilka przyłączeń do sieci i pełnić funkcję
serwera plików współdzielonego przez kilka różnych sieci, bez rutowania informacji pomiędzy tymi sieciami.
Struktura adresu IP
Adresy IP mają długość 32 bitów. Rozpatruje się je jako sekwencję czterech bajtów lub inaczej, czterech oktetów
(bajtów 8-bitowych). Aby zapisać adres IP, należy dokonać konwersji każdego z oktetów do postaci zapisu dziesiętnego
i oddzielić cztery powstałe w ten sposób liczby dziesiętne kropkami. A zatem 32-bitowy adres IP:
10101100 00011101 00100000 01000010
zwykle zapisywany jest jako:
172.29.32.66
Taki format, znany jako zapis kropkowo-dziesiętny, jest wygodny i będziemy go stosowali w większości przypadków
opisywanych w tej książce. Będą jednak takie przypadki, kiedy wygodniej będzie pracować z szesnastkową
reprezentacją adresów 32-bitowych, ponieważ ułatwi to wykonanie niektórych operacji lub pozwoli je lepiej zrozumieć.
W zapisie szesnastkowym adres IP, przedstawiony wyżej, będzie reprezentowany w następujący sposób:
0xAC1D2042
Mimo że adres IP jest pojedynczą liczbą 32-bitową to zbiór adresów IP nie jest płaski. Zamiast tego adresy zbudowane
są w oparciu o dwupoziomową hierarchię: sieci i hostów wchodzących w skład tych sieci.
Każda z tych dwóch przestrzeni adresowych identyfikowana jest przez określoną część adresu IP, w wyniku czego
każdy adres IP możemy podzielić na numer sieci i numer hosta.
W protokole IP numer sieci reprezentuje zbiór maszyn, które zdolne są do bezpośredniej komunikacji w warstwie
drugiej sieciowego modelu odniesienia ISO-OSI. Warstwa ta to warstwa łącza danych, która odzwierciedla działanie
takich rozwiązań jak Ethernet, Token Ring, FDDI (Fiber Distńbuted Data Interconnect), a także łącza typu punkt-
punkt. Każda z tych technologii sieciowych traktowana jest przez IP jako jedna sieć, niezależnie od tego, czy jest to
rzeczywiście jeden kabel sieciowy, czy też składa się ona z kilku segmentów połączonych ze sobą przez wzmacniaki,
mosty lub przełączniki.
Nie powinieneś być zaskoczony, dowiadując się, że numer hosta określa konkretną maszynę, która należy do danej
sieci. Na rysunku 1-1 pokazano przykład opisanego wyżej sposobu adresowania.
116428960.006.png
Na rysunku 1-1 sieci Ethernet 2 i 3 tworzą jedną sieć IP, mimo że rozdziela je most, co wynika z faktu, że urządzenie
takie jak most jest niewidoczne z poziomu protokołów warstwy sieci, jaką jest IP. Host2, Host3 i Host4 mają adresy IP,
w których znajduje się taki sam numer sieci przydzielony dla tego podwójnego układu sieci Ethernet połączonych
mostem.
Łącze szeregowe pomiędzy Host4 a HostS tworzy drugą sieć IP i hosty te będą miały adresy składające się z numeru
sieci tworzonej przez to połączenie szeregowe.
Sieć Ethernet l jest trzecią siecią IP, a Host1 i Host2 będą miały adresy IP zawierające jej adres.
Hosty o nazwach Host2 i Host4 mają po dwa adresy IP: są to hosty typu multi-homed i mogą pełnić funkcje ruterów.
Dwupoziomowa struktura adresów IP będzie ważna w dalszej części książki, gdy będzie mowa o rutowaniu. Na razie
wystarczy, jeśli wskażemy, która część adresu IP to numer sieci, a która - numer hosta.
Umieszczenie numeru sieci w adresie IP powoduje, że adres hosta zależy od sieci, w której ten host się znajduje.
Oznacza to, że jeśli host zostanie przeniesiony do innej sieci, to konieczna jest zmiana jego adresu.
W przeciwieństwie do innych technologii sieciowych, takich jak IPX Novella, gdzie adres ustalany jest w oparciu o
adres sprzętowy karty sieciowej lub AppleTalk firmy Apple Computer, gdzie adres wybierany jest automatycznie, adres
IP jest nadawany i wyznaczany ręcznie. Mimo że dostępne są protokoły takie jak Boot Strap Protocd (BOOTP) i
Dynamie Host Configuration Protocd (DHCP), które wspomagają wyznaczanie adresu IP dla maszyny w sieci, to
serwery obsługujące te protokoły wymagają ręcznej konfiguracji i nie wszystkie urządzenia w sieci są w stanie
wykorzystać zalety tych usług. Konieczność zmiany numeru hosta po zmianie jego miejsca pracy oznacza zawsze
dodatkowe zadania dla personelu odpowiedzialnego za utrzymanie sieci.
Numery sieci i maski
Jak napisałem wcześniej, wszystkie adresy IP składają się z numeru sieci i numeru hosta w tej sieci. Jednakże granica
pomiędzy numerem sieci i numerem hosta może przebiegać różnie. Aby oprogramowanie ruterów i hostów mogło w
łatwy sposób określić, w którym miejscu znajduje się wspomniany podział adresu, każdy z nich ma dołączoną
informację w postaci maski sieci. Maska ta to liczba 32-bitowa, podobnie jak w adresie IP, w której wszystkie bity
określające sieciową część adresu są równe l, a bity określające część adresu będącą numerem hosta ustawione są na 0.
Na przykład:
11111111 11111111 00000000 00000000
oznacza, że pierwszych 16 bitów adresu IP, z którym skojarzona jest ta maska, reprezentuje numer sieci, a ostatnich 16
bitów reprezentuje numer hosta w tej sieci. Komputer może w prosty sposób wyliczyć numer sieci z adresu IP stosując
bitowe działanie AND pomiędzy adresem IP i jego maską.
Początkowo maski sieci mogły zawierać nie przylegające bity 1. Praktyka ta została jednak zmieniona, częściowo z
powodu trudności, jakie sprawiała, a częściowo po to, by uprościć wymianę informacji o rutowaniu. Obecnie wszystkie
maski muszą mieć wszystkie bity l przylegające. Oznacza to, że następująca maska:
11111111 11111111 00000011 00000000
Rysunek 1-1 : Ethernet 2 i 3 to jedna sieć.
116428960.007.png
jest niedozwolona, ponieważ ostatnie dwa bity l nie przylegają do innych. Ograniczenie to nie spowodowało większych
kłopotów, ponieważ do chwili jego wprowadzenia używano niewielu masek, w których bity l nie były przylegające.
Podobnie jak adres IP, maska sieciowa jest tradycyjnie reprezentowana przy użyciu zapisu kropkowo-dziesiętnego lub
szesnastkowego. A zatem maska może być zapisana jako 255.255.254.0 lub jako OxFFFFFE00 - ten sposób jest częściej
używany podczas tworzenia oprogramowania.
Ponieważ jednak maski zawsze są związane z adresem IP i bez niego nie mają większego znaczenia, coraz
popularniejszy staje się nowy format zapisu maski. W związku z tym, że wymagany jest obecnie zapis w postaci
nieprzerwanego ciągu bitów l, możliwe jest posługiwanie się pojęciem maski np.: 23-bitowej. Takie określenie
jednoznacznie mówi, że mamy na myśli maskę złożoną z 23 bitów l, po których następuje 9 bitów 0 lub w zapisie
szesnastkowym OxFFFFFE00. Pozwala to na uproszczenie stwierdzenia, że „sieć rozpoczyna się adresem 192.168.2.0 z
maską 255.255.254.0" i zapisanie go w postaci 192.168.2.0/23. Ten nowy zapis adresów i masek nazywany jest zapisem
adres/maska.
Tabela 1-1. Formaty wyświetlania informacji o maskach
Podstawowy zapis adres/maska pozwala na łatwe opisywanie adresów IP z sieci o dowolnym rozmiarze, poczynając od
prostego łącza punkt-punkt, w którym pracują dwa hosty w sieci, kończąc na sieciach, w których znajduje się wiele
milionów hostów. Rozważmy na przykład dwa adresy pokazane na rysunku 1-2. Ponieważ mają one jednakowy 23-
bitowy przedrostek i są kolejnymi numerami, to możliwe jest zapisanie przestrzeni adresowej obu wymienionych
adresów przy użyciu wspomnianego zapisu, w wyniku czego powstaje adres w postaci 192.168.10.0/23.
Rysunek 1-2. Dwa adresy ze wspólnym 23-bitowym przedrostkiem.
Nie wszystkie kombinacje adresów i masek sieci mogą być poprawnie zapisane przy użyciu takiego zapisu. Na rysunku
1-3 pokazano cztery adresy, które nie mogą być reprezentowane przez jeden zapis typu adres/maska. Dzieje się tak
dlatego, że adresy, mimo swej ciągłości, nie mają jednakowego 22-bitowego przedrostka. Dlatego nie jest możliwe
podanie maski o długości 22 bitów, która objęłaby wszystkie te adresy. Jeśli będziesz chciał zapisać te adresy podając
192.168.10.0/22, to zapis ten obejmie tylko dwa z podanych czterech adresów, a dwa pozostałe zostaną pominięte.
Rysunek 1-3. Cztery adresy bez wspólnego 22-bitowego przedrostka.
Zamiast takiego zapisu należy użyć dwóch oddzielnych specyfikacji: 192.168.10.0/23 i 192. 168.12.0/23, co oznacza
dwa oddzielne zapisy w tablicy rutowania. o czym powiemy w dalszej części tego rozdziału.
Czy zapis 192.168.10.0/22 określa jakąś poprawną przestrzeń adresową? Tak i nie. Jeśli użyjesz maski z tym adresem,
okaże się, że powstała w ten sposób przestrzeń adresowa jest taka sama jak dla adresu 192.168.8.0/22. Czy w tego
rodzaju zapisie ważny jest adres podstawowy?
Tak! Nawet doświadczeni administratorzy błędnie sądzą, że opisana w ten sposób przestrzeń adresowa to numery od
192.168.10.0 do 192.168.13.255, choć komputer na podstawie zapisu 192 .168.1 0.0/22 wyznaczy przestrzeń adresową
od 192.168.8.0 do 192.168.11.255. Są to oczywiście dwie zupełnie inne przestrzenie adresów.
Takie błędne zapisy mogą powodować podwójne przydziały adresów, problemy z rutowaniem i inne tajemnicze błędy.
116428960.008.png 116428960.009.png 116428960.001.png 116428960.002.png
Jeśli chcesz tego uniknąć i sprawić, że zapisy będą jednoznaczne, adres podstawowy, maskowany podaną maską, nie
może mieć żadnego bitu l w części opisującej numery hostów. Ograniczenie to jest na tyle ważne, że każdy dobrze
napisany program sieciowy będzie wymuszał taki właśnie zapis i informował o błędzie adresu w przypadku
niezastosowania się do tej reguły.
Ogólna zasada jest następująca: dla pewnej liczby N adresów podstawowych mających ten sam przedrostek N musi być
podstawą potęgi 2, a ostatni oktet zawierający numer sieci (w którym nie ma żadnych bitów określających numer hosta)
musi być bez reszty podzielny przez N.
Klasy adresów IP
Podstawowy sposób zapisu adresów, opisany wyżej, pozwala w łatwy sposób rozróżnić rozmiar części będącej adresem
sieci oraz części określającej liczbę hostów w tej sieci. Łatwo można policzyć hosty w sieci, następnie liczbę tę
zaokrąglić do najbliższej wartości potęgi liczby dwa i na tej podstawie wystąpić o numer sieci i maskę dla tej sieci.
Należy jeszcze pamiętać o dodaniu odpowiedniej liczby adresów zapasowych, które pozwolą na rozbudowę sieci w
przyszłości.
Nie zawsze jednak przydzielanie adresów sieci odbywało się w taki sposób. W początkowym okresie rozwoju sieci IP
maski miały ustalone wielkości, przez co po dodaniu ich do numerów sieci powstawały klasy sieci. Choć zastąpiono je
bardziej elastyczną architekturą opisaną wyżej, to w literaturze i w języku potocznym często występują odwołania do
nich. Niektóre protokoły rutowania, takie jak RIP, nadal posługują się tym pojęciem, dlatego zajmijmy się
podstawowymi klasami sieci oraz ich ewolucją w kierunku używanej obecnie nowoczesnej architektury klas sieci.
Twórcy IP nie przewidywali, że protokół ten będzie musiał obsługiwać sieć o wielkości dzisiejszego Internetu.
Zakładali, że będzie istniała potrzeba obsługi tylko kilku dużych sieci (działających w dużych firmach komputerowych i
głównych uniwersytetach), średniej liczby sieci o średniej wielkości oraz wielu małych sieci. Dlatego też stworzyli trzy
klasy sieci: klasę A przeznaczoną dla największych sieci, klasę B - dla sieci średniej wielkości oraz klasę C - dla sieci
małych. Postanowili również ułatwić podejmowanie decyzji o rutowaniu i zakodowali klasę sieci w pierwszych kilku
bitach adresu IP, zgodnie z zasadą pokazaną na rysunku 1-4.
Rysunek 1 -4: Klasa adresu jest zakodowana w pierwszych kilku bitach
Jeśli pierwszym bitem adresu jest 0, to sieć należy do klasy A. W sieci klasy A pierwszy oktet jest numerem sieci, a
pozostałe trzy oktety identyfikują host w tej sieci. Ponieważ pierwszy bit adresu jest ustalony na stale jako 0, to można
używać tylko 127 sieci klasy A, a w każdej z nich możliwe jest adresowania ponad 16 milionów hostów.
Jeśli pierwsze dwa bity adresu to 10, sieć należy do klasy B. W sieci klasy B pierwsze dwa oktety oznaczają numer sieci,
a kolejne dwa - numer hosta w sieci. Pozwala to na utworzenie 16 384 sieci klasy B (zwróć uwagę, że podobnie jak w
poprzedniej klasie, pierwsze dwa bity są stałe), a w każdej z nich może być 65 000 hostów.
Wreszcie jeśli pierwsze trzy bity to 110, sieć należy do klasy C. W sieci klasy C pierwsze trzy oktety są numerem sieci,
a ostami oktet określa numer hosta w sieci. Pozwala to na utworzenie około 2 milionów sieci, z których każda może
składać się z 256 hostów.
Zwróć uwagę, jak łatwo jest na podstawie pierwszych kilku bitów określić klasę sieci, a następnie znaleźć część adresu
opisującą numer sieci i część z numerem hosta. Taka prostota była konieczna, ponieważ komputery w tamtych czasach
miały znacznie mniejsze moce przetwarzania niż obecnie.
Zgodnie z oryginalną definicją adresy, w których pierwsze trzy bity to 111, należą do klasy D i zostały przeznaczone do
wykorzystania w przyszłości. Od tego czasu definicja sieci tej klasy zmieniła się i klasa D definiowana jest obecnie jako
adresy, w których pierwsze cztery bity to 1110. Adresy te nie oznaczają pojedynczego urządzenia, lecz zestaw urządzeń,
które wchodzą w skład grupy IP, określanej jako multicast.
Adresy rozpoczynające się od 1111 nazywane są obecnie adresami klasy E i są zarezerwowane do wykorzystania w
przyszłości. Prawdopodobnie jeśli dla kolejnej klasy adresów zostanie przydzielony jakiś sposób ich wykorzystania, to
116428960.003.png
definicja klas zostanie zmodyfikowana tak, że klasa E będzie się zaczynała od 11110, a nowa zdefiniowana klasa F
(jako rezerwa na przyszłość) wyróżniana będzie początkowymi bitami w postaci 11111.
Jak się więc mają opisane wyżej klasy sieci do swych najnowszych odpowiedników?
Zwróć uwagę, że sieć klasy A ma 8-bitową maskę sieci. Oznacza to, że taka sieć o numerze 10.0.0.0 może być opisana
jako 10.0.0.0/8 przy użyciu zapisu bezklasowego. Także naturalna maska sieci dla sieci klasy B ma długość 16 bitów, a
dla sieci klasy C długość ta wynosi 24 bity.
W wyniku tak ustalonych długości masek oznaczenie sieci klasy B 172.16.0.0 będzie następujące: 172.16.0.0/16, a dla
sieci klasy C o adresie 192.168.1.0 - 192.168.1.0/24.
Należy jednak pamiętać, że choć wszystkie sieci znane wcześniej jako sieci klasy B mają maski 16-bitowe, to nie jest
prawdą, iż wszystkie sieci mające maski o długości 16 bitów są sieciami klasy B. Rozważmy przykład sieci 10.0.0.0/16.
Wykorzystuje ona maskę 16-bitową, ale nadal pozostaje siecią klasy A (a raczej częścią takiej sieci), ponieważ jej
binarna reprezentacja nadal zaczyna się od bitu 0. Na podobnej zasadzie skonstruowana jest sieć opisana przez
192.168.0.0/16, która nie jest siecią klasy B, lecz zbiorem 256 sieci klasy C. Różnice te mają duże znaczenie, gdy masz
do czynienia z hostami i protokołami, które są świadome istnienia klas sieci. W takich przypadkach poprawne
konfigurowanie maski jest sprawą niezmiernie istotną dla pracy systemu. W przypadku stosowania adresacji
bezklasowej maska 16-bitowa to po prostu maska 16-bitowa.
Podsieci i super sieci (nadsieci)
W miarę jak twórcy protokołów IP nabierali doświadczenia w pracy z siecią, odkryli, że ustanowione początkowo
klasy sieci pozwalały na przydzielanie sieci o wielkościach, które nie pasowały do potrzeb pojawiających się
technologii LAN. Na przykład nie ma potrzeby przydzielać sieci klasy B, dającej możliwość adresowania ponad
65 000 hostów, sieci Ethernet, w której będzie pracowało maksymalnie l 200 urządzeń. Opracowano rozwiązanie
nazywane podziałem na podsieć, w którym po raz pierwszy rzeczywiście wykorzystane zostały maski sieciowe.
W podsieciach IP bity należące do adresu IP hosta wykorzystywane są w charakterze bitów rozszerzających numer
sieci. Na przykład w sieci klasy A 10.0.0.0 numer sieci opisany jest przez 8 pierwszych bitów, a pozostałe 24 bity
tworzą numer hosta. Twórcy sieci IP zdali sobie sprawę, że możliwy jest podział tej sieci na podsieci dzięki
wykorzystaniu kolejnych 8 bitów adresu, które z adresu hosta zostaną przypisane do adresu sieci, jak pokazano na
rysunku 1-5.
Takie rozwiązanie pozwala stworzyć 256 podsieci, a w każdej z nich zaadresować 65 000 hostów. Możliwe jest
również wykorzystanie 16 bitów z numeru hosta dla określenia adresów podsieci, co zwiększa liczbę podsieci do
65 000, a liczbę hostów w każdej z nich do 256.
Maski sieciowe nie muszą przebiegać zgodnie z kolejnymi granicami wyznaczonymi przez 8-bitowe porcje adresu
IP. W wielu miejscach używa się takiego rozwiązania, ponieważ sposób podziału adresu na część sieciową i numer
hosta jest łatwy do zapamiętania. Jeśli sieci klasy A 10.0.0.0 nie będziemy dzielili na podsieci, podział pomiędzy
adresem sieci i adresem hosta przebiega w miejscu pierwszej kropki w zapisanym dziesiętnie adresie. Jeśli
użyjemy 8-bitowej podsieci (tzn. 16-bitowej maski sieci), to granica podziału pomiędzy podsiecią a adresem hosta
będzie przebiegała w miejscu występowania drugiej kropki. Jeśli z kolei użyjemy podsieci o wielkości 16 bitów
(24-bitowej maski sieci), to linia podziału przebiegała będzie w miejscu trzeciej kropki.
Rysunek 1-5: Różne interpretacje adresu 10.27.9.4
Choć dla komputerów takie ułatwienia nie mają żadnego znaczenia, to dla ludzi są one bardzo wygodne i
pozwalają w bardziej naturalny sposób dzielić adres na poszczególne części. Na przykład, jeśli w naszej
przykładowej sieci 10.0.0.0 zdecydujemy się użyć maski o długości 10 bitów, to otrzymamy 1024 podsieci, a w
każdej z nich po 4 miliony hostów. W takim przypadku granica podziału pomiędzy numerem podsieci a numerem
hosta przebiega wewnątrz trzeciego oktetu i nie jest wyraźnie widoczna w zapisie kropkowo-dziesiętnym.
Zastanów się nad adresami 10.1.190.0 oraz 10.1.191.1. Czy należą one do tej samej podsieci? Tak, lecz adres
116428960.004.png 116428960.005.png
Zgłoś jeśli naruszono regulamin