Narzędzia użytkownika

Narzędzia witryny


sk1:ip_icmp_dhcp

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
sk1:ip_icmp_dhcp [2017/03/21 14:55]
jkonczak [Pomiędzy warstwą łącza danych a warstwą sieci]
sk1:ip_icmp_dhcp [2018/04/05 13:17] (aktualna)
jkonczak [Pomiędzy warstwą łącza danych a warstwą sieci]
Linia 1: Linia 1:
 ===== Protokół IPv4 ===== ===== Protokół IPv4 =====
-Internet Protocol version 4+IPv4 = Internet Protocol version 4 <​html><​small></​html>​([[https://​tools.ietf.org/​html/​rfc791|RFC 791]]); czasami skracane do inet<​html></​small></​html>​
  
-Budowa ​pakietu, ​[[https://​pl.wikipedia.org/​wiki/​IPv4#​Nag.C5.82.C3.B3wek_IP|nagłówek IP]] \\ +Budowa ​nagłówka IP [[https://​tools.ietf.org/​html/​rfc791#​section-3.1|[1]]] ​[[https://​pl.wikipedia.org/​wiki/​IPv4#​Nag.C5.82.C3.B3wek_IP|[2]]]: \\ 
-TTL \\ +  * długość całego pakietu (z nagłówkiem),​ długość nagłówka <​html><​small>​ i opcje</​small></​html>​ 
-Fragmentacjaflagi MF, offset. Flaga DF+  * adresy IPźródłowy i docelowy 
 +  * protokół warstwy wyższej 
 +    * http://​www.iana.org/​assignments/​protocol-numbers/​protocol-numbers.xhtml 
 +    * ''​less /​etc/​protocols''​ 
 +  * fragmentacja 
 +    * numer identyfikacyjnyflaga MF i offset 
 +    * flaga DF 
 +  * TTL 
 +  * <​html><​small></​html>​ [[https://​en.wikipedia.org/​wiki/​Differentiated_services|DiffServ]] i [[https://​en.wikipedia.org/​wiki/​Explicit_Congestion_Notification#​Operation_of_ECN_with_IP|ECN]] (wcześniej ToS)<​html></​small></​html>​
  
-Protokół warstwy wyższej http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml+<​html><​small><​/html> 
 +Dla przetestowania fragmentacji spróbuj zmienić rozmiar pakietu ping: ''​ping -s <​rozmiar>​ <​cel>'',​ np: \\ 
 +''​ping -s 5000 1.1.1.1''​  
 +<​html><​/small><​/html> 
 + 
 +<​html><​!-
 +''​socat ​/etc/​protocols,​rdonly udp-datagram:​150.254.32.130:​9''​ 
 +''​socat /​etc/​protocols,​rdonly udp-datagram:​224.0.0.1:​9''​ 
 +--></​html>​
  
 ===== ICMP i IGMP ===== ===== ICMP i IGMP =====
 +==== ICMP ====
 Protokół IP nie przewiduje informowania nadawcy o problemach. Protokół IP nie przewiduje informowania nadawcy o problemach.
  
-Funkcje diagnostyczne i kontrolne dla IPv4 spełnia protokół ​ICMP (http://​en.wikipedia.org/​wiki/​Internet_Control_Message_Protocol). Pozwala on m. inn. na:+Funkcje diagnostyczne i kontrolne dla IPv4 spełnia protokół ​[[http://​en.wikipedia.org/​wiki/​Internet_Control_Message_Protocol|ICMP (Internet_Control_Message_Protocol)]] \\ ICMP pozwala ​m. inn. na:
   * wysłanie informacji zwrotnej o niedostarczeniu pakietu (destination unreachable,​ TTL exceeded)   * wysłanie informacji zwrotnej o niedostarczeniu pakietu (destination unreachable,​ TTL exceeded)
   * testowanie łączności (ping)   * testowanie łączności (ping)
  
-Do zarządzanie przynależnością do grup multicastowych w IPv4 służy IGMP.+Aby zaobserwować komunikaty ICMP, można wykonać: 
 +  * ''​ping <//​cel//>''​ 
 +  * ''​traceroute [-q 1] -T <//​cel//>''​ (porównaj z ''​traceroute -I <//​cel//>''​) 
 +  * połączenie ​do nieużywanego portu, np: ''​host pl. lab-net-1''​ (z lab-net) 
 +  * połączenie do nieosiągalnego (np. nieistniejącego) adresu, np. ''​host pl. lab-sec-33''​ (z lab-net) 
 +<​html><​!-- 
 +(lub ''​tftp lab-net-1 -c get readme.txt''​) 
 +(lub ''​tftp lab-sec-33 -c get readme.txt''​) 
 +--></​html>​
  
-''​ping''​ \\ ''​traceroute [-I]''​+==== IGMP ==== 
 + 
 +Do zarządzanie przynależnością do grup multicastowych w IPv4 służy IGMP [[https://​en.wikipedia.org/​wiki/​Internet_Group_Management_Protocol|[1]]]. 
 + 
 +<​html><​small></​html>​ 
 +Dzięki IGMP urządzenia sieciowe wysyłają wiadomości multicastowe tylko zainteresowanym odbiorcom ​ [[https://​en.wikipedia.org/​wiki/​IGMP_snooping|[2]]],​ a urządzenia końcowe mogą przyjmować tylko ramki z interesujących ich grup multicastowych. \\ 
 +Wyświetlenie grup do których należy komputer [IP]: ''​netstat -g''​ \\ 
 +Wyświetlenie grup do których należy komputer [MAC]: ​''​cat /​proc/​net/​igmp''​\\ 
 +Oczekiwanie na wiadomość multicastową:​ ''​socat udp-recvfrom:​2222,​ip-add-membership=239.1.2.3:​br0 ​-''​ 
 +++++ Przykładowy wynik poleceń: | <​html><​pre>​ 
 +# netstat -ng 
 +IPv6/IPv4 Group Memberships 
 +Interface ​      ​RefCnt Group 
 +--------------- ------ --------------------- 
 +br0             ​1 ​     <span title="​Adres 224.0.0.251 odpowiada adresowi MAC 01:​0E:​00:​00:​FB"​ style="​background-color:​rgba(128,​0,​128,​0.2)">​224.0.0.251</​span>​ 
 +br0             ​1 ​     224.0.0.1 
 + 
 +# cat /​proc/​net/​igmp 
 +Idx     ​Device ​   : Count Querier ​      ​Group ​   Users Timer    Reporter 
 +3       ​wlan0 ​    : ​    ​2 ​     V3 
 +                                <span title="​Adres 224.0.0.251 odpowiada adresowi MAC 01:​0E:​00:​00:​FB,​ stąd FB0000E0"​ style="​background-color:​rgba(128,​0,​128,​0.2)">​FB0000E0</​span> ​    1 0:​00000000 ​              0 
 +                                010000E0 ​    1 0:​00000000 ​              0 
 +</​pre></​html>​ 
 +++++ 
 +<​html></​small></​html>​
  
 ===== Trasowanie ===== ===== Trasowanie =====
Linia 25: Linia 74:
 Jeśli cel nie jest bezpośrednio połączony,​ dane (pakiety) trzeba wysłać **przez** inne urządzenie,​ tj. trzeba wybrać dalszą **trasę** pakietu.\\ Jeśli cel nie jest bezpośrednio połączony,​ dane (pakiety) trzeba wysłać **przez** inne urządzenie,​ tj. trzeba wybrać dalszą **trasę** pakietu.\\
 Stąd urządzenie działające na warstwie sieci to trasownik (router). Stąd urządzenie działające na warstwie sieci to trasownik (router).
 +
 +Adresy IP i MAC na drodze pakietu od źródła do celu
  
 ===== Pomiędzy warstwą łącza danych a warstwą sieci ===== ===== Pomiędzy warstwą łącza danych a warstwą sieci =====
-ARP - http://​en.wikipedia.org/​wiki/​Address_Resolution_Protocol +Protokół ​ARP - http://​en.wikipedia.org/​wiki/​Address_Resolution_Protocol
-  * wyświetlanie znanych odwzorowań ''​arp'' ​  / ​  ''​ip neigh''​ +
-  * czyszczenie wszystkich odwzorowań ''​ip n flush all''​+
  
-Ręczne ​wysyłanie żądania ARP – ''​arping''​+Narzędzia:​ 
 +  * wyświetlanie znanych odwzorowań ''​arp''​ / ''​ip neigh''​  
 +  * <​html><​small></​html>​ręczne ​dodanie odwzorowania \\ ''​arp -i //br0// -s //1.0.0.0// //​02:​de:​ad:​00:​be:​ef//''​ \\ ''​ip neigh add //1.0.0.0// lladdr //​02:​de:​ad:​00:​be:​ef//​ dev //​br0//''​ <​html></​small></​html>​ 
 +  * <​html><​small></​html>​ręczne usunięcie odwzorowania \\ ''​arp -i br0 -d  //​1.0.0.0//''​ \\ ''​ip neigh del //1.0.0.0// dev //​br0//''​ <​html></​small></​html>​ 
 +  * czyszczenie wszystkich odwzorowań ​''​ip neigh flush all''​
  
-Adresy ​IP i MAC na drodze pakietu od źródła do celu+Ręczne wysyłanie żądania ARP – ''​arping''​\\ 
 +''​arping -I <//​interfejs//>​ <//​adres ​IP//>''​ \\ 
 +''​arping -I //br0// //​150.254.32.129//''​ 
 +++++ Przykładowe wyniki poleceń: | 
 +<​html><​pre>​ 
 +# ip -4 n 
 +10.0.0.1 dev wlan0 lladdr e8:​de:​27:​34:​8c:​91 <span title="​System uznaje wpis za aktualny"​ style="​background-color:​rgba(0,​255,​0,​0.2)">​REACHABLE</​span>​ 
 +10.0.0.253 dev wlan0  <span title="​System próbował znaleźć adres MAC dla żądanego IP, ale próba nie powiodła się" style="​background-color:​rgba(255,​0,​0,​0.2)">​FAILED</​span>​ 
 +10.0.0.254 dev wlan0 lladdr cc:​af:​78:​34:​82:​d7 <span title="​System uznaje wpis za przeterminowany,​ ale przechowuje go żeby kolejne żądanie o ten adres IP wysłać najpierw unicastowo pod pamiętany MAC" style="​background-color:​rgba(255,​255,​0,​0.4)">​STALE</​span>​ 
 +10.0.1.2 dev br0 lladdr 84:​16:​f9:​bb:​f4:​a3 STALE 
 +10.0.1.3 dev br0 lladdr 44:​8a:​5b:​21:​4c:​e3 STALE 
 +10.0.1.250 dev br0 lladdr 02:​00:​00:​00:​00:​01 STALE
  
 +# arping -c 5 -I br0 10.0.1.250
 +ARPING 10.0.1.250
 +42 bytes from 02:​00:​00:​00:​00:​01 (10.0.1.250):​ index=0 time=120.205 usec
 +42 bytes from 02:​00:​00:​00:​00:​01 (10.0.1.250):​ index=1 time=59.082 usec
 +42 bytes from 02:​00:​00:​00:​00:​01 (10.0.1.250):​ index=2 time=55.915 usec
 +42 bytes from 02:​00:​00:​00:​00:​01 (10.0.1.250):​ index=3 time=57.665 usec
 +42 bytes from 02:​00:​00:​00:​00:​01 (10.0.1.250):​ index=4 time=56.081 usec
 +
 +--- 10.0.1.250 statistics ---
 +5 packets transmitted,​ 5 packets received, ​  0% unanswered (0 extra)
 +rtt min/​avg/​max/​std-dev = 0.056/​0.070/​0.120/​0.025 ms</​pre></​html>​++++
 Slajdy: ''​[[http://​www.cs.put.poznan.pl/​mlibuda/​ARP.pdf|Protokół ARP]]''​ Slajdy: ''​[[http://​www.cs.put.poznan.pl/​mlibuda/​ARP.pdf|Protokół ARP]]''​
-===== DHCP ===== 
  
-DHCP: +Opis implementacji ARP pod Linuksem: ''​man 7 arp'' ​(samo ''​man arp'' ​pokaże pomoc dla polecenia ​''​arp''​) 
-  * Komunikaty discover, offer, request, nack, ack, release + 
-  * Przepływ wiadomości dla przyznawania,​ odnawiania i zwalniania adresu - http://​seth.galitzer.net/?​q=node/​8 +<​html><​small>​ 
-  * Zakres adresów (address pool), dzierżawa (lease) +<h3>[EKSTRA]</h3> 
-  * Dane przekazywane przez DHCP - [[http://​pl.wikipedia.org/​wiki/​Dynamic_Host_Configuration_Protocol#​Parametry_konfiguracji_przekazywane_do_klienta|http://​pl.wikipedia.org/​wiki/​Dynamic_Host_Configuration_Protocol]] +</html> 
-  * Stały adres IP a DHCP +Fragmentacja IP a rzeczywistość:​ https://blog.cloudflare.com/ip-fragmentation-is-broken
-Serwer - ''​dhcpd''​, klienty DHCP - ''​dhcpcd dhclient udhcpc pump''​ + 
-  * żądanie adresu IP: ''​dhcpcd ​[-d] //eth0//'' ​''​dhclient [-d] [-v] //​eth0//''​ +Protokół ARP znalazł zastosowanie w wielu technologiach warstwy 2 ([[https://www.iana.org/assignments/arp-parameters/arp-parameters.xhtml|[1]]]),​ natomiast na warstwie 3 używany jest tylko dla adresów IPv4.
-  * uwlnienie adresu IP''​dhcpcd -k //eth0//'' ​''​dhclient ​-r //​eth0//''​+
  
-Zeroconf (http://en.wikipedia.org/wiki/Zero_configuration_networking),​ APIPA, Avahi+Komenda ''​arp''​ jest też dostępna w systemie Windows: https://technet.microsoft.com/en-us/library/​cc940107.aspx
  
 +Q: Dlaczego komenda ''​arping''​ nie uzupełnia mapowań IP—MAC?\\
 +A: Domyślnie Linux uzupełnia mapowania tylko w odpowiedzi na żądania ARP generowane przez jądro systemu. Aby akceptować inne pakiety ARP, można wydać polecenie:​\\
 +''​sysctl net.ipv4.conf.all.arp_accept=1''​\\
 +Dokumentacja:​ https://​www.kernel.org/​doc/​Documentation/​networking/​ip-sysctl.txt
 +<​html></​small></​html>​
sk1/ip_icmp_dhcp.1490104555.txt.gz · ostatnio zmienione: 2017/03/21 14:55 przez jkonczak