Trzepak.pl


Forum zablokowane  Ten temat jest zamknięty. Nie można w nim pisać ani edytować postów.
Autor Wiadomość
Post: ndz, 09 gru 2012 0:32:58 
   Tytuł: Abecadło IP
Zgłoś ten post Odpowiedz z cytatem
Offline
Administrator
Administrator
Awatar użytkownika

Rejestracja: ndz, 28 sie 2005 18:08:11
Posty: 1844
IP (Internet Protocol)

IP zgodnie z nazwą jest protokołem. W sieciach słowo "protokół" można spotkać na każdym kroku. Protokół to pewien standard, precyzyjnie opisany, szczegółowo określający jak dane rozwiązanie ma działać.

Komputery w Internecie (i nie tylko) komunikują się za pomocą adresów IP. Poza komputerami adresy IP przypisane są też innym urządzeniom: serwerom, drukarkom, telewizorom, telefonom, routerom. Do określenia dowolnego urządzenia z adresem IP używamy pojęcia "host". Mówimy np. "host 192.168.1.102 nie odpowiada na ping" (nie interesuje nas czy to komputer, czy drukarka).

Komunikaty wysyłane między hostami są to pakiety danych. Pakiety są różnej wielkości. Zwykle przesłanie np. całej strony WWW wymaga przesłania wielu pakietów.

Sieć IP to zbiór hostów, które mogą się ze sobą komunikować. Przykładowo jak połączymy 2 komputery skrętką to mamy własną sieć IP złożoną z 2 hostów. Sieci dzielimy na publiczną (globalną) i prywatne. Oczywiście nasza sieć 2 komputerowa jest siecią prywatną. Publiczna jest tylko jedna - Internet. Podobnie adresy IP dzielimy na publiczne (globalne) i prywatne.

NAT (Network Address Translation)

Często chcemy naszą sieć złożoną z 2 kompów podłączyć do Internetu. Ale przecież mamy adresy prywatne i hosty z Internetu nie będą potrafiły się z nami komunikować. W tym celu stosuje się na NAT (translacja adresów z prywatnych na publiczne i odwrotnie). Tak naprawdę NAT może zmieniać adresy jednej sieci prywatnej na adresy innej sieci prywatnej. Wtedy mówimy o sieci zewnętrznej i wewnętrznej oraz o adresach IP zewnętrznych i wewnętrznych. Często ludzie mówią na publiczne IP: "zewnętrzne IP", a na adresy IP kompów z naszej przykładowej sieci: "wewnętrzne IP".
Przykład:
Internet (IP publiczne) --NAT-- sieć prywatna A --NAT-- sieć prywatna B
W tej sytuacji Internet jest siecią zewnętrzną w stosunku do sieci A, podobnie jak sieć A jest zewnętrzna w stosunku do B. Sieć B jest wewnętrzna w stosunku do A.

Zadanie nr 1: dla jakiej sieci sieć A jest siecią wewnętrzną?

Podobnie adresy IP Internetu są zewnętrzne do adresów IP sieci A. Adresy IP A są zewnętrzne do adresów IP B, itd. Z tego zagmatwania wynika, że jeśli mamy tylko jeden NAT to używamy pojęć publiczne i prywatne IP. Klient, który ma router (czyli sieć domową i NAT, ale o tym później) pyta nas np.: "Czy ja mam zewnętrzne IP?". Odpowiedź jest oczywiście "Tak", bo przyznany mu adres IP, chociaż prywatny, jest zewnętrzny względem jego domowej sieci. Wiadomo jednak, że chodzi mu o publiczne IP, więc odpowiadam (na zupełnie inne pytanie ;p): "Nie, obecnie ma pan prywatne IP, ale możemy przyznać panu publiczne".
NAT stosuje się głównie z 2 powodów:
a) mamy za mało adresów publicznych (zwykle jeden) i chcemy podłączyć do Internetu więcej hostów
b) chcemy w pewnym stopniu wydzielić naszą sieć prywatną od Internetu ze względów bezpieczeństwa

JAK WYGLĄDA ADRES IP, CO TO JEST MASKA PODSIECI?

Przykłady adresów IP:
192.168.1.100
FE80:0000:0000:0000:0202:B3FF:FE1E:8329

Niech zgadnę: pierwszy przykład wygląda znajomo, a drugi niespecjalnie? Pierwszy to adres IPv4, które jest powszechnie używane, natomiast drugi to adres IPv6, które dopiero raczkuje. W przyszłości będziemy używać tylko IPv6, ale potrzebna na to parę(naście) lat. Wszystko co napisałem powyżej dotyczy obu wersji IP, jednak teraz skupię się tylko na IPv4.

Adres IPv4 składa się z 4 części rozdzielonych kropkami. Każda z części może zawierać liczbę od 0 do 255, czyli tyle co 1 bajt. Od teraz części te będę nazywał bajtami. Przykładowo drugi bajt z adresu IP powyżej równa się 168.

Podsieć IP to zbiór hostów, które mogą się bezpośrednio komunikować (dokładniej zbiór adresów IP, które takim hostom można przypisać). Różne podsieci można łączyć ze sobą za pomocą routerów, ale o tym później. Podsieć określa zakres adresów "od ... do ...".

Maska podsieci określa ile adresów liczy nasza podsieć. Wszystkich możliwych masek jest 33, ale ze względu na dość skomplikowane zasady obliczania adresów, w tym rozdziale wymienię 5 podstawowych:
255.255.255.255 (1 adres)
255.255.255.0 (256 adresów)
255.255.0.0 (256*256 = 65536 adresów)
255.0.0.0 (256*256*256 = 16777216 adresów)
0.0.0.0 (256*256*256*256 = 4294967296 adresów)

Niewymienione wyżej maski nazwę roboczo maskami "pośrednimi". Przykładowa maska pośrednia to "255.255.240.0". Szerzej opiszę je później.

Przypisując adres IP hostowi zawsze ustawiamy też maskę podsieci związaną z tym adresem IP. Dopiero komplet danych: IP + maska daje nam informację w jakiej podsieci jest host, czyli z kim może się komunikować bez pośrednictwa routerów. Adres IP odziela się od maski znakiem "/". Piszemy: adres IP / maska. Przykłady:
192.168.1.100 / 255.255.255.0
10.1.2.140 / 255.255.0.0
127.52.56.140 / 255.0.0.0

Aby wyliczyć podsieć znając adres IP i maskę podsieci należy spojrzeć na kolejne bajty maski. Jeśli przy bajcie maski jest 0 to zakres adresów przy tym bajcie wynosi 0 - 255. Jeśli natomiast przy bajcie maski jest 255 to przepisujemy liczbę z adresu IP.
Przykład:
Adres IP / maska: 11.22.33.44 / 255.255.0.0
Pierwszy bajt: maska ma 255, więc przepisujemy 11
Drugi bajt: maska ma 255, więc przepisujemy 22
Trzeci bajt: maska ma 0, więc piszemy 0 - 255
Czwarty bajt: maska ma 0, więc piszemy 0 - 255
Odpowiedź: zakres adresów tej podsieci to 11.22.0.0 - 11.22.255.255

Zadanie nr 2: podaj zakres adresów podsieci, w której jest host o adresie:
a) 8.43.21.11 / 255.255.255.0
b) 192.168.1.101 / 255.255.0.0
c) 127.0.0.1 / 255.0.0.0

Jeśli chcemy wiedzieć czy 2 hosty mogą się ze sobą bezpośrednio komunikować to należy sprawdzić czy są w tej samej podsieci, czyli porównać zakresy adresów ich podsieci.

Host A - 192.168.1.100
Host B - 192.168.1.101
Host C - 192.168.2.100

