Ver Feed RSS

root@blog:/# chmod o+r *

Curso de Redes: Protocolo ARP

Avalie este Post de Blog

Leia as partes anteriores desse curso antes de prosseguir



Olá pessoal! Com essa nova feature do nosso curso de rede gratuito resolvi adiantar um pouco um conteúdo que eu estava segurando... Esse post é um "anexo" da parte 2 postada a alguns dias.

Vai ser bem curto porém com um conteúdo de extrema importância!



Protocolo ARP



O ARP (Address Resolution Protocol) é um dos protocolos mais importantes da Camada 3, ele é essencial para o funcionamento de uma rede ethernet.

Pode-se dizer que o ARP é um DNS de camada 2 e 3. Da mesma forma que o DNS vincula um FQDN (Fully Qualified Domain Name) a um IP o ARP vincula um MAC a um IP. Mas diferente do DNS o ARP não necessita de um servidor dedicado.


Uma comparação

Ao escrever uma carta, você põe no envelope o endereço residencial do destinatário e o CEP. Mas de onde você tira o CEP? Vai no site dos correios e consulta o CEP com base na quadra/bairro do endereço de destino. Mas aqueles números não fazem sentido certo?! Não fazem pra gente! Pors correios aquilo é extremamente útil pois informa para qual "agência dos correios" aquela carta deve ser enviada. Não existem CEPs repetidos, assim como não existem MACs repetidos, porém podem existir várias cidades chamadas Belem, São Paulo ou Brasília.


Cenário

Vamos imaginar que o host A (192.168.1.1) quer enviar um ping (ICMP) para o Host B (192.168.1.2) e que ambos estão interligados por um HUB (não há segmentação). A Camada 3 do Host A gera os dados ICMPs e consulta a Tabela ARP (não confunda com tabela MAC da bridge/switch). A tabela ARP armazena o par enderço IP:Endereço MAC. Caso o IP de destino não esteja na tabela ARP é realizada uma consula ARP (ARP Request).

Voltando pra nossa comparação. O Host A escreveu uma carta para o Host B e preencheu o endereço de origem: como SEPN 511, Brasília e o endereço de destino como Rua Verbo Divino, São Paulo. Ao levar a carta aos correios (camada 2) o agente do correio informou que faltava o CEP. O Host A, que era um Geek, sacou seu smartphone e acessou a internet para consultar o o CEP da Rua Verbo Divino em São Paulo. Após realizar a consulta ele preencheu os CEPs e enviou a carta.

Infelizmente nosso exemplo não é 100% fiel a realidade pois essa consulta não é tão simples quanto acessar um site que possui uma base de dados (isso se assemelha ao DNS). O ARP é um pacote que possui como MAC de origem o MAC do Host A, e como MAC de destino o endereço de Broadcast da camada 2 (FF:FF:FF:FF:FF:FF), ou seja, todo mundo! Dessa forma todos os dispositivos conectados a este segmento de rede irão receber e processar essa requisição. Mas como eles vão saber se é pra eles essa requisição? No capo dados existirá a seguinte string: "Who has 192.168.1.2?" que traduzindo seria: "Quem é 192.168.1.2?". Dessa forma somente o 192.168.1.2 irá responder a requisição ARP.

Ao tentar responder, o Host B já sabe o MAC e o IP do Host A, pois ele possui o pacote que chegou (se você recebe uma carta você pode responder pra quem te mandou simplesmente invertendo a origem com o destino certo?!). A resposta ARP (ARP Reply) é enviada e assim o Host A aprende o MAC do Host B. Após aprender o MAC ele pode finalmente enviar o ICMP que estava até agora pendente!


Simulação

Agora a simulação do processo explicado acima utilizando o Cisco Packet Tracer



Sempre que uma requisição ARP é realizada o par MAC:IP é armazenado na Tabela ARP. As estradas dessa tabela ARP expiram com o tempo, geralmente 2 min, para evitar que hajam dados desatualizados. Sempre que uma transmissão é realizada a tabela ARP é consultada. Se não houver a entrada na tabela ARP é realizada a consulta ARP. Caso haja uma entrada na tabela ARP é utilizado o mapeamento armazenado.

No Windows a tabela arp pode ser listada com o comando arp -a:
Código :
C:\>arp -a
 
Interface: 10.192.51.113 --- 0x10003
  Endereço IP           Endereço físico       Tipo
  10.192.51.1           00-05-32-14-0d-02     dinâmico
C:\>
No linux pode-se usar um comando com a mesma sintaxe:
Código :
arp -na
? (192.168.1.254) em 00:14:7f:01:0a:12 [ether] em eth0
? (192.168.1.65) em 00:0f:ea:d8:94:f7 [ether] em eth0
? (192.168.1.66) em 00:0f:ea:d8:94:f7 [ether] em eth0
? (192.168.1.101) em <incompleto> em eth0
? (192.168.1.10) em <incompleto> em eth0
Podemos ver que um MAC pode estar vinculado a vários IPs porém um IP não pode possuir vários MACs.

Existe também o RARP (Revers ARP) no qual é consultado um IP para um dado MAC. O protocolo RARP é utilizado em requisições DHCP que veremos mais a frente!




Referências

* Cisco CCNA - Guia de certificação do Exame, 3a Edição
Wendell Odom

* Redes de Computadores, 4a Edição
Andrew S. Tanenbaum,

* Conteúdo Cisco NetAcad, versão 3.1.1



Cenas do Próximo Capítulo


Aqui terminamos esse anexo "extra"! Acho que agora vão começar a surgir algumas dúvidas...

Para o próximo post vamos fazer uma re-leitura do gif que simulava a comunicação entre hosts em dois segmentos de redes separados por uma bridge (incluíndo as requisições ARPs para tornar a simulação mais realista!), vamos falar sobre switches, sobre a operação da sua linha de comando e sobre VLANs.

Deixem seus comentários aqui ou na CatBox (painel esquerdo)!
Até mais pessoal...

Atualizado 18-01-2010 em 11:44 por Magnun

Categorias
Curso de Redes , Cursos

Comentários

  1. Avatar de MarcusMaciel
    vale lembrar que o arp -a pode demorar por causa da resolucao de nomes enquanto quando vc usa arp -na ele nao faz a resolucao de nomes e o resultado é bem mais rapido.
  2. Avatar de Magnun
    Bem lembrado Scorpion! Inclusive vou alterar... assim que eu puder pegar um exemplo da saída do arp -na

    Valeu!
  3. Avatar de Magnun
    Corrigido!! Valeu Scorpion...

+ Enviar Comentário