Protocolo de Resolução de Endereço - Address Resolution Protocol

O Address Resolution Protocol ( ARP ) é um protocolo de comunicação usado para descobrir o endereço da camada de link , como um endereço MAC , associado a um determinado endereço de camada da Internet , geralmente um endereço IPv4 . Esse mapeamento é uma função crítica no pacote de protocolos da Internet . O ARP foi definido em 1982 pelo RFC  826 , que é o Padrão da Internet STD 37.

ARP foi implementado com muitas combinações de redes e tecnologias de camada de link de dados, como IPv4 , Chaosnet , DECnet e Xerox PARC Universal Packet (PUP) usando os padrões IEEE 802 , FDDI , X.25 , Frame Relay e Modo de Transferência Assíncrona (ATM) .

Em redes IPv6 ( Internet Protocol Version 6 ), a funcionalidade do ARP é fornecida pelo Neighbour Discovery Protocol (NDP).

Escopo operacional

O Protocolo de Resolução de Endereço é um protocolo de solicitação-resposta cujas mensagens são encapsuladas por um protocolo da camada de enlace. É comunicado dentro dos limites de uma única rede, nunca roteado por nós de internetworking. Esta propriedade coloca o ARP na camada de link do conjunto de protocolos da Internet .

Estrutura do pacote

O Protocolo de Resolução de Endereço usa um formato de mensagem simples contendo uma solicitação ou resposta de resolução de endereço. O tamanho da mensagem ARP depende da camada de link e dos tamanhos de endereço da camada de rede. O cabeçalho da mensagem especifica os tipos de rede em uso em cada camada, bem como o tamanho dos endereços de cada uma. O cabeçalho da mensagem é completado com o código de operação para solicitação (1) e resposta (2). A carga útil do pacote consiste em quatro endereços, o hardware e o endereço de protocolo dos hosts remetente e receptor.

A estrutura principal dos pacotes ARP é mostrada na tabela a seguir, que ilustra o caso de redes IPv4 rodando em Ethernet. Neste cenário, o pacote tem campos de 48 bits para o endereço de hardware do remetente (SHA) e endereço de hardware de destino (THA) e campos de 32 bits para o remetente correspondente e endereços de protocolo de destino (SPA e TPA). O tamanho do pacote ARP, neste caso, é de 28 bytes.

Protocolo de Internet (IPv4) sobre pacote ARP Ethernet
Offset de octeto 0 1
0 Tipo de hardware (HTYPE)
2 Tipo de protocolo (PTYPE)
4 Comprimento do endereço de hardware (HLEN) Comprimento do endereço de protocolo (PLEN)
6 Operação (OPER)
8 Endereço de hardware do remetente (SHA) (primeiros 2 bytes)
10 (próximos 2 bytes)
12 (últimos 2 bytes)
14 Endereço de protocolo do remetente (SPA) (primeiros 2 bytes)
16 (últimos 2 bytes)
18 Endereço de hardware de destino (THA) (primeiros 2 bytes)
20 (próximos 2 bytes)
22 (últimos 2 bytes)
24 Endereço de protocolo de destino (TPA) (primeiros 2 bytes)
26 (últimos 2 bytes)
Tipo de hardware (HTYPE)
Este campo especifica o tipo de protocolo de link de rede. Exemplo: Ethernet é 1.
Tipo de protocolo (PTYPE)
Este campo especifica o protocolo de internetwork para o qual a solicitação ARP se destina. Para IPv4, tem o valor 0x0800. Os valores de PTYPE permitidos compartilham um espaço de numeração com aqueles para EtherType .
Comprimento do hardware (HLEN)
Comprimento (em octetos ) de um endereço de hardware. O comprimento do endereço Ethernet é 6.
Comprimento do protocolo (PLEN)
Comprimento (em octetos) dos endereços de internetwork. O protocolo de internetwork é especificado em PTYPE. Exemplo: o comprimento do endereço IPv4 é 4.
Operação
Especifica a operação que o remetente está executando: 1 para solicitação, 2 para resposta.
Endereço de hardware do remetente (SHA)
Endereço de mídia do remetente. Em uma solicitação ARP, este campo é usado para indicar o endereço do host que está enviando a solicitação. Em uma resposta ARP, este campo é usado para indicar o endereço do host que a solicitação estava procurando.
Endereço de protocolo do remetente (SPA)
Endereço de internetwork do remetente.
Endereço de hardware de destino (THA)
Endereço de mídia do receptor pretendido. Em uma solicitação ARP, este campo é ignorado. Em uma resposta ARP, este campo é usado para indicar o endereço do host que originou a solicitação ARP.
Endereço de protocolo de destino (TPA)
Endereço de internetwork do receptor pretendido.

Os valores dos parâmetros do protocolo ARP foram padronizados e são mantidos pela Internet Assigned Numbers Authority (IANA).