Zadanie nr 3: wymień hosty (spośród A,B,C), które mogą się bezpośrednio komunikować, dla maski:
a) 255.255.255.255
b) 255.255.255.0
c) 255.255.0.0
d) 255.0.0.0
e) 0.0.0.0

Wielu z was może kojarzyć adres IP podobny do 192.168.X.X. Jest to ustalony w standardach zakres prywatnych adresów, czyli taki, którego nie ma w publicznej sieci. Z tego powodu prawie każdy producent routera domowego domyślnie przyznaje te adresy dla sieci prywatnej. Często można je zmienić w ustawieniach routera, ale należy być ostrożnym - ryzykujemy konflikt z inną siecią. Przykładowo gdybyśmy przyznali naszej sieci domowej podsieć: 8.8.8.0 / 255.255.255.0 (zakres 8.8.8.0 - 8.8.8.255) i podłączyli się przez NAT do Internetu to nie połączylibyśmy się z niektórymi serwerami Google. Hosty naszej sieci prywatnej by ich szukały na miejscu, a nie w Internecie.
Standard IP zarezerwował kilka zakresów dla sieci prywatnych:
10.0.0.0 - 10.255.255.255 (16777216 adresów)
172.16.0.0 - 172.31.255.255 (1048576 adresów)
192.168.0.0 - 192.168.255.255 (65536 adresów)

Każdy pakiet IP zawiera m.in. adres źródłowy IP (kto wysłał pakiet) i adres docelowy IP (do kogo pakiet jest skierowany).

SKRACANIE ADRESÓW IP I MASEK

Często nie chce nam się pisać całego adresu i całej maski - można to skrócić.
Skracanie IP polega na pomijaniu środkowych bajtów, jeśli są tam zera. Skrócić można tylko jeśli trzeci bajt jest równy 0.

Przykłady (można sprawdzić poleceniem ping, np. "ping 10.1"):
10.1 = 10.0.0.1
10.1.99 = 10.1.0.99
192.168.1 = 192.168.0.1

Zadanie nr 4: skróć adres IP i sprawdź poleceniem ping czy dobrze zrobiłeś:
a) 1.0.0.1
b) 1.1.0.1
c) 0.0.0.0
d) 10.0.3.230

Skracanie masek podsieci daje znacznie więcej. Powiedziane zostało, że wszystkich masek jest 33. Wystarczy zatem podać jedną liczbę, aby jednoznacznie wskazać maskę. Tak też się robi. Podstawowe 5 masek ma numery odpowiednio 32, 24, 16, 8, 0:
/32 = /255.255.255.255
/24 = /255.255.255.0 (typowa maska dla podsieci domowych)
/16 = /255.255.0.0
/8 = /255.0.0.0
/0 = /0.0.0.0

O ile nie trzeba, praktycznie nie używamy bajtowego zapisu maski (4 części rodzielonych kropkami). Zapis skrócony nazywa się notacją CIDR.

ADRES SIECI, ADRES ROZGŁOSZENIOWY (BROADCASTOWY)

Każda podsieć zawiera dwa adresy, których nie można wykorzystać dla hostów. Są to:
- adres podsieci - najniższy adres w podsieci, np. 10.1.0.0, 192.168.1.0
- adres rozgłoszeniowy (broadcastowy) - najwyższy adres w podsieci, np. 10.1.255.255, 192.168.1.255

Jak nie trudno zauważyć, podając zakres adresów IP "od ... do ...", podajemy właśnie adres podsieci oraz adres rozgłoszeniowy. O ile adres broadcastowy ma praktyczne zastosowanie - potrzebny jest do wysyłania pakietów do wszystkich hostów w podsieci jednocześnie, to adres podsieci - żadnego. Używa się go tylko do określenia o jaką podsieć chodzi, przykładowo piszemy:
192.168.1.0/24, gdy mówimy o podsieci 192.168.1.0 - 192.168.1.255
127.0.0.0/8, gdy mówimy o podsieci 127.0.0.0 - 127.255.255.255

Zgodnie z zadaniem nr 3 do określenia podsieci IP (czyli zakresu adresów IP) można podać: adres IP / maska (czyli zamiast 192.168.1.0/24 możemy napisać 192.168.1.55/24). Rzeczywiście tak, jednak przekażemy wtedy więcej informacji - poza samą podsiecią dodatkowo określimy hosta w tej podsieci. Prosta analogia:

Pytanie: W jakiej podsieci jest twój komputer?
Odpowiedź precyzyjna: 192.168.1.0/24
Odpowiedź z dodatkową informacją: 192.168.1.55/24

Pytanie: Przy jakiej ulicy mieszkasz?
Odpowiedź precyzyjna: Przy ul. Konwaliowej
Odpowiedź z dodatkową informacją: Przy ul. Konwaliowej 18

Wcześniej liczyliśmy zakres adresów znając hosta i maskę. Teraz zrobimy rzecz odwrotną: znajdziemy maskę znając adresy podsieci i rozgłoszeniowy.
Adres podsieci: 18.19.0.0
Adres rozgłoszeniowy: 18.19.0.255
Liczymy liczbę adresów w podsieci: 256
Z liczby adresów wynika maska: 255.255.255.0
Zapisujemy podsieć w notacji bajtowej: 18.19.0.0 / 255.255.255.0
Zapisujemy podsieć w notacji CIDR: 18.19.0.0 / 24

Zadanie nr 5: podaj maskę podsieci i zapisz podsieć w notacji CIDR dla zakresu adresów:
a) 91.0.0.0 - 91.0.255.255
b) 91.0.0.0 - 91.255.255.255
c) 0.0.0.0 - 255.255.255.255
d) 192.168.1.2 - 192.168.1.2

Adresu podsieci ani rozgłoszeniowego nie można przypisać hostom, dlatego liczba adresów dostępna dla hostów jest zawsze mniejsza o 2 od ogólnej liczby adresów w podsieci (nie licząc specyficznego przypadku maski /32). Należy to mieć na uwadze planując podsieci IP.

WARSTWY SIECI

Pakiety IP można przesyłać na różne sposoby: przez kabel (np. Ethernet), przez łącze radiowe, przez wirtualny tunel, przez ADSL+PPP. Jednak połączenie IP nie określa jakich technologii użyto do jego realizacji, znane są tylko adresy IP dwóch hostów, które się ze sobą łączą. Dzięki temu pisząc program nie trzeba nic wiedzieć o skomplikowanych technologiach przesyłu. Wynika to z podzielenia komunikacji sieciowej na tzw. warstwy: program każde przesłać pakiet pod wskazany adres IP, a system operacyjny się martwi co z nim zrobić, np. przekazać karcie sieciowej, która sama będzie się martwiła co z nim zrobić, np. nadać określony strumień bitów na kablu miedzianym. Warstwy wyglądają następująco (od najniższej do najwyższej):
1. Warstwa fizyczna - określa fizyczne warunki w jakich realizowane jest połączenie. Np. kabel miedziany, światłowód, powietrze, itp.
2. Warstwa łącza danych - określa technologię przesyłania pakietów, jej szybkość, sposoby łączenia wielu urządzeń, sposoby adresowania urządzeń. Np. Ethernet, ATM, Wi-Fi.
3. Warstwa sieciowa - określa adresację i sposób kierowania pakietów w sieci globalnej. Obecnie standardem jest IP, jednak istnieją inne rozwiązania. Np. w grze Starcraft (1998 r.) była możliwość gry multiplayer przez IPX. Warstwa sieciowa to pierwsza warstwa, której obsługa musi być zaimplementowana w programie.
4. Warstwa transportowa - np. TCP, UDP (dla IP), SPX (dla IPX). Warstwa daje programom spore możliwości, upraszczając obsługę połączenia. Np. wprowadza tzw. porty, dzięki którym programy otrzymują pakiety przeznaczone tylko dla nich (pakiety przychodzą na port powiązany z danym programem) lub umożliwia przesłanie danych z maksymalną prędkością i gwarancją poprawnego dostarczenia.
5-7. Warstwy związane z konkretnymi aplikacjami - dla nas nieistotne.

