1 <!-- subject: {ARP} ping -->
2 <!-- date: 2008-06-06 18:49:58 -->
3 <!-- tags: arp, dhcp, mac, ip, arpping, arping -->
4 <!-- categories: Articles, Techblog -->
6 <p>Czas jakiś temu potrzebowałem sprawdzić, na komputerze bez przydzielonego
7 adresu sieciowego, czy komputer o podanym adresie istnieje. Chciałem
8 mianowicie, zależnie od wyniku tego testu skonfigurować sieć statycznie lub
9 dynamicznie. Szybko szczególną uwagę zwróciłem na protokół
10 <a href=https://tools.ietf.org/html/rfc826
>ARP
</a>.
12 <p>W protokole Ethernet urządzenia są rozpoznawane za pomocą adresów MAC,
13 a więc, aby móc wysłać pakiet do komputera o danym
<span lang=en
>IP
</span>
14 należy najpierw poznać jego adres sprzętowy. Do tego właśnie służy protokół
15 ARP (gwoli ścisłości, może on być wykorzystany również przy innych protokołach
16 warstwy drugiej i trzeciej).
18 <p>Jak to działa? Pierwsza strona rozsyła do wszystkich (na adres broadcast,
19 tj.q
<code>FF:FF:FF:FF:FF:FF
</code>) zapytanie, wypełniając swój adres IP
20 i MAC oraz adres IP, o który chce się zapytać. W odpowiedzi, druga strona
21 wysyła ramkę z oboma adresami, swoimi i komputera wysyłającego pytanie.
23 <p>Nie każdy zdaje sobie sprawę, iż protokół ten można wykorzystywać nawet
24 jeżeli nie ma się swojego adresu sieciowego — wówczas w odpowiednie pole
25 wpisujemy same zera. W niczym to nie przeszkadza — w żadnym momencie protokół
26 warstwy trzeciej nie jest wszak wykorzystywany.
28 <p>Warto wspomnieć, iż mechanizm ten jest wykorzystywany przez klienty DHCP, do
29 sprawdzania (na wszelki wypadek), czy adres im nadany jest faktycznie
30 wolny — nazywa się to
<a lang=en
31 href=https://tools.ietf.org/html/rfc5227
>Adress Conflict Detection
</a>.
33 <p>Dla zainteresowanych
34 <a href=https://github.com/mina86/tinyapps/blob/master/arpping.c
>aplikacja
</a>,
35 która próbuje wykryć adres sprzętowy urządzenia o podanym adresie sieciowym.
38 <!-- date: 2008-06-07 07:53:29 -->
40 <!-- nick_url: http://sad.jogger.pl -->
42 <p>Co więcej, komputer
<em>zawsze
</em> odpowie na arpinga bez względu na to, jak bardzo restrykcyjnego firewalla byśmy nie mieli*. Przydatne jest to do sprawdzania, czy dany komputer „żyje” czy nie.
44 <p>*) No chyba, że ktoś jest maniakiem i do tego guru.
47 <!-- date: 2008-06-23 00:21:27 -->
49 <!-- nick_url: http://blog.outlaw.one.pl -->
51 <p>Sad komputer nie odpowie tylko jego karta sieciowa odpowie :) W szak to tam praktycznie kończy się sieć do której jest wpięty nasz komputer :)