Arquitetura TCP/IP
Parte IV – Mapeamento de endereços IP em endereços físicos (ARP)
Tópicos
●
Problema de resolução de endereço
●Mapeamento direto
●
Associação dinâmica
●
ARP (Address Resolution Protocol)
– Formato do pacote, algoritmo e cache
– Proxy ARP, ARP Probe, ARP Announcement e
Justificativa
●
É necessário usar endereços (físicos) de
hardware para comunicar em uma rede
●
Aplicações usam apenas endereços
Exemplo genérico
● Computadores A e B na mesma rede (física)
● Aplicação em A gera um pacote para aplicação
em B
● Software do protocolo em A deve usar o
endereço de hardware de B ao enviá-lo um pacote, logo:
– Software do protocolo precisa de um mecanismo
que mapeie um endereço IP para endereço de
hardware equivalente
– Também é conhecido como problema de
Resolução de endereço
●
É realizada em cada rede (física) ao longo
do caminho percorrido por um pacote na
Internet
●
Duas abordagens
– Mapeamento direto – Associação dinâmica
Mapeamento direto
●
Fácil de entender
●Eficiente
●
Apenas funciona quando o endereço de
hardware é menor que o endereço IP
●
Consiste em atribuir um endereço IP que
Exemplo de mapeamento direto
● Hardware: ProNET (token ring) ou ARCnet
(token passing)
● Endereço de hardware: 8 bits
● Supondo que a rede 200.150.50.0/24 seja usada ● Se uma interface tem um endereço de hardware
N, o endereço IP 200.150.50.N pode ser associada à mesma
● Resolver um endereço IP significar extrair o
Associação dinâmica
● Necessária quando endereço de hardware é
maior que o endereço IP (ex.: Ethernet)
● Permite ao equipamento A encontrar o
endereço de hardware do equipamento B
– A sabe endereço IP de B
– A sabe que B está na mesma rede física
● Solução: difunde (broadcast) a consulta e obtém
a resposta
– Associação dinâmica é usada ao longo de apenas
Address Resolution Protocol
(ARP)
●
Padrão para resolução dinâmica de
endereços na Internet
●
Exige suporte a difusão (broadcast) em
hardware
●
Projetado para redes locais
– ARP é usado para mapear endereços dentro
de uma única rede física, não entre múltiplas redes
Funcionamento do ARP
A X B Y
A difunde uma requisição (consulta) em busca de B
A X B Y
Funcionamento ARP (cont.)
● Equipamento A difunde uma requisição com o
endereço IP de B
● Todos equipamentos na rede física recebem a
difusão
● Apenas o equipamento B responde com seu
endereço físico
● Equipamento A adiciona endereço físico de B à
sua tabela (ARP)
● Equipamento A entrega diretamente o pacote
Formato do pacote ARP
● HardwareType - Especifica o tipo do hardware.
– Os tipos conhecidos são definidos pela
RFC Assigned Numbers, que recebe uma atualização de tempos em tempos.
– O hardware ethernet recebeu o número 1.
● Protocol Type - Especifica o tipo do protocolo ao
qual o endereço lógico se refere.
– A RFC Assigned Numbers especifica que o
tipo deve ser o mesmo que os do MAC Ethernet. No caso do IP, 0800h.
Formato do pacote ARP
● HardwareLen - Determina o comprimento em
bytes do endereço de hardware (físico).
● ProtocolLen - Determina o comprimento em
bytes do endereço de protocolo (lógico).
● Operation - Tipo da operação. Para o ARP, só
existem duas: Pergunta e Resposta.
● SenderHardwareAddr - Endereço físico de
quem está enviando o pacote.
● SenderProtocolAddr - Endereço lógico de quem
Formato do pacote ARP
● TargetHardwareAddr - Endereço físico
desejado. Na operação de request, vai em branco. (Quem responder preenche este campo)
Formato do pacote ARP
Exemplo: IP (versão 4) em uma rede Ethernet
HARDWARE TYPE: 1 (Ethernet)
PROTOCOL TYPE: 080016 (IP – versão 4) HLEN: 6 (bytes – Ethernet)
PLEN: 4 (bytes – IPv4)
OPERATION: 1 (requisição ARP) ou 2 (resposta ARP)
Hardware
Observações sobre o formato do
pacote ARP
●
Campos de comprimento variável, os
quais dependem dos tipos dos endereços,
logo o ARP pode ser usado com:
– Endereço de hardware arbitrário
– Endereço de protocolo arbitrário (qualquer
ARP: exemplo
IP ARP Ethernet driver Ethernet driver Ethernet driver ARP ARP IPARP request (Eth. broadcast)
enviar datagrama (3) (2) (3) ARP request (4) ARP reply (1) (4) (5)
Retenção de associações
●
Por questões de desempenho o ARP
precisa evitar o envio de uma requisição
para cada pacote a ser enviado
●
Solução:
– Manter uma tabela de associações
– O endereço é resolvido uma vez e usado
Cache ARP
●
Tabela ARP é implementada como uma
memória cache
– Entradas são adicionadas dinamicamente – Entradas “envelhecem” e são removidas
● Minimiza entradas desatualizadas
– Entradas mudam e são atualizadas
Otimizações do ARP
●
Algumas operações simples podem
melhorar
significativamente
o
aproveitamento da rede com relação a
pacotes ARP:
– Como o pedido de ARP inclui os endereços
lógico e físico do requisitante, a máquina que responde pode imediatamente guardar esta informação em seu ARP Cache, pois provavelmente precisará dela em breve.
Otimizações do ARP
– Como o pedido é enviado em broadcast,
todas as que recebem o pacote podem aproveitar o tempo que dispenderam para analisar a informação guardando-a no seu Cache. Assim, se em algum momento for necessário falar com aquele host, a informação já estará presente. Isso é bastante viável pois as tabelas de ARP não são muito grandes, em geral.
Otimizações do ARP
– Assim que uma máquina é inicializada na
rede, esta pode gerar um ARP broadcast anunciando seu endereço para as outras, adiantando o processo de detecção, e consequentemente, a comunicação. Isso só é vantajoso se a comunicação for iniciada pelo host remoto, pois em caso contrário, de qualquer forma, será necessário um ARP para pedir o endereço remoto.
Algoritmo para processamento de
requisições ARP
1.Extrai o par de informações da origem (IPA,HwA) e atualiza a entrada na tabela ARP se esta
existir
2.Se o destino é o próprio equipamento então:
2.1. Adiciona o par (IPA,HwA) à tabela ARP se esta entrada não estiver presente
2.2. Preenche o destino com endereço de hardware 2.3. Troca as entradas de origem e destino
2.4. Muda o campo OPERATION para resposta (2) 2.5. Envia a resposta ARP de volta a origem
Características do algoritmo
●
Se A envia uma requisição ARP para B, B
adiciona informação sobre A (item 2.1.)
– B provavelmente enviará um pacote para A
●
Se A envia uma requisição ARP para B,
outros equipamentos também recebem
informação sobre A e podem atualizá-la,
mas não a adicionam (item 1.)
– Evita que o cache fique “entupido” sem
Encapsulamento ARP
●
A mensagem ARP é transportada dentro
da parte reservada ao pacote de rede em
um quadro, ou seja, sua área de dados
Proxy ARP ou promiscuous ARP
●
Usado para que múltiplas redes físicas
compartilhem um único prefixo de rede
●
Funcionamento:
– Um proxy (geralmente, um roteador)
responde aos pedidos ARP em nome de outro equipamento
– Utiliza uma tabela especial para encaminhar
os pacotes para a rede correta
●
Exemplos de uso: VPN, switches nível-3 e
Proxy ARP – exemplo
● Host A precisa enviarpacotes para host C e D
– Seu prefixo de rede
indica que esses
equipamentos estão na mesma rede física,
logo a é uma entrega direta
– No entanto, há um
roteador separando A de C e D
● Solução: implementar
ARP Probe
●
Requisição ARP com configuração
especial:
– SENDER IP: 0.0.0.0
– SENDER HA: endereço HA do host de origem – TARGET IP: endereço IP do host de origem – TARGET HA: 00:00:00:00:00:00
– Significado da requisição: “Este é o endereço
IP que eu desejo utilizar”
●
Útil para verificar se o endereço IP já está
Gratuitous ARP ou ARP
Announcement
● Requisição ARP com configuração especial:
– SENDER IP: endereço IP do host de origem – SENDER HA: endereço HA do host de origem – TARGET IP: endereço IP do host de origem – TARGET HA: 00:00:00:00:00:00
– Significado da requisição: “Este é o endereço IP que
eu estou utilizando agora”
● Útil para verificar se o endereço IP já está em
uso, com intuito de indicar um conflito
● Permite atualizar mais rapidamente tabelas
– Por exemplo, se a interface de um host é substituída,
ARP spoofing ou ARP poisoning
● Consiste em enviar mensagens ARP falsas,
assumindo ser outro host
● Embora usado para ataques do tipo
man-in-the-middle e denial-of-service, tem usos legítimos:
– Redirecionamento de hosts para fins de registro
ou autenticação/autorização
– Serviços de redundância em rede
● Exemplo: um servidor X falha e outro servidor Y
assume se anunciando com o mesmo IP, porém com outro HA