Gdy nie ma połączenia w warstwie niższej, to nie może go być warstwie wyższej. Przykład: jak fizycznie wypniemy kabel to nie może działać nam połączenie Ethernet. Jednak fakt, że mamy połączenie w warstwie niższej (np. mamy wpięty kabel i wszystkie jego żyły przewodzą poprawnie) to nie znaczy jeszcze, że będzie nam działało połączenie warstwy wyższej (Ethernet). Typowym przypadkiem tej zasady jest sytuacja, w której mamy sprawne połączenie w warstwie Ethernet, a nie działa nam połączenie IP (np. ze względu na nieprawidłową konfigurację podsieci IP).

Pakiety warstwy niższej zawierają w sobie pakiety warstwy wyższej. Inaczej mówimy, że pakiet warstwy niższej to pakiet warstwy wyższej z doklejonymi nagłowkami. Przykładowo jeśli BBB to jakiś pakiet IP, który chcemy przesłać przez Ethernet to wyślemy pakiet AABBB, gdzie AA to dane warstwy drugiej. Z kolei BBB, poza danymi IP, będzie zawierał w sobie dane TCP, itd.

Następne 3 rozdziały opowiedzą o warstwie drugiej, czyli łącza danych. Zarówno Ethernet, jak i WLAN mają dużo cech wspólnych, bo były tworzone z myślą o dużej kompatybilności. Przykładowo oba rozwiązania do adresowania urządzeń używają adresów MAC.

ADRES MAC

Adres MAC, inaczej zwany adresem fizycznym, to unikatowy adres przypisywany każdemu urządzeniu (np. karcie sieciowej) przez producenta. Urządzenia posiadające kilka portów mogą mieć przypisany osobny adres MAC dla każdego portu.

Ethernet i WLAN zapewniają komunikację między adresami MAC. Do komunikacji między urządzeniami nie jest konieczne połączenie IP - programy mogą po prostu obsługiwać komunikację w warstwie MAC. Można to zaobserwować łącząc się z Mikrotikiem, który nie ma ustawionego adresu IP. Mówimy wtedy o połączeniu w warstwie drugiej lub połączeniu przez MAC.

Adres MAC składa się z 6 bajtów i zapisywany jest w systemie szesnastkowym. Do rozdzielania bajtów używa się różnych znaków, stosuje się też różną wielkość liter, np.:
00-0A-E6-3E-FD-E1 (Windows)
00:0A:E6:3E:FD:E1 (Mikrotik)
00:0a:e6:3e:fd:e1 (Linux)
Na etykietach sprzętu można znaleźć adresy MAC jeszcze dziwniej zapisane.
Pierwsze 3 bajty adresu (00:0A:E6) określają producenta sprzętu, pozostałe 3 identyfikują dany egzemplarz urządzenia. Adres MAC nie może się powtórzyć. Producenta można łatwo sprawdzić za pomocą: http://curreedy.com/stu/nic/

Zadanie nr 6: Kto jest producentem karty sieciowej o adresie fizycznym 00:0A:E6:3E:FD:E1?

Każdy pakiet MAC zawiera m.in. adres źródłowy MAC (kto wysłał pakiet) i adres docelowy MAC (do kogo pakiet jest skierowany).

SWITCH / BRIDGE

Switch (przełącznik) to urządzenie, które posiada wiele portów Ethernet i pozwala łączyć ze sobą inne urządzenia. Switch pracuje w warstwie drugiej, decyduje o tym jak kierować pakiety MAC do odbiorców. Bridge to pojęcie bardzo zbliżone. O switchu mówimy, kiedy mamy na myśli konkretne urządzenie (rozwiązanie sprzętowe), a o bridge'u gdy chodzi nam o samą funkcję kierowania pakietów warstwy drugiej (może być realizowane programowo, np. między 2 kartami sieciowymi w komputerze). Można więc powiedzieć, że switch realizuje funkcję bridge'a. W praktyce często można tych pojęć używać zamiennie. Switch/bridge ma znacznie większe możliwości niż opisane: może filtrować pakiety, wyłączać niektóre porty, tworzyć połączenia zapasowe. Jednak zasadnicza funkcja to kierowanie pakietów do odbiorcy.

Switch, po włączeniu, nie wie nic na temat sieci. Wszystkie porty jakie ma niczym się od siebie nie różnią. Gdy otrzyma pakiet z jednego portu, wysyła go na wszystkie pozostałe. Zapisuje sobie jednak źródłowy adres MAC tego pakietu i port z jakiego przyszedł, żeby pakiet powrotny wysłać tylko na ten port. Po krótkim czasie switch będzie znał lokalizację wszystkich MAC-ów w sieci (pod warunkiem, że odebrał pakiet od danego MAC-a). Metoda ta nazywa się uczeniem MAC-ów.
W pewnym momencie, jakieś urządzenie może zmienić swoją lokalizację lub zostać na stałe wyłączone. Aby nie zaśmiecać pamięci switcha nieaktualnymi danymi po upływie określonego czasu (standardowo 5 min) wpis dotyczący tego urządzenia jest usuwany. Ta metoda czyszczenia pamięci nazywa się timeout. Jeśli urządzenie wyśle jakiś pakiet z nowej lokalizacji dane w switchu są od razu aktualizowane. Zbiór adresów MAC oraz powiązanych z nimi portów nazywa się tablicą MAC. Tablice te mają ograniczoną pojemność, a gdy zostanie ona przekroczona to niektóre wpisy są usuwane. W takiej sytuacji pakiety ponownie mogą iść na wszystkie porty. Aby temu zapobiec należy dobierać switche odpowiednie do wielkości sieci.

Przykładowa tablica MAC:
AA:AA:AA:AA:AA:AA - port 1
BB:BB:BB:BB:BB:BB - port 2
CC:CC:CC:CC:CC:CC - port 2
Oznacza, że z portu nr 1 switch odebrał pakiet od AA, a z portu nr 2 - od BB i CC.

Zadanie nr 7: podaj tablicę MAC switcha, który otrzymał następujące pakiety MAC:
1. Port źródłowy 1, MAC źródłowy AA:AA:AA:AA:AA:AA, MAC docelowy BB:BB:BB:BB:BB:BB
2. Port źródłowy 5, MAC źródłowy BB:BB:BB:BB:BB:BB, MAC docelowy AA:AA:AA:AA:AA:AA
3. Port źródłowy 7, MAC źródłowy CC:CC:CC:CC:CC:CC, MAC docelowy AA:AA:AA:AA:AA:AA
4. Port źródłowy 8, MAC źródłowy DD:DD:DD:DD:DD:DD, MAC docelowy EE:EE:EE:EE:EE:EE
5. Port źródłowy 1, MAC źródłowy BB:BB:BB:BB:BB:BB, MAC docelowy CC:CC:CC:CC:CC:CC
6. Port źródłowy 7, MAC źródłowy CC:CC:CC:CC:CC:CC, MAC docelowy BB:BB:BB:BB:BB:BB
Które z tych pakietów były wysłane na wszystkie porty (poza źródłowym) zakładając, że switch został dopiero włączony?

