Redes – Sabe para que serve o protocolo ARP?
Como é que os PC’s se descobrem uns aos outros?
No mundo das redes informáticas existem muitos protocolos e tecnologias. Ao longo de alguns artigos que temos vindo a publicar no pplware (ver aqui), temos tentado explicar alguns desses termos/conceitos e funcionamento de várias tecnologias, por forma a que os nossos leitores estejam mais contextualizados com o mundo das redes de dados.
Hoje vamos explicar o que é e para que serve o protocolo ARP.
Antes de passar a explicação do protocolo ARP propriamente dito, apenas recordar o que são endereços físicos e endereços lógicos.
Endereços físicos - Um endereço físico é o endereço MAC (Media Access Control) que está associado a um determinado equipamento. Esse endereço é composto por 48 bits (12 caracteres hexadecimais) Saber mais aqui.
Endereços lógicos - Os endereços lógicos são os endereços IP (IPv4 ou IPv6) que configuramos num determinado terminal. Saber mais aqui.
O que é e como funciona o protocolo ARP
Recentemente um leitor enviou-me um e-mail com a seguinte questão: “Numa rede ethernet, como é que os PC’s se descobrem uns aos outros?”. Quem trabalha com redes a resposta seria directa: o protocolo ARP (Address Resolution Protocol – RFC 826) permite que um PC obtenha o endereço físico de uma máquina, usando o endereço IP (da máquina de destino).
Percebido? hum…confuso. Então vamos a três questões essenciais:
1) Quando pretendemos comunicar com outra máquina, o que precisamos de saber?
Endereço IP (ou o nome que depois é traduzido num endereço IP).
2) Qual a informação que é inserida numa frame relativamente ao destinatário?
O MAC Address do PC de destino (endereço físico) é incluído na frame (PDU da camada 2, saber mais aqui).
3) Mas se eu só sei o IP, como descobrir o MAC do PC de destino?
Recorrendo ao protocolo ARP, que permite obter o endereço MAC (do PC de destino) usando o endereço IP (do PC de destino).
Vamos a um exemplo de funcionamento do protocolo ARP
- Vamos considerar que o PC-A com o endereço IP: 192.168.0.1 quer comunicar com o PC-B que tem o endereço IP: 192.168.0.3 (os PCs estão na mesma rede).
- O PC-A verifica a sua tabela ARP (podem ver esta informação através do comando arp –a) para saber se já existe alguma informação relativamente ao endereço físico do PC-B. Caso exista, esse endereço é usado.
- Caso o PC-A não tenha qualquer informação na tabela ARP do PC-B, o protocolo ARP envia uma mensagem de broadcast (para o endereço FF:FF:FF:FF:FF:FF) a “questionar” (ARP Request) a quem pertence o endereço IP (neste caso o endereço IP do PC-B).
- O PC-B responderá à mensagem ARP enviada pelo PC-A, enviando o seu endereço físico.O PC-A guardará essa informação na sua tabela ARP (que fica guardada na memória RAM do PC)
Nota: No caso do envio de informação para fora do domínio da rede local,o endereço físico a ser registado na tabela ARP de um PC local será o endereço físico do gateway.
A resolução de endereços físicos em endereços lógicos também é possível, sendo para isso necessário recorrer ao protocolo RARP (Reverse Address Resolution Protocol – RFC 903).
Num próximo artigo apresentaremos uma simulação relativamente ao uso do protocolo ARP por parte dos PCs.
Há alguma dúvida? Para quem não conhecia o protocolo ARP tinha ideia que as coisas funcionavam assim?
Este artigo tem mais de um ano
muito bom. Acho que poderiam ter dito gue o IP não é o único protocolo de endereçamento lógico. há o IPX, o AppleTalk e outros. o nome Novell vem-me á cabeça não sei porque razao.
Talvez pq o ARP seja o sucessor do IPX, ainda do tempo de tipologias em BUS por exemplo…
Também é possível fazer um Unsolicited ARP, isto é mandar a informação de qual o seu MAC para a rede sem tal ter sido solicitado.
As entradas ARP em linux têm um timeout. Após uns quantos minutos é automaticamente enviado outro ARP request.
ARP também pode ser usado para hackar uma rede LAN ao falsificar um entrada ARP. O PC A está a comunicar com B. O PC C manda um ARP para a rede a dizer que agora o IP de B está associado ao MAC de C. O PC A vai passar a mandar pacotes com o IP de B, mas com o MAC de C. Desta forma C passa a receber os pacotes que eram de A para B.
Já falavas mas é dos processos em IPv6, o ARP já passou de moda
“o ARP já passou de moda”
Já? É usado e vai continuar a ser durante muitos anos!
Enganaste…
“In Internet Protocol Version 6 (IPv6) networks, the functionality of ARP is provided by the Neighbor Discovery Protocol (NDP).”
isso é verdade mas dentro de uma rede empresarial não faz sentido migrar já para IPV6.
Não vai continuar a ser usado e por muitos anos…
http://pt.wikipedia.org/wiki/Address_Resolution_Protocol
Já agora, o ipv6 vai ser implementado quando ????? pois já se fala á mais de 10 anos e ainda cá andamos…
Quando tivermos que fazer a implementação naqueles clientes que a gente sabe é que vai doer 😀 heheheheh
ptt-t
o IPv6 foi criado porque está a ficar escasso os numeros de IPs,o IPv4 so suporta 4 bilhoes de endereços, e atribuir IPs diferentes está-se a tornar escasso, dai ter sido criado o IPv6. Por isso é que dentro de empresas nao se justifica utilizar o IPv6.
Sim, mas mais cedo ou mais tarde tudo vai passar a IPv6, pois embora existem muitos protocolos compatíveis, há 1 ou outro que não. Dai a que um dia, ter que ser tudo IPv6.
Como o sub-endereçamento criaram-se sub-redes, para colmatar a falta de IP’s. Antes de isto existir, cada dispositivo tinha que ter um IP diferente na rede global (internet).
Se isto não tivesse sido inventado, o IPv4 já tinha ido a algum tempo.
Configuração ARP em linux:
Enviar pedidos ARP para um determinado IP:
“sudo arping -c 100 -I eth0 192.168.1.1”
Este comando envia 100 ARP requests para o ip 192.168.1.1 na interface ETH0.
———
Inserir uma entrada ARP manual, isto é dizer a IP stack que o IP X têm o MAC y:
arp -s 10.0.0.1 02:8F:4F:AC:27:F1
Este comando diz que o IP 10.0.0.1 está no MAC 02:8F:4F:AC:27:F1
——–
Isto faz-me lembrar os anos 80 em que trabalhava com redes. Apesar de agora, “jovem idoso” me dedicar mais a Androidices, continuo a gostar destas coisas. Faz-me bem, faz trabalhar o meu cérebro…
Já fui rever o modelo OSI com o link acima referido. Gostei do artigo.
Continuem, continuem…
Já agora, para quem pretender ver a tabela arp IPv6 pode usar o comando:
netsh int ipv6 show neigh
Já agora convém realçar que existe o protocolo RARP se faz precisamente o oposto!!!
Sabemos o endereço físico e queremos saber o endereço lógico
Cumprimentos
Paulo Pereira
Bom dia uma sugestão no seguimento de mais um bom exemplo aqui dado a quem está a querer saber mais sobre redes, seria como acima mencionado o RARP, mas também e se calhar mais usado mas menos conhecido “proxyARP”.
Cumprimentos
Parece-me interessante. Fica aqui na lista de pendentes.
A mim parece-me que percisanto todos de um curso mas é de hardware de comunicacao, Estrutura ETH e em cima os outros protocolos isto para Lan . ETH / TCP.IP ou ETH / IPX.SPX ETH / ICMP etc… bombocas e morangos
o mac vem no eth 02:8F:4F:AC:27:F1
as maquinas para comunicar nao necessitam de tcp ip ou outro apenas com eth funciona, agora os sistemas operativos adoptarar os protocolos IP ou IPX para comunicacao.
what????? Acho que é melhores fazeres um Reboot 🙂
boa dica..
OI, uma segunda maquina se conectou ao meu dispositivo móvel, usando o mesmo endereço MAC address, o meu aparelho wi-fi não conseguiu detectar o invasor, como sou programador, consegui identificar, tentei desconectar da minha rede mas ñ consegui, o que faço para desconectar?
Só uma pequena questão 🙂
Fiquei sem perceber porque precisam de saber o MAC address para poderem comunicar visto que já sabem o IP.
Muito obrigada 🙂
Pedro, eu gostaria de uma explicação sobe o comando:
“arp -aon IP | findstr 0.0:porta”
Eu usava este comando há um tempo atrás, mas não lembro como funciona…
Tentei usar ontem, mas não deu o resultado esperado.
Obrigado
Obrigado pela explicação sobre ARP.
muito bom