Document

Propaganda
ADDRESS RESOLUTION PROTOCOL
Thiago de Almeida Correia
São Paulo
2011
1. Visão Geral
Em uma rede de computadores local, os hosts se enxergam através de dois endereços, sendo
um deles o endereço Internet Protocol (IP) e o outro endereço de hardware ou media access control
address (MAC address). Os protocolos de nível superior utilizam o endereço IP como um endereço
de destino, porém, esses não conhecem o endereço MAC do destino. Entretanto, a solução para este
problema é conhecida como Address Resolution Protocol (ARP), ou seja, um protocolo responsável
por mapear os endereços MAC.
Quando um host pretende comunicar com outro host pela primeira vez, o host de origem não
terá o endereço MAC de destino mapeado, por isso, a origem utiliza o ARP. O ARP gerará uma
mensagem do tipo ARP request (requisição), cujo destino será todos os hosts daquela rede local,
com o objetivo de aguardar uma única mensagem, a mensagem ARP reply (resposta) do host de
destino informando o seu respectivo endereço MAC. Após obter o endereço MAC do destino, o
host de origem armazenará em uma tabela ARP cache (armazenamento temporário) o endereço
aprendido e na sequência dará continuidade a comunicação.
2. Detalhando o ARP
O ARP é largamente utilizado em redes Ethernet 802 para mapear endereços IP´s para
endereços MAC. Para realizar esse mapeamento o ARP está relacionado com o driver da interface
de rede do host. O protocolo ARP possui uma especificação que descreve apenas suas
funcionalidades e não sua implementação. Suas funcionalidades estão tornou-se um protocolo
padrão da Internet e seu Request For Comments (RFC) é RFC826. A implementação do protocolo
depende diretamente do driver da interface de rede e o tipo de rede, para que um novo microcódigo
seja gerado para a interface de rede.
2.1 Formato do pacote ARP
Para mapear o endereço IP e o protocolo para MAC, o protocolo ARP precisa de um formato
especifico de pacote. Este formato está descrito a seguir:
Onde:
Hardware address space (tipo de hardware): Campo de 16 bits representado em formato
hexadecimal, que especifica o tipo de hardware utilizado na rede física. No exemplo uma captura
mostrando uma rede do tipo Ehternet.
Protocol address space (tipo de protocolo): Campo de 16 bits representado em formato
hexadecimal, que especifica o tipo de protocolo de camada três que está sendo utilizado. No
exemplo uma captura mostrando o protocolo IP.
Byte length hardware address (tamanho do endereço de hardware): Campo de 8 bits
representado em bytes, que especifica o tamanho do endereço de hardware que está sendo utilizado.
No exemplo abaixo uma captura mostrando o tamanho do endereço MAC.
Byte length protocol address (tamanho do endereço do protocolo): Campo de 8 bits
representado em bytes, que especifica o tamanho do endereço do protocolo que está sendo utilizado
em camada de rede. No exemplo abaixo uma captura mostrando o tamanho do endereço IP.
Operation code (código de operação): Campo de 16 bits representado em hexadecimal, que
especifica o tipo de mensagem usada pelo protocolo ARP. No exemplo abaixo uma captura
mostrando uma mensagem do tipo request.
Hardware address of sender (endereço de hardware da origem): Campo de n bytes, que
especifica o endereço de hardware que está gerando a mensagem. No exemplo uma captura
mostrando o endereço MAC.
Protocol address of sender (endereço do protocolo da origem): Campo de n bytes, que
especifica o endereço do protocolo que está gerando a mensagem. No exemplo uma captura
mostrando o endereço IP.
Hardware address of target (endereço de hardware do destino): Campo de n bytes, que
especifica o endereço de hardware que está recebendo a mensagem. No exemplo uma captura
mostrando o endereço MAC.
Protocol address of target (endereço de hardware do destino): Campo de n bytes, que
especifica o endereço de protocolo que está recebendo a mensagem. No exemplo uma captura
mostrando o endereço IP.
2.2 Gerando pacote ARP
Quando um host pretenda enviar um pacote para outro host pela primeira vez, o host de
origem determinará primeiramente através de seu mecanismo de roteamento, qual será o next hop
(próximo salto), podendo ser ele mesmo ou um roteador, e qual será o hardware que será enviado.
Caso está rede seja um padrão Ethernet 802.3, por exemplo, o ARP será consultado para realizar o
mapeamento do endereço IP para o MAC.
O ARP tentará localizar o endereço MAC em sua tabela ARP cache. Caso encontre o MAC,
um endereço de 48 bits, ele estará pronto para enviar o pacote. Caso não encontre o MAC, o pacote
será descartado (dependendo do protocolo de camada superior, o pacote poderá ser ou não
retransmitido) e será gerado uma mensagem ARP request na rede, cujo destino seja todos os hosts
daquela rede.
O Internet Control Message Protocol (ICMP), por exemplo, não possui mecanismos para
retransmissão de pacotes e por este motivo, o pacote será descartado e não haverá retransmissão
quando o host de origem não tiver mapeado o endereço MAC em sua tabela ARP cache.
2.3 Recebendo pacote ARP
Quando um host recebe um pacote ARP request através de sua interface de rede, o driver da
interface encaminhará o pacote para o protocolo ARP realizar o processo de análise, através de seu
algoritmo.
O processo de análise começa com uma busca em sua própria tabela ARP cache, para
determinar se já existe uma entrada para aquele endereço de protocolo e endereço de hardware do
pacote de origem. Caso exista o endereço em sua tabela ARP cache, o host atualiza sobrescrevendo
os endereços. Caso não encontre os endereços na tabela ARP cache, uma nova entrada será criada
para que seja armazenado essas novas informações. O próximo passo é identificar se o host que
recebeu o pacote é o destino, para isso o ARP verifica no campo “Protocol address of target” se o
endereço IP coincide com o seu endereço, coincidindo os endereços o host cria um pacote do ARP
reply e envia para a origem, informando o seu endereço MAC.
2.4 Cache ARP
Em uma rede de grande porte e ocupada, o envio de pacotes em broadcasting interromperá
todos os hosts para que eles processem cada pacote da rede. Essa interrupção prejudicará de
maneira significativa a eficiência da rede e a tornaria mais lenta. Para reduzir os broadcasts, os hosts
de redes que necessitam utilizar o ARP mantêm uma lista de endereços IP e MAC que
correspondem a eles obtidos por solicitações anteriores. Isto é listado como ARP cache e é
atualizado sempre que uma solicitação for enviada ou recebida. Depois de algum tempo os
endereços da tabela ARP cache são removidos e este processo é chamado de Aging. O tempo padrão
de Aging é de 300 segundos, mas pode ser alterado, embora não seja recomendável.
2.5 Prox-ARP
O Proxy-ARP é utilizado em sub-redes para que um roteador, por exemplo, possa responder
as solicitações ARP request de um host que está em outra sub-rede. Uma das vantagens do ProxyARP é a vantagem dos hosts se comunicarem entre si, sem a necessidade de um gateway na rede,
para realizar o roteamento. O protocolo Proxy-ARP possui uma especificação que descreve a
implementação. Suas funcionalidades tornou-se um padrão da Internet e seu RFC é RFC1027.
2.5.1 Funcionamento do Proxy-ARP
Considere uma rede dividida em sub-redes e interconectada por um roteador, como
apresentado na figura abaixo:
Observe na figura acima, que o Host A possui uma mascara /16, ou seja, o Host A acredita
estar diretamente conectado a todos na rede 172.16.0.0. Quando o Host A precisa se comunicar com
qualquer outro host da rede diretamente conectado, ele enviará um ARP request para determinar o
endereço MAC do destino.
Agora imagine que o Host A queira enviar uma mensagem para o Host D. Neste caso, ele
gera um pacote do tipo ARP request, pois para ele o Host D está na mesma rede e não necessita de
roteamento. O processo para localizar o endereço MAC do Host D será da mesma forma que foi
apresentado anteriormente. Neste processo todos na sub-rede A receberá o pacote ARP request,
inclusive a interface E0 do roteador, porém, não chegará no Host D. A mensagem de broadcast
recebida pelo roteador, será descartada por padrão, pois ele não encaminha mensagens broadcast.
Uma vez que o roteador conhece o endereço IP do Host D (172.16.20.200), através de sua
segunda sub-rede, ele responderá ao Host A com seu próprio endereço MAC. Essa é a resposta
Proxy-ARP enviada pelo roteador para o Host A, adicionando no campo “Hardware address of
sender” o endereço MAC do roteador, porém, o endereço IP de origem não é alterado, ou seja, o
endereço IP será o do Host D.
Quando o Host A receber o pacote ARP reply, ele armazenará em sua tabela ARP cache as
novas informações enviadas pelo roteador. A partir de agora o Host A encaminhará todos os pacotes
destinados ao Host D com o endereço MAC da interface E0 do roteador.
2.6 RARP (Reverse Address Resolution Protocol)
Alguns hosts são conhecidos como diskless (sem disco) e ao serem iniciadas na rede não
conhecem o seu próprio endereço IP. Então, para que esses hosts possam descobrir qual é o seu
endereço IP, faz-se necessário gerar um pacote semelhante ao pacote ARP, porém o endereço de
hardware e IP são conhecidos pela origem. A diferença está em seu funcionamento que requer um
servidor RARP para manter uma base de dados mapeando os endereços de hardware para os
endereços IP´s, pré-configurado pelo administrador e que serão usados para endereçar os hosts na
rede local.
O protocolo RARP possui uma especificação que descreve como usá-lo em redes para
obter automaticamente o endereço IP, através do MAC. O protocolo recebeu a Request For
Comments (RFC) é RFC903.
O processo RARP é realizado da mesma forma que o ARP, com uma exceção do campo
“operation” que terá os seguintes valores:
3: Para RARP request
4: Para RARP reply
REFERÊNCIAS:
RODRIGUEZ, Adolfo et al. TCP/IP Tutorial and Technical Overview. Seventh Edition. IBM
Corporation, International Technical Support Organization: IBM, 2001. 986
Request For Comments: 826. Disponível em: http://www.ietf.org. Acesso em: 7 mai. 2011
Protocolo ARP. Disponível em: <http://www.m8.com.br/andre/arp.htm>. Acesso em: 7 mai. 2011
Download