Urządzenia w sieci mogą wymusić przesłanie pakietów na wszystkie porty switcha (poza źródłowym). Aby to zrobić w adresie docelowym podają adres broadcastowy MAC: FF:FF:FF:FF:FF:FF. Serię pakietów tego typu nazywamy ruchem broadcastowym. Dotyczy to m.in. pakietów wysłanych na adres IP broadcastowy (np. 192.168.1.255, pamiętasz jeszcze rozdział wyżej ;p?). Dotyczy to też niektórych pakietów ARP.

Pakiety warstwy drugiej mogą dotrzeć tylko w obrębie sieci warstwy drugiej, która zwykle jest lokalna. Pakiety te nie przejdą przez urządzenie warstwy trzeciej (np. router). W szczególności ruch broadcastowy nie przejdzie przez router.

ARP (Address Resolution Protocol)

Gdy mamy funkcjonującą sieć Ethernet, czyli działają połączenia w warstwie MAC można zestawić połączenie IP. Hosty, które chcą się połączyć muszą mieć przypisane adresy IP z tej samej podsieci. Gdy system operacyjny otrzyma od programu pakiet IP do wysłania, musi zdecydować na jaki adres MAC go wysłać. Przy tej decyzji korzysta z protokołu ARP.

Załóżmy, że mamy 2 hosty:
Host A, IP 192.168.0.1/24 oraz MAC AA:AA:AA:AA:AA:AA
Host B, IP 192.168.0.2/24 oraz MAC BB:BB:BB:BB:BB:BB
Host A chce wysłać pakiet IP do hosta B. Przed wysłaniem pakietu IP wysyła pakiet ARP na adres broadcastowy MAC (FF:FF:FF:FF:FF:FF), czyli do każdego urządzenia w sieci z pytaniem: "Kto ma adres IP 192.168.0.2?". Pakiet ten nazywa się żądaniem ARP (ARP Request). Hosty, które nie mają tego adresu pytanie zignorują. Host B odpowie (ARP Reply): "Ja mam!". Odpowiedź wyśle bezpośrednio do hosta A, czyli na MAC AA:AA:AA:AA:AA:AA. W odpowiedzi umieści swój adres źródłowy MAC (BB:BB:BB:BB:BB:BB). W ten sposób host A poznał adres MAC hosta B i odwrotnie. Zajęło to trochę czasu, ale tylko raz. Teraz komunikacja będzie się odbywać bez używania niewydajnego broadcastu. Niewydajnego, bo docierającego do wszystkich zakątków sieci, również tych, gdzie połączenie radiowe z trudem wyciąga kilka Mb/s. Konieczność wysłania zapytania ARP wyjaśnia czemu pingując pewnego hosta w podsieci, pierwszy ping trwa dłużej niż pozostałe.

Informację o związku IP z MAC nazywamy wpisem ARP. Listę takich wpisów utrzymuje system operacyjny i można je zobaczyć wpisując komendę "arp -a" (pod Linuxem i pod Windowsem). Do tej listy można też dodać wpis ręcznie (tzw. statyczny wpis ARP) i wtedy system nie będzie wysyłał zapytań ARP.

DHCP (Dynamic Host Configuration Protocol)

Ręczne ustawianie adresów IP często jest bardzo niewygodne. Wyobraźcie sobie pewną sieć Wi-Fi, dla której po połączeniu musicie przeczytać karteczkę od dostawcy i w ustawić odpowiedni dla was adres IP, maskę, bramkę i DNS. Kiedyś w sieciach osiedlowych tak właśnie było, każdy abonent miał swoje IP, które musiał ręcznie ustawić na komputerze.

Aby tego uniknąć stosuje się protokół przyznawania adresów DHCP. Dla działania DHCP konieczne jest prawidłowe połączenie w warstwie MAC. Host, który przyznaje adresy IP to serwer DHCP. Host, który nie zna swojego adresu IP i chce go otrzymać z sieci nazywa się klientem DHCP (ma tzw. dynamiczne IP lub automatyczną konfigurację IP).

Gdy host, który jest klientem DHCP połączy się z siecią, wysyła zapytanie na adres broadcastowy MAC (FF:FF:FF:FF:FF:FF): "Kto mi da IP?". Na to zapytanie serwer odpowiada na adres MAC pytającego: "A masz 192.168.1.100/24, brama 192.168.1.1, DNS 192.168.1.1".
Komunikacje przedstawiłem w dużym uproszczeniu, ale wystarczy, żeby wiedzieć do czego jest DHCP.

Klient wysyłając zapytanie oczywiście przekazuje swój adres MAC. Serwer może przechowywać listę powiązań (adres MAC - adres IP) i na jej podstawie przyznawać odpowiednie adresy IP. Może też mieć określoną pulę adresów dynamicznych i przyznawać pierwszy wolny z tej puli. Aby ustalić czy dany adres znów jest wolny serwer stosuje timeout (jak w switchach i tablicach MAC, tyle że znacznie dłuższy) i odpytuje hosty czy nadal korzystają z adresu.

Każdy router domowy ma serwer DHCP po stronie sieci wewnętrznej (prywatnej) i przyznaje IP z puli dynamicznej. Wiele routerów pozwala też ustawić powiązania (adres MAC - adres IP), czyli dodać statyczne wpisy DHCP.

W przypadku zmiany wpisów DHCP i restarcie serwera DHCP należy pobrać IP na nowo. W Windowsie robi się to na różne sposoby:
- restart komputera (gdy klient nie ogarnia lub ma Vistę/Win8)
- restart (wyłącz/włącz) na Połączeniu lokalnym (gdy ogarnia i ma Win7)
- "Napraw" na połączeniu lokalnym (gdy ogarnia i ma WinXP)
- komendami "ipconfig /release" i "ipconfig /renew" (gdy niewskazane jest nawet chwilowe rozłączenie połączenia Ethernet)
W przypadku routera zwykle robimy restart (wyłącz/włącz) routera. Większość routerów umożliwia przez stronę (zwykle Status) zwolnienie obecnego adresu (Release) i pobranie nowego (Renew).

W związku z tym, że zapytanie o serwer DHCP jest wysyłane na adres broadcastowy MAC i nie zawiera adresu docelowego IP to zasięg DHCP ogranicza się do sieci warstwy drugiej (Ethernet / Wi-Fi) - przez router nie przejdzie (przynajmniej bez specjalnego proxy).

ROUTING - POŁĄCZENIE KILKU PODSIECI IP

Gdy nasz host ma przypisany adres IP 192.168.0.5/24 to wie, że inne hosty z puli 192.168.0.0 - 192.168.0.255 są dostępne w warstwie drugiej i pakiety do nich należy od razu pchać na kartę sieciową. Jednak wiadomo, że nie wszystkie hosty znajdują się w naszej sieci lokalnej (choćby te z Chin). Aby sobie poradzić i z nimi host ma ustawione gdzie wysłać pakiet, w zależności od docelowego adresu IP. Ustawienia te nazywają się tablicą routingu. Przykładowa tablica:
192.168.0.0/24 - karta Ethernet #1
10.0.0.0/24 - karta Ethernet #2
10.1.0.0/16 - karta WLAN
10.2.0.0/16 - przez 10.1.0.254 - karta WLAN
0.0.0.0/0 - przez 10.0.0.1 - karta Ethernet #2

Gdy host będzie chciał wysłać pakiet na wybrany adres IP to przeszuka tablicę routingu i podejmie decyzję, której karcie sieciowej ją przekazać. Dla każdego pakietu host przegląda tablicę od góry do dołu i sprawdza czy docelowy adres IP jest z podsieci widniejącej przy kolejnych wpisach w tablicy. Przykłady:
host docelowy 192.168.0.105 - przekaż karcie Ethernet #1
host docelowy 10.1.25.200 - przekaż karcie WLAN
host docelowy 10.2.25.200 - przekaż karcie WLAN, aby wysłała pakiet na MAC hosta 10.1.0.254
host docelowy 10.0.0.199 - przekaż karcie Ethernet #2
host docelowy 192.168.1.105 - przekaż karcie Ethernet #2, aby wysłała pakiet na MAC hosta 10.0.0.1
host docelowy 8.8.8.8 - jw.
host docelowy 212.77.100.101 - jw.

