quinta-feira, 27 de janeiro de 2011

ARP

Dentro da rede local, os pacotes são transformados em frames, onde são endereçados ao endereço MAC da placa de rede destino e não ao endereço IP. Acontece que, inicialmente, o sistema não sabe quais são os endereços MAC das placas dos outros micros da rede local, sabe apenas os endereços IP que deve acessar.
O ARP (Address Resolution Protocol) faz compania ao IP e ao ICMP na camada 3 do modelo OSI, oferecendo justamente uma forma simples de descobrir o endereço MAC de um determinado host, a partir do seu endereço IP. A estação manda um pacote de broadcast (chamado "ARP Request"), contendo o endereço IP do host destino e ele responde com seu endereço MAC. Como os pacotes de broadcast são custosos em termos de banda da rede, cada estação mantém um cache com os endereços conhecidos.
Naturalmente, isso é feito de forma transparente. É mais um detalhe técnico com o qual você não precisa se preocupar se quer apenas usar a rede, mas que é interessante estudar quando está interessado em entender seu funcionamento. Você pode verificar o cache de endereços ARP do seu micro (no Linux) usando o comando "arp":
$ arp
Address HWtype HWaddress Flags Mask Iface
192.168.1.254 ether 00:30:CD:03:CD:D2 C eth0
192.168.1.23 ether 00:11:D8:56:62:76 C eth0
 
192.168.1.56 ether 00:11:D8:57:45:C3 C eth0
Existe também o "RARP" (reverse ARP), que tem a função oposta: contatar um host da rede quando o endereço MAC é conhecido, mas o endereço IP não. Embora menos usado, o RARP também é importante, pois ele é usado quando uma estação precisa obter sua configuração de rede via DHCP.
Ao receber o pacote de broadcast enviado pela estação, o servidor DHCP sabe apenas o endereço MAC da estação e não seu endereço IP (que afinal ainda não foi definido). Ele é capaz de responder à solicitação graças ao RARP. Sem ele, não teríamos DHCP.
Muitas distribuições Linux incluem o "arping", um pequeno utilitário que utiliza o ARP ao invés do ping para descobrir se outras máquinas da rede local estão online. A vantagem é que mesmo máquinas protegidas por firewall, ou configuradas para não responder pings respondem a pacotes ARP, fazendo com que ele seja mais uma ferramenta interessante na hora de diagnosticar problemas na rede.
Nas distribuições derivadas do Debian, você pode instalá-lo via apt-get (apt-get install arping). Para usar, basta informar o endereço IP ou endereço MAC da máquina alvo, como em:
$ arping 192.168.1.110
ARPING 192.168.1.110
60 bytes from 00:11:d8:21:52:76 (192.168.1.110): index=0 time=112.057 usec
60 bytes from 00:11:d8:21:52:76 (192.168.1.110): index=1 time=101.089 usec
60 bytes from 00:11:d8:21:52:76 (192.168.1.110): index=2 time=99.897 usec
Uma observação importante é que o ARP é usado apenas dentro da rede local, o único local onde são usados endereços MAC. Quando o pacote passa pelo gateway e é encaminhado para a Internet, os campos com os endereços MAC são removidos, o que faz com que o arping e outros utilitários baseados em pacotes ARP deixem de funcionar.
Se você tiver a curiosidade de disparar o arping contra um host da Internet, vai perceber que, embora o comando seja executado sem erros, ele fica parado indefinidamente aguardando por uma resposta que nunca vem:
$ arping google.com
ARPING 64.233.167.99
(espera infinita...)
Isso acontece pois o pacote de broadcast enviado pelo arping não é encaminhado pelo gateway da rede, ele só seria respondido se, por acaso, existisse um micro dentro da rede local utilizando o endereço "64.233.167.99". Mesmo que o pacote fosse incorretamente encaminhado para a Internet, ele não iria muito longe, pois seria descartado no primeiro roteador por onde passasse.
Uma curiosidade sobre os endereços MAC é que eles podem ser usados para descobrir o fabricante da placa de rede. Para isso, acesse o http://standards.ieee.org/regauth/oui/ e faça uma busca pelos 6 primeiros dígitos do endereço MAC. Ele retornará os dados da empresa responsável pela faixa, como em:
00-15-00 (hex) Intel Corporate
001500 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Hi-Tech Park
Kulim Kedah 09000
MALAYSIA
O endereço MAC é composto por duas informações. Os 6 primeiros dígitos são um código atribuído à empresa pelo IEEE e usado em todas as suas placas, enquanto os outros 6 dígitos são um código sequencial, usado para identificar cada placa. Como cada fabricante pode usar apenas seus próprios códigos ao produzir as placas, a busca permite descobrir com uma boa dose de certeza quem é o fabricante real.
Ao fazer a busca pelo código da placa de rede onboard de uma placa mãe, ou de um notebook, você quase sempre descobre o fabricante. Por exemplo, o código da Asus é o "00:15:F2", enquanto o código da Compal (que é a real fabricante de um grande número de notebooks revendidos por outros integradores) é o "00:16:D4".


Nenhum comentário:

Postar um comentário

Últimas Postagens