Sieci komputerowe
Wykład 3:
Protokół IP
Poprzednio:
Podstawy warstwy pierwszej (fizycznej) i drugiej (łącza danych)
Warstwa 2:
Umożliwia wysyłanie ramek pomiędzy dwoma bezpośrednio połączonymi komputerami
Bezpołączeniowa, zawodna
Potwierdzanie jest opcjonalne (w Ethernecie nie ma)
Bezpośrednie połączenie = dwupunktowe lub w ramach tej samej sieci połączonej urządzeniami warstwy 1 (koncentratory)
lub warstwy 2 (przełączniki)
Dzisiaj
1) Warstwa sieci 2) Adresowanie
CIDR
Adresy specjalne 3) Routing
4) Współpraca z warstwą 2
Warstwa sieci (1)
1) Również bezpołączeniowa i zawodna
2) Daje warstwie czwartej możliwość wysyłania pakietów pomiędzy dwoma dowolnymi komputerami
Wymaga jednolitego adresowania w całej sieci (adresy IP w Internecie)
3) Warstwa 4 nie musi przejmować się liczbą, typem i technologią pośredniczących routerów
Warstwa sieci (2)
Umożliwia łączenie dwóch różnych sieci warstwy 2
Adresy IP
Każdy interfejs sieciowy ma unikatowy 4-bajtowy adres
Komputery w jednej sieci mają adresy z pewnego spójnego zakresu adresów.
Notacja dziesiętna z kropkami, np. 156.17.4.1
CIDR (1)
Classless Inter-Domain Routing
Sposób opisywania przedziałów adresów IP posiadających wspólny prefiks
Przedział zapisujemy w postaci IP/długość, gdzie IP jest pierwszym adresem z przedziału,
a długość jest długością wspólnego prefiksu w bitach Przykład
Chcemy opisać zakres adresów IP, którego binarna reprezentacja zaczyna się od 10011100.00010001.00000100.0010:
Pierwszy adres IP z zakresu:
10011100.00010001.00000100.00100000=156.17.4.32
Długość prefiksu = 28
Zapis = 156.17.4.32/28
CIDR (2)
CIDR używany głównie do opisu pojedynczych sieci
156.17.4.32/28 opisuje adresy pomiędzy 156.17.4.32 i 156.17.4.47
Pierwszy adres jest zarezerwowany (adres sieci)
Ostatni adres jest równie˙z zarezerwowany: adres rozgłoszeniowy (broadcast)
Pozostałe adresy IP mogą być przypisane do komputerów (interfejsów sieciowych w kartach sieciowych)
Podsieci (1)
Obrazek ze strony http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing
Uwaga: Blok 208.128.0.0/11 otrzymany bezpośrednio od organizacji IANA
Uwaga: 208.130.29.33/32 = zakres składający się z jednego adresu IP = jeden interfejs sieciowy (komputer), nie sieć
Podsieci (2)
Zakres adresów IP może być podzielony na dwa zakresy równych rozmiarów:
Przykład
156.17.4.64/26= 156.17.4.64/27 + 156.17.4.96/27 = 156.17.4.64/28 + 156.17.4.80/28 + 156.17.4.96/28 + 156.17.4.112/28
Czy adres 156.17.4.95 jest adresem rozgłoszeniowym?
To zależy!
Jest w sieciach 156.17.4.80/28 i 156.17.4.64/27, ale nie w sieci 156.17.4.64/26
Notacja CIDR
Przykładowo:
156.17.4.32/28: Oznacza całą sieć
156.17.4.33/28: Pierwszy komputer w tej sieci ...
156.17.4.46/28: Ostatni komputer w tej sieci
156.17.4.47/28: Adres rozgłoszeniowy w tej sieci
Mając dany adres i maskę podsieci, jak sprawdzić,
czy jest to adres sieci, komputera czy adres rozgłoszeniowy?
Uwaga: Maskę /n można zapisać też jako n bitów o wartości jeden i 32 – n bitów o wartości zero. Przykładowo:
/25 = /255.255.255.128
Dodajemy /xx (nazywane maską podsieci) do wszystkich adresów IP
Przypadki szczególne CIDR
Pytanie: ile adresów w sieci CIDR z maską podsieci /27 może być przypisanych do komputerów?
Odpowiedź: 232-27 -2 = 30
Podobne odpowiedzi dla pozostałych masek podsieci poza:
/32: oznacza pojedynczy adres IP komputera
/31: połączenie dwupunktowe, dwa adresy IP przypisywane do komputerów, nie ma adresu sieci,
nie ma adresu rozgłoszeniowego
Klasy adresów
Jeśli przypiszemy adres 10.0.0.1 do interfejsu karty sieciowej zostanie on zinterpretowany jako 10.0.0.1/8. Dlaczego?
Adresowanie klasowe (sprzed ery CIDR)
Jeśli pierwszy bit adresu IP jest równy 0, maska podsieci to /8 (sieć klasy A).
Przykład: 6.0.0.0/8
Jeśli pierwsze bity adresu IP są równe 10, maska podsieci to /16 (sieć klasy B).
Przykład: 156.17.0.0/16
Jeśli pierwsze bity adresu IP są równe 110, maska podsieci to /24 (sieć klasy C).
Przykład: 200.200.200.0/24
Pętla lokalna
Sieć 127.0.0.0/8
Pętla lokalna (ang. loopback), interfejs lo
Łącząc się z dowolnym komputerem z tej sieci (zazwyczaj ze 127.0.0.1), łączymy się sami ze sobą
Zastosowanie: możemy pisać i testować aplikacje sieciowe nie posiadając połączenia z siecią
Adresy prywatne
Zarezerwowane zakresy adresów IP
1) Pakiety z takimi adresami nie powinny być przekazywane dalej przez routery
2) Mogą być wykorzystywane w sieciach lokalnych (w różnych sieciach takie same adresy)
3) Pule adresów:
10.0.0.0/8 (jedna sieć klasy A)
172.16.0.0/12 (16 sieci klasy B)
192.168.0.0/16 (256 sieci klasy C)
4) Żeby takie adresy IP mogły komunikować się z Internetem (a właściwie, żeby Internet mógł komunikować się z nimi!) router łączący taką sieć ze światem zewnętrznym
musi specjalnie modyfikować przechodzące przez niego pakiety (NAT)
Nagłówek pakietu
http://www.freesoft.org/CIE/Course/Section3/7.htm
Tablice routingu
Każde urządzenie rozumiejące warstwę trzecią (routery, komputery) przechowuje tzw. tablicę routingu zawierającą wpisy typu:
Jeśli podany pakiet jest skierowany do sieci S,
to wyślij go przez interfejs sieciowy I (do routera (bramy) B)
Routing statyczny = wpisy są dodawane ręcznie przez administratora komputera/routera
Przykład routingu statycznego
Router z dwoma interfejsami sieciowymi:
eth0 = 81.219.234.7, eth1 = 10.0.0.2 Wpisy:
81.219.234.0/24, przez eth0, bez bramy 10.0.0.0/8, przez eth1, bez bramy
10.128.0.0/9, przez eth1, brama = 10.127.255.254 127.0.0.0/8, przez lo, bez bramy
0.0.0.0/0, przez eth0, brama = 81.219.234.3 Obowiązuje reguła najdłuższego pasującego prefiksu!
Scalanie wpisów
Wiele wpisów w tablicy → gorsza wydajność, większe zużycie pamięci Wpisy dotyczące różnych sieci ze wspólną regułą można łączyć,
jeśli da się je opisać razem za pomocą poprawnego zakresu CIDR.
Czasem wpisy mogą zostać usunięte bez zmiany znaczenia tablicy routingu.
Scalanie wpisów
Wiele wpisów w tablicy → gorsza wydajność, większe zużycie pamięci Wpisy dotyczące różnych sieci ze wspólną regułą można łączyć,
jeśli da się je opisać razem za pomocą poprawnego zakresu CIDR.
Czasem wpisy mogą zostać usunięte bez zmiany znaczenia tablicy routingu.
Przykład 1 wpisy:
10.0.0.0/24, przez eth1, brama = 10.1.0.1 10.0.1.0/24, przez eth1, brama = 10.1.0.1 10.0.2.0/23, przez eth1, brama = 10.1.0.1 można zastąpić przez:
10.0.0.0/22, przez eth1, brama = 10.1.0.1
Scalanie wpisów
Wiele wpisów w tablicy → gorsza wydajność, większe zużycie pamięci Wpisy dotyczące różnych sieci ze wspólną regułą można łączyć,
jeśli da się je opisać razem za pomocą poprawnego zakresu CIDR.
Czasem wpisy mogą zostać usunięte bez zmiany znaczenia tablicy routingu.
Przykład 2 wpisów:
10.0.1.0/24, przez eth1, brama = 10.1.0.1 10.0.2.0/24, przez eth1, brama = 10.1.0.1 nie można połączyć. Dlaczego?
Scalanie wpisów
Wiele wpisów w tablicy → gorsza wydajność, większe zużycie pamięci Wpisy dotyczące różnych sieci ze wspólną regułą można łączyć,
jeśli da się je opisać razem za pomocą poprawnego zakresu CIDR.
Czasem wpisy mogą zostać usunięte bez zmiany znaczenia tablicy routingu.
Przykład 3 Jeśli wszystkie wpisy to:
10.0.0.0/8, przez eth1, brama = 10.1.0.1 10.0.0.0/24, przez eth1, brama = 10.1.0.1 można usunąć drugą regułę
Scalanie wpisów
Wiele wpisów w tablicy → gorsza wydajność, większe zużycie pamięci Wpisy dotyczące różnych sieci ze wspólną regułą można łączyć,
jeśli da się je opisać razem za pomocą poprawnego zakresu CIDR.
Czasem wpisy mogą zostać usunięte bez zmiany znaczenia tablicy routingu.
Przykład 4 Ale z wpisów:
10.0.0.0/8, przez eth1, brama = 10.1.0.1
10.0.0.0/16, przez eth0, brama = 20.0.0.1 10.0.0.0/24, przez eth1, brama = 10.1.0.1 nie można nic usunąć
Scalanie wpisów
Wiele wpisów w tablicy → gorsza wydajność, większe zużycie pamięci Wpisy dotyczące różnych sieci ze wspólną regułą można łączyć,
jeśli da się je opisać razem za pomocą poprawnego zakresu CIDR.
Czasem wpisy mogą zostać usunięte bez zmiany znaczenia tablicy routingu.
W praktyce czasem stosuje się bardziej agresywną ale niedokładną agregację wpisów.
Przykład 2 (jeszcze raz) wpisy:
10.0.1.0/24, przez eth1, brama = 10.1.0.1 10.0.2.0/24, przez eth1, brama = 10.1.0.1
mogłyby zostać zastąpione przez drogę 10.0.0.0/22
Współpraca z warstwą drugą (1)
Problem: Warstwa 2 nie rozumie adresów IP
Rozwiązanie: Protokół ARP (Address Resolution Protocol)
Rozgłasza zapytania typu: „kto ma dany adres IP”.
Jeden komputer powinien odpowiedzieć: „ja mam”.
Współpraca z warstwą drugą (2)
Problem: A jeśli potrzebujemy przekształcenia MAC → IP?
Po co? Warstwa druga powinna być niezależna od warstwy trzeciej
Automatyczne przypisywanie adresów IP
Niezbędne dla komputerów bezdyskowych (znają tylko adres MAC swojej karty sieciowej) Protokoły:
RARP (Reverse ARP)
BOOTP (RARP + możliwość pobierania obrazu systemu operacyjnego)
DHCP (działa też pomiędzy sieciami lokalnymi)
Konfiguracja automatyczna
(APIPA = Automatic Private IP Addressing (169.254.0.0/16))
Protokół pomocniczy ICMP
ICMP = Internet Control Message Protocol 1) Testowanie warstwy sieciowej
2) Komunikaty enkapsulowane w pakietach IP 3) Różne typy komunikatów, niektóre z nich:
Echo request
Echo reply
Destination unreachable
Time exceeded (TTL = 0)
Na ICMP opierają się narzędzia ping i traceroute / tracert
MTU = Maximum Transmission Unit
MTU jest własnością drugiej warstwy (maksymalna wielkość danych z warstwy trzeciej)
Dla Ethernetu: MTU = 1500 bajtów
Dla sieci bezprzedowodowych: MTU = 2312 bajtów
Router może dzielić pakiety na mniejsze części (fragmentacja pakietów IP)
Most zamiast routera → szybszy,
ale nie radzi sobie z różnymi wartościami MTU
Fragmentacja pakietów IP
Problem: Fragmentacja zazwyczaj jest niepożądana
(strata wydajności, zwiększona złożoność procesu)
Rozwiązanie: Ustaw bit DF (don’t fragment) w nagłówku pakietu IP
jeśli konieczna będzie fragmentacja, pakiet zostanie wyrzucony,
a router odsyła z powrotem komunikat ICMP (destination unreachable,
can’t fragment)
Wysyłający komputer może odpowiednio zmniejszyć rozmiar pakietu
Powtarzamy to, aż pakiet zostanie dostarczony = technika wykrywania MTU (path MTU)
Lektura
Kurose, Ross: 4.1–4.4