Ostatni wpis w tablicy routingu, czyli 0.0.0.0/0, który można skrócić do 0/0 pasuje do wszystkich adresów IP. Będą tam wysyłane pakiety domyślnie, o ile nie będą pasowały do żadnego wpisu wcześniej. Ten wpis nazywa się bramą domyślną.

Zadanie nr 8: Tablica routingu hosta wygląda następująco:
192.168.3.15/32 - karta Ethernet #1
192.168.0.0/24 - karta Ethernet #1
192.168.1.0/24 - karta Ethernet #2
10.0.0.0/24 - karta Ethernet #2
10.0.0.0/16 - karta Ethernet #1
0/0 - przez 192.168.0.1 - karta Ethernet #1
Jaką decyzję podejmie host, gdy będzie chciał wysłać pakiet:
a) do hosta 192.168.0.15
b) do hosta 192.168.1.15
c) do hosta 192.168.2.15
d) do hosta 192.168.3.15
e) do hosta 10.0.0.15
f) do hosta 10.0.1.15
g) do hosta 10.0.55.15
h) do hosta 10.0.0.0

Gdy host otrzyma pakiet nie przeznaczony dla niego tylko dla innego hosta i prześle go dalej zgodnie ze swoją tablicą routingu to taki host staje się routerem. Samą operację przesyłania pakietu dalej nazywamy forwardowaniem.

Wyobraźmy sobie sytuację, w której mamy 3 routery: R1, R2, R3. Routery są źle skonfigurowane i dla pewnego docelowego adresu IP, R1 kieruje pakiet do R2, R2 do R3, a R3 do R1. W takiej sytuacji pakiet będzie krążył i nie dotrze do celu. Aby nie krążył bez końca (i w efekcie nie przeciążył sieci) wprowadzono parametr Time-to-Live (TTL). Host wysyłając pakiet określa jego TTL (zwykle ok. 60), a każdy router po drodze obniża TTL o 1. Pakiet z TTL=0 jest kasowany. Wyklucza to istnienie pętli w sieci warstwy 3.

Dzięki routerom można tworzyć dużą sieć IP, której hosty używają różnych technologii warstwy drugiej. Największą siecią jaką znam tego typu jest Internet :) Każdy router ma ustawione, gdzie forwardować pakiety, aby dotarły do celu - czasem może to być nawet 20 routerów z rzędu. Ścieżkę uzyskaną przez kolejne routery nazywamy trasą routingu.

Router to taki bridge, tyle że warstwy 3. Bridge to taki router, tyle że warstwy 2.

DNS (Domain Name System)

Powiedziane było, że hosty w Internecie komunikują się za pomocą adresów IP. Wiecie jednak, że wpisujecie w przeglądarce "facebook.com", a nie jakieś dziwne numery. Aby nie trzeba było pamiętać adresów IP wprowadzone zostały domeny internetowe. DNS to protokół zmieniający domenę na adres IP i odwrotnie. Gdy wpiszemy w przeglądarce facebook.com to program najpierw sprawdzi, jaki adres IP ma domena facebook.com i dalej będzie kierował pakiety na ten adres IP. Operacja ta nazywa się rozwiązywaniem domeny lub wysyłaniem zapytania DNS, a nasz host pełni rolę klienta DNS. Domeny działają nie tylko w Internecie - docelowy host może być w naszej sieci prywatnej i będziemy mogli się z nim komunikować bez dostępu do Internetu.

DNS pozwala na tworzenie poddomen, określa wiele parametrów domen, buduje światową sieć serwerów buforujących zapytania (DNS cache). Jedną z ważnych cech systemu DNS jest jego niezawodność. Każda domena musi być zdefiniowana na przynajmniej 2 serwerach DNS (nie licząc buforujących), niektórzy stosują znacznie więcej (np. 4). Dodatkowo klienci DNS zwykle mają określone przynajmniej 2 serwery DNS, do których mogą kierować zapytania. Gdy pierwszy serwer nie odpowie to zapytanie jest kierowane do drugiego.

Ważną rzeczą, o której należy pamiętać przy diagnostyce problemów z Internetem jest fakt, że często połączenie z Internetem działa poprawnie, a nie działa sam DNS. Bardzo łatwo to sprawdzić łącząc się (wpisując w przeglądarce lub pingując) z adresem IP hosta, a nie z domeną. Ja zawsze wpisuję 212.77.100.101, czyli wp.pl. Jeśli 212.77.100.101 odpowiada, a wp.pl - nie, sprawa jest jasna: problemów należy szukać w DNS.

Należy wiedzieć, że nie trzeba korzystać z serwera DNS jaki otrzymaliśmy przez DHCP. Oto kilka, z milionów serwerów DNS na świecie:
8.8.8.8 - DNS Google
194.204.159.1 - DNS TP (Orange)
153.19.250.100 - DNS TASK
Możecie sprawdzić, że to działa podając jeden z nich w ustawieniach połączenia sieciowego.

Najprostszym sposobem ręcznego rozwiązania domeny jest zpingowanie jej (np. ping wp.pl) i przeczytanie do jakiego adresu IP kierowane są pingi.

TCP, PORTY SIECIOWE (ZAAWANSOWANE)

W rozdziale o warstwach było wspomniane TCP oraz skrótowe możliwości warstwy transportowej. Rozwinę ten temat. W oparciu o IP możemy realizować 3 typy połączeń:
- ICMP - do testowania połączenia (np. ping, traceroute)
- TCP - połączenie automatycznie korzystające z maksymalnej prędkości, dające gwarancję dostarczenia pakietów (w przypadku zagubienia pakietu następuje retransmisja) i poprawnej kolejności dostarczenia (kolejność jest poprawiana po stronie odbiorcy)
- UDP - połączenie "wyślij i zapomnij", zapewniające niski czas dostarczenia, używane w grach lub w strumieniach (np. video), gdzie nieaktualne pakiety można wyrzucić do kosza

Zarówno TCP, jak i UDP, działają w oparciu o porty. Port jest numerem od 0 do 65535. Program, który chce coś wysłać musi otworzyć port (ang. bind). Dzięki temu, gdy host otrzyma pakiet zwrotny od razu będzie wiedział, do którego programu go skierować, a sam program nie będzie otrzymywał śmieci (innych pakietów, nie dla niego). Każdy pakiet TCP/UDP zawiera port docelowy (czyli ten otwarty przez program na hoście docelowym) oraz port źródłowy (czyli ten na który ma przyjść pakiet zwrotny). Port zwykle umieszcza się za adresem IP, po dwukropku, piszemy np. 192.168.1.1:80.

Większość popularnych usług w Internecie ma ustalone porty, na których działają (nasłuchują pakietów). Przykłady:
HTTP, czyli WWW - TCP 80
HTTPS, czyli bezpieczne WWW - TCP 443
FTP - TCP 21, TCP 20
DNS - TCP 53, UDP 53
DHCP - UDP 67

Gdy wpiszemy w przeglądarce "www.onet.pl" przeglądarka rozwiąże domenę, połączy się z otrzymanym adresem IP, przez TCP na port 80. Możemy też jawnie podać protokół i numer portu wpisując "http://www.onet.pl:80". Efekt identyczny. O ile serwer Onetu musi mieć ustalony port, żeby każdy mógł się z nim połączyć, to połączenie, które idzie z naszego komputera do Onetu może wychodzić z dowolnego portu. Przeglądarka dla każdego takiego połączenia otwiera nowy, przyznany przez system port, np. TCP 3543. Serwer Onetu zobaczy z jakiego IP i z jakiego portu źródłowego otrzymał połączenie i odpowiedzi będzie wysyłał na ten IP:port.