O EtherType para ARP é 0x0806. Isso aparece no cabeçalho do quadro Ethernet quando a carga útil é um pacote ARP e não deve ser confundido com PTYPE, que aparece dentro desse pacote ARP encapsulado.

Exemplo

Dois computadores em um escritório (Computador 1 e Computador 2) são conectados um ao outro em uma rede local por cabos Ethernet e switches de rede , sem gateways ou roteadores intermediários . O Computador 1 possui um pacote para enviar ao Computador 2. Através do DNS , ele determina que o Computador 2 possui o endereço IP 192.168.0.55.

Para enviar a mensagem, também é necessário o endereço MAC do Computador 2 . Primeiro, o Computador 1 usa uma tabela ARP em cache para procurar 192.168.0.55 para quaisquer registros existentes do endereço MAC do Computador 2 (00: eb: 24: b2: 05: ac). Se o endereço MAC for encontrado, ele envia um quadro Ethernet com endereço de destino 00: eb: 24: b2: 05: ac, contendo o pacote IP para o link. Se o cache não produziu um resultado para 192.168.0.55, o Computador 1 deve enviar uma mensagem de solicitação ARP de transmissão (destino FF: FF: FF: FF: FF: FF endereço MAC), que é aceita por todos os computadores na rede local , solicitando uma resposta para 192.168.0.55.

O computador 2 responde com uma mensagem de resposta ARP contendo seus endereços MAC e IP. Como parte do atendimento à solicitação, o Computador 2 pode inserir uma entrada para o Computador 1 em sua tabela ARP para uso futuro.

O computador 1 recebe e armazena em cache as informações de resposta em sua tabela ARP e agora pode enviar o pacote.

Sonda ARP

Uma investigação ARP é uma solicitação ARP construída com um SPA totalmente zero. Antes de começar a usar um endereço IPv4 (seja recebido da configuração manual, DHCP ou algum outro meio), um host que implemente esta especificação deve testar para ver se o endereço já está em uso, transmitindo pacotes de sondagem ARP.

Anúncios ARP

O ARP também pode ser usado como um protocolo de anúncio simples. Isso é útil para atualizar os mapeamentos de outros hosts de um endereço de hardware quando o endereço IP ou o endereço MAC do remetente muda. Esse anúncio, também chamado de mensagem ARP gratuita (GARP), geralmente é transmitido como uma solicitação ARP contendo o SPA no campo de destino (TPA = SPA), com THA definido como zero. Uma forma alternativa é transmitir uma resposta ARP com o SHA e o SPA do remetente duplicados nos campos de destino (TPA = SPA, THA = SHA).

Os anúncios de solicitação ARP e resposta ARP são métodos baseados em padrões, mas o método de solicitação ARP é o preferido. Alguns dispositivos podem ser configurados para o uso de qualquer um desses dois tipos de anúncios.

Um anúncio ARP não tem como objetivo solicitar uma resposta; em vez disso, ele atualiza todas as entradas em cache nas tabelas ARP de outros hosts que recebem o pacote. O código de operação no anúncio pode ser pedido ou resposta; o padrão ARP especifica que o opcode só é processado depois que a tabela ARP é atualizada a partir dos campos de endereço.

Muitos sistemas operacionais emitem um anúncio ARP durante a inicialização. Isso ajuda a resolver problemas que poderiam ocorrer se, por exemplo, uma placa de rede foi recentemente alterada (alterando o mapeamento de endereço IP para endereço MAC) e outros hosts ainda têm o mapeamento antigo em seus caches ARP.

Anúncios ARP também são usados ​​por algumas interfaces de rede para fornecer balanceamento de carga para o tráfego de entrada. Em uma equipe de placas de rede, é usado para anunciar um endereço MAC diferente dentro da equipe que deve receber os pacotes de entrada.

Os anúncios ARP podem ser usados ​​no protocolo Zeroconf para permitir a atribuição automática de endereços IP locais vinculados a uma interface onde nenhuma outra configuração de endereço IP está disponível. Os anúncios são usados ​​para garantir que um endereço escolhido por um host não seja usado por outros hosts no link de rede.

Esta função pode ser perigosa do ponto de vista da segurança cibernética, pois um invasor pode obter informações sobre os outros hosts de sua sub-rede para salvar em seu cache ARP ( ARP spoofing ) uma entrada onde o MAC do invasor está associado, por exemplo, ao IP do padrão gateway , permitindo-lhe interceptar todo o tráfego para redes externas.

Mediação ARP

A mediação ARP se refere ao processo de resolução de endereços da camada 2 por meio de um serviço de fio privado virtual (VPWS) quando diferentes protocolos de resolução são usados ​​nos circuitos conectados, por exemplo, Ethernet em uma extremidade e Frame Relay na outra. No IPv4 , cada dispositivo de borda do provedor (PE) descobre o endereço IP do dispositivo de borda do cliente (CE) conectado localmente e distribui esse endereço IP para o dispositivo PE remoto correspondente. Então, cada dispositivo PE responde às solicitações ARP locais usando o endereço IP do dispositivo CE remoto e o endereço de hardware do dispositivo PE local. No IPv6 , cada dispositivo PE descobre o endereço IP de ambos os dispositivos CE locais e remotos e, em seguida, intercepta os pacotes de descoberta de vizinho local (ND) e de descoberta de vizinho inverso (IND) e os encaminha para o dispositivo de PE remoto.

