Dydaktyka:
FeedbackIPv4 = Internet Protocol version 4 (RFC 791); czasami skracane do inet
less /etc/protocols
Dla przetestowania fragmentacji spróbuj zmienić rozmiar pakietu ping: ping -s <rozmiar> <cel>
, np:
ping -s 5000 1.1.1.1
Protokół IP nie przewiduje informowania nadawcy o problemach.
Funkcje diagnostyczne i kontrolne dla IPv4 spełnia protokół ICMP (Internet_Control_Message_Protocol)
ICMP pozwala m. inn. na:
Aby zaobserwować komunikaty ICMP, można wykonać:
ping <cel>
traceroute [-q 1] -T <cel>
(porównaj z traceroute -I <cel>
)host pl. lab-net-1
(z lab-net)host pl. lab-sec-33
(z lab-net)
Do zarządzanie przynależnością do grup multicastowych w IPv4 służy IGMP [1].
Dzięki IGMP urządzenia sieciowe wysyłają wiadomości multicastowe tylko zainteresowanym odbiorcom [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 -
# netstat -ng IPv6/IPv4 Group Memberships Interface RefCnt Group --------------- ------ --------------------- br0 1 224.0.0.251 br0 1 224.0.0.1 # cat /proc/net/igmp Idx Device : Count Querier Group Users Timer Reporter 3 wlan0 : 2 V3 FB0000E0 1 0:00000000 0 010000E0 1 0:00000000 0
Zadaniem warstwy łącza danych jest dostarczenie danych do wybranego bezpośrednio połączonego urządzenia.
Zadaniem warstwy sieci jest dostarczenie danych do wybranego urządzenia [w domyśle: dowolnego w sieci].
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).
Adresy IP i MAC na drodze pakietu od źródła do celu
Protokół ARP - http://en.wikipedia.org/wiki/Address_Resolution_Protocol
Narzędzia:
arp
/ ip neigh
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
arp -i br0 -d 1.0.0.0
ip neigh del 1.0.0.0 dev br0
ip neigh flush all
Ręczne wysyłanie żądania ARP – arping
arping -I <interfejs> <adres IP>
arping -I br0 150.254.32.129
# ip -4 n 10.0.0.1 dev wlan0 lladdr e8:de:27:34:8c:91 REACHABLE 10.0.0.253 dev wlan0 FAILED 10.0.0.254 dev wlan0 lladdr cc:af:78:34:82:d7 STALE 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
Slajdy: Protokół ARP
Opis implementacji ARP pod Linuksem: man 7 arp
(samo man arp
pokaże pomoc dla polecenia arp
)
[EKSTRA]
Fragmentacja IP a rzeczywistość: https://blog.cloudflare.com/ip-fragmentation-is-broken/
Protokół ARP znalazł zastosowanie w wielu technologiach warstwy 2 ([1]), natomiast na warstwie 3 używany jest tylko dla adresów IPv4.
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