Przykład połączenia, adres IP naszego kompa to 71.24.136.9:
a) użytkownik wpisuje w przeglądarce http://www.wp.pl
b) przeglądarka rozwiązuje domenę wysyłając zapytanie do serwera DNS i dostaje odpowiedź: "Host http://www.wp.pl ma adres IP 212.77.100.101"
c) przeglądarka prosi system operacyjny o nawiązanie połączenia TCP z IP 212.77.100.101 z portem 80 (bo używamy HTTP), z dowolnym portem źródłowym
d) system operacyjny otwiera port 2033 i nawiązuje połączenie
e) serwer 212.77.100.101:80 akceptuje połączenie przychodzące od 71.24.136.9:2033 i na ten IP:port odsyła stronę html (przesłanie całej strony z obrazkami oznacza wymianę wielu pakietów, ale wszystkie są idą tą samą metodą)

TCP, w odróżnieniu od UDP, utrzymuje stan połączenia. Jeśli pakiety danych nie są wysyłane przez jakiś czas to wysyłane są pakiety "keep-alive". Połączenie będzie zerwane dopiero, gdy jedna ze stron jawnie je zakończy lub nie będzie odpowiedzi na "keep-alive" przez dłuższy czas (timeout). Takie połączenie nazywa się sesją TCP. W połączeniach radiowych często 1 sesja TCP nie jest w stanie wykorzystać pełnego transferu - tworząc kilka sesji TCP możemy ściągać szybciej.

Samo nawiązanie połączenia TCP wiąże się z wymianą kilku pakietów inicjujących (SYN, SYN+ACK, ACK). Dodatkowo otrzymanie każdego pakietu jest potwierdzane odpowiedzią ACK (Acknowledgment). O tym jednak pisać nie będę, zapraszam do ostatniego rozdziału.

NAT W SZCZEGÓŁACH (ZAAWANSOWANE)

Na wstępie pisałem ogólnie czym jest NAT. Wyjaśnię tutaj jak on naprawdę działa, bo to jest ciekawe :)

Nie każdy router robi NAT. W rozdziale o routingu nie było mowy o przekształcaniu adresów IP podczas forwardu - pakiety były przekazywane bez żadnych zmian. Zobaczmy co się stanie w takiej sytuacji w przypadku routera domowego.

Adres IP Routera po stronie wewnętrznej (prywatnej): 192.168.1.1/24
Adres IP Routera po stronie zewnętrznej (publicznej): 71.24.136.9/23
Bramka domyślna Routera: 71.24.136.1
Adres IP Komputera1 w sieci prywatnej: 192.168.1.101/24
Adres IP Komputera2 w sieci prywatnej: 192.168.1.102/24
Bramka domyślna Komputerów: oczywiście 192.168.1.1

1. Przypadek bez NAT
a) Komputer1 (K1) wysyła pakiet do wp.pl (212.77.100.101) z portu powiedzmy 2045. Przegląda swoją tablicę routingu, w której jest tylko:
192.168.1.0/24 - karta Ethernet #1
0/0 - przez 192.168.1.1 - karta Ethernet #1
b) w związku z tym, że adres 212.77.100.101 nie pasuje do pierwszego wpisu, K1 kieruje pakiet na domyślną bramę, czyli na Router (R).
c) R otrzymuje pakiet i jako router przesyła go dalej zgodnie ze swoją tablicą routingu:
192.168.1.0/24 - karta Ethernet #1 (LAN)
71.24.136.0/23 - karta Ethernet #2 (WAN)
0/0 - przez 71.24.136.1 - karta Ethernet #2 (WAN)
d) pakiet dociera do kolejnego routera (71.24.136.1) i w końcu do WP (212.77.100.101)
e) WP chce odesłać stronę, ale widzi, że pakiet przyszedł z adresu 192.168.1.101:2045 - nie ma pojęcia gdzie odesłać pakiet, bo takich sieci prywatnych są miliony
f) tak naprawdę pakiet ten zostanie odrzucony przez jeden z pierwszych routerów po drodze, bo jest bez sensu (routery filtrują pakiety z prywatnych podsieci IP)

2. Przypadek z NAT bez zmiany portu
a) K1 wysyła pakiet do wp.pl (212.77.100.101) z portu 2045
b) R otrzymuje pakiet, ale przed wysłaniem go do 71.24.136.1 dokonuje zmiany adresu źródłowego w pakiecie (Source NAT, SNAT) z 192.168.1.101 na swój własny, czyli 71.24.136.9
c) pakiet dociera do kolejnego routera (71.24.136.1) i w końcu do WP (212.77.100.101)
d) WP odsyła stronę na 71.24.136.9:2045
e) R otrzymuje pakiet zwrotny i dokonuje zmiany adresu docelowego w pakiecie (Destination NAT, DNAT) z 71.24.136.9 na 192.168.1.101
f) pakiet dociera do K1, czyli 192.168.1.101:2045

Działa? Prawie... Jeśli K1 i K2 jednocześnie wyślą pakiety do Internetu to R nie będzie wiedział, gdzie skierować pakiety powrotne. Wymyślono rozwiązanie problemu.

3. Przypadek z NAT ze zmianą portu
a) K1 wysyła pakiet do wp.pl (212.77.100.101) z portu 2045
b) K2 wysyła pakiet do onet.pl (213.180.141.140) z portu 3012
c) R otrzymuje pakiet od K1, ale przed wysłaniem go dalej zmienia Source IP 192.168.1.101 -> 71.24.136.9 oraz Source Port 2045 -> 20243
d) R otrzymuje pakiet od K2, ale przed wysłaniem go dalej zmiena Source IP 192.168.1.102 -> 71.24.136.9 oraz Source Port 3012 -> 20244
e) R zapisuje sobie też, że port 20243 jest powiązany z 192.168.1.101:2045, a port 20244 jest powiązany z 192.168.1.102:3012. Zbiór takich informacji nazywa się tablicą NAT
f) gdy R otrzymuje pakiet zwrotny na port 20244 przegląda tablicę NAT i zmiana Destination IP na 192.168.1.102 oraz Destination Port na 3012
g) podobnie postępuje z pakietem, który dostanie na port 20243
h) oba pakiety trafiają tam gdzie powinny

Eureka! Dzięki temu rozwiązaniu możliwe jest korzystanie z Internetu przez wiele hostów przy użyciu jednego adresu publicznego. Dzięki temu dopiero w 2012 roku w Europie skończyła się dostępna pula publicznych adresów IP i rozwój Internetu nie został zatrzymany.

Tablica NAT rozróżnia porty TCP i UDP. A co z ICMP? Te pakiety nie działają w oparciu o porty natomiast mają swoje identyfikatory i numery sekwencyjne, które również trafiają do tablicy NAT i umożliwiają dostarczenie pakietów z powrotem.