ARP inverso e ARP reverso

O protocolo de resolução de endereço inverso ( ARP inverso ou InARP ) é usado para obter endereços de camada de rede (por exemplo, endereços IP ) de outros nós a partir de endereços de camada de enlace (camada 2). Como o ARP traduz os endereços da camada 3 para os endereços da camada 2, o InARP pode ser descrito como seu inverso. Além disso, o InARP é implementado como uma extensão de protocolo do ARP: ele usa o mesmo formato de pacote do ARP, mas códigos de operação diferentes.

O InARP é usado principalmente em redes Frame Relay ( DLCI ) e ATM, nas quais os endereços da camada 2 de circuitos virtuais às vezes são obtidos da sinalização da camada 2 e os endereços da camada 3 correspondentes devem estar disponíveis antes que esses circuitos virtuais possam ser usados.

O protocolo de resolução de endereço reverso (ARP reverso ou RARP), como o InARP, converte os endereços da camada 2 em endereços da camada 3. No entanto, no InARP, a estação solicitante consulta o endereço da camada 3 de outro nó, enquanto o RARP é usado para obter o endereço da camada 3 da própria estação solicitante para fins de configuração de endereço. RARP está obsoleto; ele foi substituído pelo BOOTP , que mais tarde foi substituído pelo protocolo de configuração dinâmica de hosts (DHCP).

ARP spoofing e proxy ARP

Um ataque de spoofing de ARP bem-sucedido permite que um invasor execute um ataque man-in-the-middle .

Como o ARP não fornece métodos para autenticação de respostas ARP em uma rede, as respostas ARP podem vir de sistemas diferentes daquele com o endereço da Camada 2 necessário. Um proxy ARP é um sistema que responde à solicitação ARP em nome de outro sistema para o qual encaminhará tráfego, normalmente como parte do projeto da rede, como para um serviço de Internet discada. Por outro lado, no ARP spoofing, o sistema de atendimento, ou spoofer , responde a uma solicitação de endereço de outro sistema com o objetivo de interceptar dados destinados a esse sistema. Um usuário malicioso pode usar ARP spoofing para realizar um ataque man-in-the-middle ou negação de serviço em outros usuários na rede. Existem vários softwares para detectar e executar ataques de falsificação de ARP, embora o próprio ARP não forneça nenhum método de proteção contra tais ataques.

Alternativas

O IPv6 usa o Neighbour Discovery Protocol e suas extensões, como Secure Neighbour Discovery , em vez de ARP.

Os computadores podem manter listas de endereços conhecidos, em vez de usar um protocolo ativo. Nesse modelo, cada computador mantém um banco de dados do mapeamento de endereços da Camada 3 (por exemplo, endereços IP ) para endereços da Camada 2 (por exemplo, endereços MAC Ethernet ). Esses dados são mantidos principalmente pela interpretação de pacotes ARP do link de rede local. Portanto, é freqüentemente chamado de cache ARP . Desde pelo menos a década de 1980, os computadores em rede têm um utilitário chamado arp para interrogar ou manipular esse banco de dados.

Historicamente, outros métodos foram usados ​​para manter o mapeamento entre endereços, como arquivos de configuração estática ou listas mantidas centralmente.

Recheio ARP

Os sistemas incorporados, como câmeras em rede e dispositivos de distribuição de energia em rede, que não têm uma interface de usuário, podem usar o chamado ARP stuffing para fazer uma conexão de rede inicial, embora seja um nome impróprio, já que o ARP não está envolvido.

O enchimento ARP é realizado da seguinte forma:

  1. Computador do usuário tem um endereço IP recheado manualmente para a sua tabela de endereços (normalmente com o arp comando com o endereço MAC tirado de uma etiqueta no dispositivo)
  2. O computador envia pacotes especiais para o dispositivo, normalmente um pacote de ping com tamanho não padrão.
  3. O dispositivo então adota este endereço IP
  4. O usuário então se comunica com ele por telnet ou protocolos da web para completar a configuração.

Esses dispositivos geralmente têm um método para desativar esse processo quando o dispositivo está operando normalmente, pois a capacidade pode torná-lo vulnerável a ataques.

Documentos de padrões

  • RFC  826 - Protocolo de resolução de endereço Ethernet, padrão da Internet STD 37.
  • RFC  903 - Protocolo de resolução de endereço reverso, padrão da Internet STD 38.
  • RFC  2390 - Protocolo de resolução de endereço inverso, padrão de rascunho
  • RFC  5227 - Detecção de conflito de endereços IPv4, padrão proposto

Veja também

Referências

links externos