O
Address Resolution Protocol (ARP) [2] é um protocolo para mapear um endereço IP de um endereço de uma máquina física (MAC) [3] que é reconhecida na rede local. Por exemplo, um IP versão 4 (IPv4), o tipo de IP mais comumente usado hoje em dia, um endereço IP tem 32 bits de tamanho.
Em uma rede local Ethernet, entretanto, os endereços de dispositivos conectados possuem 48 bits de tamanho. Para aumentar a eficiência da rede e não engargalar a conexão realizando o broadcast do ARP, cada computador mantém uma tabela de endereços IP e endereços Ethernet na memória. Isto é chamado de cache ARP. Antes de enviar um broadcast para toda a rede, o computador transmissor verificará se a informação existe em seu cache ARP. Se existir, ele completará os dados Ethernet sem enviar um broadcast ARP e evitando de engargalar a conexão.
Cada entrada dura normalmente 20 minutos (mas depende do sistema operacional). A RFC 1122 especifica que é possível configurar o valor do tempo de expiração do cache ARP no host. Para examinar o cache em um computador com Windows, UNIX ou
Linux, digite "
arp -a" no console ou prompt de comando. O ARP provê as regras do protocolo realizando esta correlação e possibilitando a conversão de endereços em ambas as direções.
Como o ARP Funciona
Quando um pacote destinado a uma máquina de uma rede local particular chega no gateway, o gateway solicita ao programa ARP que encontre um host físico ou endereço MAC que esteja de acordo com o endereço IP. O programa ARP olha no ARP cache e, se encontra o endereço, retorna o mesmo e assim o pacote pode ser convertido ao formato e tamanho corretos e enviado à máquina. Se nenhuma entrada é encontrada para o endereço IP, o ARP faz um broadcast de um pacote de requisição especial para todas as máquinas na rede para ver se uma das máquinas sabe qual delas tem o IP associado. Uma máquina reconheça o endereço IP como o seu, retorna uma resposta indicando isso.
Assim, o ARP atualiza seu cache para futura referência e então envia o pacote de dados para o endereço MAC que respondeu. Aqui está um exemplo simples de comunicação por ARP. Uma recepcionista de uma empresa, solicita ao editor de texto de seu computador que imprima a lista de contatos atualizada da companhia. Esta é sua primeira impressão de arquivo hoje. Seu computador (endereço IP 192.168.0.16) quer encontrar o serviço de impressão da impressora HP LaserJet do escritório (endereço IP 192.168.0.45). Desse modo, o computador da recepcionista faz o broadcast de uma requisição ARP para toda a rede local perguntando: Quem tem o endereço IP 192.168.0.45?, como visto na figura 1.
Todos os dispositivos da rede ignoram esta requisição ARP (ARP Request), exceto a impressora HP LaserJet. A impressora reconhece seu próprio IP na requisição e envia uma resposta (ARP Reply):
Oi, meu endereço IP é 192.168.0.45. Aqui está meu endereço MAC: 00:90:7F:12:DE:7F como na figura 2. Agora o computador da recepcionista sabe o endereço MAC da impressora. Ele envia o pedido de impressão para o dispositivo correto, e também associa o endereço MAC da impressora 00:90:7F:12:DE:7F com o endereço IP da mesma 192.168.0.45 em sua tabela ARP.
Figura 1 - Funcionamento do ARP
Figura 2 - Funcionamento do ARP
Este é o caso quando o host receptor está na mesma rede. Se o host receptor está em outra rede, computador transmissor passará por sua tabela de roteamento e determinará o roteador correto ( um roteador deve estar entre duas ou mais redes) para enviar os dados e substituirá o endereço Ethernet pelo do roteador no cabeçalho ethernet. O endereço IP encapsulado deve ainda possuir o endereço IP que receberá o pacote de dados. Quando o roteador recebe a mensagem, ele procura nas informações do IP para dizer para onde enviar os dados no próximo passo. Se o receptor está na rede onde o roteador está conectado, ele irá realizar a resolução de endereço do ARP, ou utilizando o buffer de cache ARP ou realizando um broadcasting.