Z powyżej analizy wynika, że połączenie między komputerem z sieci prywatnej i komputerem z sieci publicznej musi być zainicjowane z sieci prywatnej. Serwer w Internecie, który sam chce się połączyć z hostem z sieci prywatnej i przyśle coś do routera z NAT nie dostanie odpowiedzi - router nie będzie wiedział komu przekazać pakiet, bo nie będzie miał odpowiedniego wpisu w tablicy NAT. Ma to wady i zalety. Podstawowa zaleta jest taka, że komputery za NAT-em są zabezpieczone przez atakami z Internetu (przynajmniej znaczną częścią tych ataków). Wady są takie, że trudno jest wykonać połączenie między hostami, zza różnych NAT-ów oraz że hosty za NAT-em nie mogą udostępniać usług w Internecie. Tę drugą wadę często się obchodzi robiąc przekierowanie wybranych portów (np. port 80, aby wybrany host pracował jako serwer WWW) lub tzw. strefę DMZ (de facto przekierowanie na danego hosta wszystkich portów poza tymi z tablicy NAT).

PODSIECI IP Z MASKAMI POŚREDNIMI (ZAAWANSOWANE)


W rozdziale o maskach podałem 5 podstawowych masek podsieci. Jak nie trudno zauważyć, charakteryzowały się one tym, że każdy z bajtów wynosił 255 albo 0. W praktyce stosuje się też inne maski, które pozwalają tworzyć podsieci o liczbie adresów np. większej od 256, ale mniejszej od 65536.

Precyzyjnie rzecz biorąc maska mówi ile pierwszych bitów adresu IP stanowi adres podsieci. Pozostałe bity określają hosta. Adres IP, tak samo jak maska, składa się z 4 bajtów, czyli 32 bitów. Każda maska w zapisie binarnym ma najpierw jedynki (bity podsieci), potem zera (bity hosta). W związku z tym nie istnieje maska 255.255.0.255, bo gdy zapiszemy ją binarnie to mamy jedynki, potem zera, potem znów jedynki (11111111111111110000000011111111). To samo dotyczy maski 255.255.255.213 (11111111111111111111111111010101).

Wszystkie dostępne maski w IPv4:
/0 = 0 jedynek, potem zera = /0.0.0.0
/1 = 1 jedynka, potem zera = /128.0.0.0
/2 = 2 jedynki, potem zera = /192.0.0.0
/3 = 3 jedynki, potem zera = /224.0.0.0
/4 = 4 jedynki, potem zera = /240.0.0.0
/5 = 5 jedynek, potem zera = /248.0.0.0
/6 = 6 jedynek, potem zera = /252.0.0.0
/7 = 7 jedynek, potem zera = /254.0.0.0
/8 = 8 jedynek, potem zera = /255.0.0.0
/9 = 9 jedynek, potem zera = /255.128.0.0
/10 = 10 jedynek, potem zera = /255.192.0.0
/11 = 11 jedynek, potem zera = /255.224.0.0
/12 = 12 jedynek, potem zera = /255.240.0.0
/13 = 13 jedynek, potem zera = /255.248.0.0
/14 = 14 jedynek, potem zera = /255.252.0.0
/15 = 15 jedynek, potem zera = /255.254.0.0
/16 = 16 jedynek, potem zera = /255.255.0.0
/17 = 17 jedynek, potem zera = /255.255.128.0
/18 = 18 jedynek, potem zera = /255.255.192.0
/19 = 19 jedynek, potem zera = /255.255.224.0
/20 = 20 jedynek, potem zera = /255.255.240.0
/21 = 21 jedynek, potem zera = /255.255.248.0
/22 = 22 jedynki, potem zera = /255.255.252.0
/23 = 23 jedynki, potem zera = /255.255.254.0
/24 = 24 jedynki, potem zera = /255.255.255.0 (typowa maska dla podsieci domowych)
/25 = 25 jedynek, potem zera = /255.255.255.128
/26 = 26 jedynek, potem zera = /255.255.255.192
/27 = 27 jedynek, potem zera = /255.255.255.224
/28 = 28 jedynek, potem zera = /255.255.255.240
/29 = 29 jedynek, potem zera = /255.255.255.248
/30 = 30 jedynek, potem zera = /255.255.255.252
/31 = 31 jedynek, potem zera = /255.255.255.254
/32 = 32 jedynki, potem zera = /255.255.255.255

Oto metoda na obliczenie liczby adresów w podsieci dla dowolnej maski:
Każdy z bajtów maski oddzielnie odejmujemy od liczby 256 i te cztery wyniki wymnażamy. Np. dla maski 255.255.240.0 mamy: (256-255)*(256-255)*(256-240)*(256-0) = 1*1*16*256 = 4096. Tak naprawdę trzeba wykonać tylko jedno odejmowanie, bo tylko jeden bajt może być różny od 255 i jednocześnie różny od 0 - w trzech pozostałych bajtach wynik widać na pierwszy rzut oka.

Rzadko zachodzi potrzeba dokładnego liczenia adresów w podsieci, ale należy pamiętać, że liczba ta zawsze jest potęgą 2, a także, że zmniejszenie maski o 1 krok podwaja tę liczbę.

W rozdziale o podsieciach liczyliśmy zakresy adresów, czyli adres podsieci i rozgłoszeniowy, dla różnych IP i masek. Podobnie robi się, z maskami pośrednimi, z tym że jest trochę trudniej. Każdy z bajtów adresu IP / maski rozpatrujemy osobno. Powinniście już wiedzieć co robić dla przypadku 0 lub 255. Przypomnę: jeśli przy danym bajcie maska = 255 to w obu adresach (podsieci i rozgłoszeniowym) przepisujemy wartość z adresu IP. Jeśli przy danym bajcie maska = 0 to w adresie podsieci piszemy 0, a w adresie rozgłoszeniowym 255. Jeden z bajtów maski może mieć wartość pośrednią. W takiej sytuacji, wartość adresu podsieci to pierwsza liczba mniejsza niż wartość z adresu IP podzielna przez (256-wartość z maski). Natomiast wartość adresu rozgłoszeniowego to pierwsza liczba większa niż wartość z adresu IP podzielna przez (256-wartość z maski), pomniejszona o 1. Przykład:
Adres IP z maską: 91.154.73.112/19
Maska w notacji bajtowej: 255.255.224.0
Pierwszy etap (bajty 1,2,4): 91.154.X.0 - 91.154.Y.255
Drugi etap (bajt 3): szukamy liczby mniejszej niz 73, podzielnej przez (256-224)=32, ta liczba to X=64. Szukamy liczby większej niz 73, podzielnej przez 32, ta liczba to 96, odejmujemy jeden, Y=95.
Zakres adresów IP w podsieci: 91.154.64.0 - 91.154.95.255

Być może brzmi to strasznie, ale jak zauważymy, że operujemy tylko liczbami: 2,4,8,16,32,64,128 oraz ich wielokrotnościami, to możemy się nauczyć te obliczenia robić w pamięci, nawet nie zmieniając maski na notację bajtową.

Zadanie nr 9: podaj zakres adresów podsieci, w której jest host o adresie IP:
a) 192.168.23.122/25
b) 127.127.127.127/6
c) 15.14.194.1/20
d) 246.18.256.17/1

Zadanie nr 10: podaj maskę podsieci i zapisz podsieć w notacji CIDR dla zakresu adresów:
a) 192.168.16.0 - 192.168.31.255
b) 10.192.0.0 - 10.195.255.255
c) 160.0.0.0 - 191.255.255.255

NARZĘDZIA DIAGNOSTYCZNE

Opiszę tutaj podstawowe narzędzia do diagnozy problemów z Internetem. Wiedza zawarta w poradniku jest potrzebna, żeby używać ich z głową. Przedstawione narzędzia to komendy, które pod Windowsem należy odpalać przez Start - Uruchom (polecam skrót: Windows+R).

