Skip to content

Cisco CCNAv7 - Funcionamento do ARP

Para enviar um quadro Ethernet, o PC precisa do MAC de destino. Mas as aplicações só conhecem o IP. O ARP (Address Resolution Protocol, protocolo de resolução de endereços) faz a ponte: ele descobre o MAC correspondente a um IP na rede local. Sem ele, o IPv4 sobre Ethernet simplesmente não funcionaria.

O ARP tem duas funções:

FunçãoDescrição
Resolver endereços IPv4 em endereços MACPergunta à rede quem tem determinado IP
Manter uma tabela (cache ARP)Guarda as respostas para não precisar perguntar toda vez

Quando o PC1 quer falar com um host da mesma rede e não conhece o MAC dele, ele faz uma requisição ARP:

sequenceDiagram
  participant PC1 as PC1 192.168.1.10
  participant Rede as Todos da rede
  participant PC2 as PC2 192.168.1.20
  PC1->>Rede: ARP Request em broadcast. Quem tem 192.168.1.20?
  Rede->>PC2: O quadro chega a todos
  PC2-->>PC1: ARP Reply em unicast. 192.168.1.20 esta no MAC do PC2

Passo a passo:

  1. O PC1 consulta o cache ARP. Se o MAC do PC2 já estiver lá, usa-o e termina.
  2. Se não estiver, o PC1 envia uma requisição ARP (ARP Request) em broadcast: “Quem tem o IP 192.168.1.20? Responda ao IP 192.168.1.10”.
  3. Todos os dispositivos da rede recebem a mensagem, mas só o dono do IP responde.
  4. O PC2 envia uma resposta ARP (ARP Reply) em unicast ao PC1, informando o seu MAC.
  5. O PC1 guarda o par IP ⇄ MAC no cache e envia o quadro de dados.

Se o destino estiver em outra rede, o PC1 não pergunta pelo IP do destino. Ele faz o ARP pelo IP do gateway padrão e envia o quadro ao roteador, como você viu no post anterior.

A mensagem ARP é carregada em um quadro Ethernet com EtherType 0x0806. Ela não tem cabeçalho IP, pois só circula na rede local.

CampoTamanhoDescrição
Tipo de hardware2 bytes1 = Ethernet
Tipo de protocolo2 bytes0x0800 = IPv4
Tamanho do endereço de hardware1 byte6 (MAC)
Tamanho do endereço de protocolo1 byte4 (IPv4)
Operação2 bytes1 = requisição, 2 = resposta
MAC do remetente6 bytesQuem envia
IP do remetente4 bytesQuem envia
MAC do alvo6 bytesVazio (00:00:00:00:00:00) na requisição
IP do alvo4 bytesO IP que se quer resolver

Somando: 2 + 2 + 1 + 1 + 2 + 6 + 4 + 6 + 4 = 28 bytes.

Campo do quadro EthernetValor na requisição
MAC de destinoFF:FF:FF:FF:FF:FF (broadcast)
MAC de origemMAC de quem pergunta
EtherType0x0806
DadosMensagem ARP (28 bytes) + enchimento

Como os dados do Ethernet precisam ter no mínimo 46 bytes, o quadro recebe 18 bytes de enchimento (46 − 28). O quadro completo tem 14 (cabeçalho) + 28 + 18 + 4 (FCS) = 64 bytes, o mínimo do Ethernet.

Na resposta, o MAC de destino do quadro é o MAC de quem perguntou (unicast).

Cada dispositivo guarda as respostas em uma tabela temporária, o cache ARP (ou tabela ARP). As entradas não duram para sempre: depois de um tempo sem uso, são removidas, e a próxima comunicação refaz a pergunta.

SistemaTempo de vida típico das entradas
Roteadores e switches Cisco (IOS)4 horas (padrão)
WindowsDezenas de segundos (valor variável, em torno de 15 a 45 s sem uso)
LinuxDezenas de segundos até alguns minutos (entradas ficam “velhas” e são revalidadas)

A requisição precisa chegar a todos, pois o remetente não sabe quem é o dono do IP. Por isso, o ARP é um dos principais geradores de broadcast nas redes locais. Quanto maior a rede, mais broadcasts. É uma das razões para dividir redes grandes em redes menores, como você viu no post sobre domínios de broadcast.

CasoO que é
ARP gratuito (gratuitous ARP)O dispositivo anuncia o seu próprio IP e MAC, sem que ninguém tenha perguntado. Serve para atualizar caches e detectar IP duplicado (quando alguém responde, há conflito)
Proxy ARPUm roteador responde ao ARP em nome de um host de outra rede, “enganando” o host que perguntou. Permite que hosts sem gateway configurado alcancem redes remotas. Hoje é pouco usado

Objetivo: ver a requisição e a resposta ARP reais.

  1. Limpe o cache ARP do seu computador.

    No Linux (como root):

sudo ip neigh flush all

No Windows (Prompt de Comando como administrador):

arp -d *
  1. Abra o Wireshark, escolha a interface em uso, aplique o filtro arp e inicie a captura.
  2. Em outro terminal, faça ping para o seu gateway (por exemplo, ping 192.168.1.1).
  3. Pare a captura e observe os pacotes ARP.

Clique na requisição ARP (mensagem “Who has …?”) e expanda Address Resolution Protocol. Preencha:

CampoValor
MAC de destino do quadro?
Opcode (operação)?
IP do remetente (Sender IP)?
IP do alvo (Target IP)?
MAC do alvo (Target MAC)?

Depois, clique na resposta (”… is at …”) e anote o Opcode e o MAC de destino do quadro.

  1. Monte 2 PCs ligados a um switch (192.168.1.10 e 192.168.1.20).
  2. No Command Prompt do PC1, rode arp -a e confirme que a tabela está vazia.
  3. Mude para o modo Simulation, filtre ARP e ICMP e faça ping 192.168.1.20.
  4. Observe a requisição indo a todos os dispositivos e a resposta voltando só ao PC1.
  5. Depois do ping, rode arp -a de novo.

Perguntas para fixar:

  • Por que a requisição ARP é enviada em broadcast, e a resposta, em unicast?
  • Qual é o EtherType das mensagens ARP?
  • O que o PC1 faz ao enviar um pacote para um destino remoto: ARP pelo IP do destino ou do gateway?
Ver respostas

Parte 2: MAC de destino da requisição: ff:ff:ff:ff:ff:ff; Opcode: 1 (request); Target MAC: 00:00:00:00:00:00. Na resposta, Opcode 2 (reply) e o MAC de destino é o de quem perguntou.

  • A requisição vai em broadcast porque o remetente não sabe quem tem o IP. A resposta vai em unicast porque o dono do IP já sabe o MAC de quem perguntou.
  • 0x0806.
  • ARP pelo IP do gateway.
  • O ARP descobre o MAC de um IPv4 na rede local e guarda os resultados no cache ARP.
  • A requisição (ARP Request) vai em broadcast (FF:FF:FF:FF:FF:FF); a resposta (ARP Reply) vai em unicast.
  • A mensagem ARP tem 28 bytes e viaja em quadros com EtherType 0x0806.
  • Para destinos remotos, o ARP é feito pelo IP do gateway.
  • O cache é dinâmico (4 horas no Cisco IOS; bem menos em Windows e Linux).
  • ARP gratuito anuncia o próprio IP/MAC; Proxy ARP responde em nome de outro host.