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.
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! Pros 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!
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!
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 .
0 comentários:
Postar um comentário