1. ping (Windows, Linux) - wysyła podstawowy pakiet testowy ICMP Echo Request. Host docelowy ma odpowiedzieć pakietem ICMP Echo Reply, zwanym też "pong". Odpowiedź zawiera TTL, umożliwia określenie czasu przesłania pakietu w obu kierunkach (RTT, Round Trip Time, potocznie zwany po prostu "pingiem"), gdy niektóre pakiety pozostaną bez odpowiedzi ping określi straty (lossa) na łączu.
Ping to najbardziej podstawowe narzędzie diagnostyczne. Podaje statystykę czasów odpowiedzi, tzn. czas minimalny, maksymalny, średni i odchylenie standardowe (im większe tym bardziej skakał).
W obu systemach pinga przerywamy tak samo jak inne komendy tekstowe: Crtl+C. Jeśli interesują nas statystyka końcowa to pod Windowsem warto ręcznie uruchomić konsolę (Start - Uruchom - cmd) i tam odpalić pinga, bo inaczej okno nam się od razu zamknie i nic nie zobaczymy. Jeśli pingujemy domenę (wp.pl zamiast 212.77.100.101), a system jej nie rozwiąże to ping zakończy działanie przed wysłaniem 1 pakietu. Informacja o poprawnym rozwiązaniu domeny jest potwierdzona przez podanie adresu IP.
a) ping wp.pl -t (Windows) - Windows domyśle wysyła 4 pingi, aby pingował bez końca należy dodać parametr -t
b) ping wp.pl -f (Linux) - flood, czyli wysyłaj pakiety masowo, bez przerw. Kropki symbolizują pakiet, na który nie przyszła odpowiedź
c) ping 192.168.1.1 -s1450 (Linux) - wysyłaj pakiety o rozmiarze 1450 bajtów zamiast domyślnego 56 bajtów - pozwala na dokładniejsze określenie start na łączu, bo dla małych pakietów często możemy otrzymać 0 strat i dojść do błędnego wniosku, że wszystko jest w porządku
d) ping wp.pl -c100 (Linux), ping wp.pl -n 100 - wyślij 100 pakietów i zakończ
e) ping wp.pl -n (Linux) - nie przekształcaj adresu IP, z którego przyszła odpowiedź na domenę, czyli Reverse DNS (bo to zajmuje czas i czasem można odnieść wrażenie, że ping dziwnie działa)
f) ping 192.168.1.1 -fnc200 -s1000 (Linux) - połączenie wszystkim parametrów powyżej. Doskonały test na straty pakietów na łączu - szybko (-f) wyślij 200 pakietów (-c200) o rozmiarze 1000 bajtów (-s1000) i nie czekaj na rDNS (-n)
g) ping 192.168.1.1 -i0.2 (Linux) - określa interwał między kolejnymi pingami na 0,2 sek. Przydatne, gdy nie mam roota, wymaganego do floodowania
h) ping -r 9 (Windows), ping -R (Linux) - opisane poniżej

2. tracert (Windows), traceroute (Linux) - program również wysyła pakiety ICMP, ale takie, które nakazują wszystkim routerom po drodze wysłanie odpowiedzi. Służy do badania trasy pakietów. Trzeba pamiętać, że trasa do hosta docelowego może być inna niż trasa powrotna, traceroute pokaże nam tylko tę pierwszą. Czasem się zdarza, że router po drodze odmawia przysłania odpowiedzi. W takiej sytuacji (lub straty pakietu) traceroute wyświetla "*" zamiast czasu odpowiedzi. Dla mnie traceroute jest niewygodny i używam narzędzi poniżej.

3. pathping (Windows), mtr (Linux) - podobnie jak traceroute podaje trasę routingu do hosta docelowego, ale tworzy też statystykę czasów odpowiedzi i strat pakietów do kolejnych routerów. Część routerów może nie odpowiadać celowo (np. 1%), więc nie zawsze wskazuje to, że loss jest akurat między tymi dwoma routerami, gdzie zaczynamy obserwować starty.

4. WinMTR (Windows, trzeba ściągnąć) - program okienkowy, który działa bardzo podobnie do mtra z Linuxa.

5. hrping (Windows, trzeba ściągnąć) - program, który działa bardzo podobnie do pinga z Linuxa.

6. ping -r 9 (Windows), ping -R (Linux) - ping rejestruje trasę pakietu w obie strony. Dla małej liczy hopów (routerów po drodze) pozwala to określić trasę powrotną pakietu. Niestety rejestrowane jest tylko 9 kolejnych routerów, dlatego dokładne określenie trasy będzie możliwe tylko do hostów oddalonych o max 5 hopów. Powyżej tego zaczniemy tracić informacje.

Wiele hostów blokuje ICMP na firewallu, w tym Windowsy. Mniej więcej co trzeci router blokuje ICMP od strony sieci zewnętrznej (WAN). Oznacza to, że nie dostaniemy odpowiedzi na pinga, mimo że połączenie działa bez zarzutów.

7. arping (Linux, zwykle trzeba doinstalować. Debian/Ubuntu: apt-get install iputils-arping) - komenda wykonuje sztuczne zapytanie ARP, tzn. wysyła do wszystkich pakiet MAC, z pytaniem: "Kto ma adres IP ...?". Żaden firewall nie może blokować takiego zapytania, bo inaczej nie działałoby mu połączenie. Dzięki temu arping powie nam czy host jest aktywny nawet jak ma firewalla blokującego ICMP. Arping pozwala też na wykrycie konfliktów IP w sieci, tzn. sytuacji w której 2 różne hosty mają ten sam adres IP.
a) arping 192.168.1.1 - w odpowiedzi otrzymamy adres MAC hosta 192.168.1.1 oraz czas całej operacji

8. Pewna symulacja arpinga pod Windowsem:
a) ping 192.168.1.1 (od razu wychodzimy, Ctrl+C)
b) arp -a - sprawdzamy adres MAC hosta 192.168.1.1 w naszej tablicy ARP, Type invalid oznacza brak odpowiedzi ARP
c) w tablicy ARP znajduje się host, który jako ostatni odpowiedział na zapytanie ARP, jeśli zdarzy się, że zobaczymy 2 różne adresy MAC dla danego hosta (kolejno powtarzając b)) - wykryliśmy konflikt
d) host będzie w tablicy przez pewien czas od rozłączenia (od minuty do kilku), dopiero gdy będzie usunięty z tablicy, ping+arp można powtórzyć

PRZYKŁADY TYPOWYCH PROBLEMÓW Z POŁĄCZENIEM

TO-DO

WIĘCEJ INFO

Doskonałym źródłem wiedzy o sieciach jest Wikipedia. Tak naprawdę ta dziedzina zmienia się tak szybko, że wszelkie podręczniki, a nawet artykuły w Internecie bardzo szybko tracą aktualność. Na podstawie kilku lat studiów (Informatyka z podspecjalnością Sieci Komputerowe @ ETI) stwierdzam: Wiki rządzi. Wszystko co opisałem powyżej to podstawowe informacje na dany temat. Jeśli interesują was szczegóły, takie jak struktura pakietów, skomplikowane mechanizmy TCP czy choćby historia Ethernetu to zapraszam właśnie tam. Osobiście zwykle korzystam z angielskiej wersji, bo jest bardziej rozbudowana.

Poradnik jest Free-To-Use
Autor: Tomek Gruca
Data: 2012-12-16

_________________
Pozdrawiam,
Colir
--
Startupy.co - polskie forum o startupach


Na górę
Wyświetl posty nie starsze niż:  Sortuj wg  
Forum zablokowane  Ten temat jest zamknięty. Nie można w nim pisać ani edytować postów.


Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 8 gości


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Przejdź do:  
Dzisiaj jest wt, 17 sty 2017 16:51:48

Strefa czasowa UTC+02:00
Nakarm glodne dziecko - wejdz na strone www.Pajacyk.pl


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
SubSilver2 modified for Trzepak.pl by Colir
Polski pakiet językowy dostarcza phpBB.pl