Como os endereços IP são mapeados para endereços MAC?

14

Eu tenho lido sobre as diferenças entre os endereços MAC e IP e por que precisamos dos dois.

Para resumir, os endereços MAC são IDs únicos físicos e imutáveis ​​para cada dispositivo, enquanto os endereços IP são atribuídos, alteráveis ​​e virtuais. Para analogia, os endereços MAC são como pessoas que têm nomes permanentes e os endereços IP são onde eles vivem atualmente.

No mundo real, vinculamos endereços e nomes com a ajuda de uma lista telefônica. Qual mecanismo vincula os endereços IP aos endereços MAC e onde esse mecanismo está localizado na rede?

CodyBugstein
fonte
5
Depois de analisar suas perguntas, acho que você se beneficiaria de um bom livro. Considere estudar algo como o TCP / IP Illustrated, vol. 1: Os Protocolos de Stevens (FYI, a edição de 1993 é geralmente considerada melhor que o relançamento de 2011, embora a edição de 1993 cubra apenas o IPv4 em profundidade).
Mike Pennington
"A rede ilustrada: como o TCP / IP funciona em uma rede moderna" e / ou "Guia TCP / IP: uma referência abrangente e ilustrada aos protocolos da Internet" também podem valer uma olhada.
Jens Ligação
4
@ MikePennington Obrigado, é uma boa maneira de dizer o nome, em oposição a um "RTFM" e um -1. Estou lendo agora on-line :)
CodyBugstein
Relacionados: superuser.com/questions/623511/...
leonbloy
1
Os endereços MAC não são, na realidade, nem físicos, nem imutáveis, nem únicos. Vi dispositivos que selecionam aleatoriamente seu MAC a cada reinicialização. Certamente existem utilitários para praticamente qualquer plataforma alterar temporariamente ou permanentemente o MAC de quase todas as interfaces. O iOS 8 ainda randomiza o MAC wifi para varrer redes.
MacLemon 28/06

Respostas:

19

O mecanismo é chamado de ARP (Address Resolution Protocol) . Todos os ARPs de dispositivos IPv4 Ethernet para resolver endereços MAC Ethernet para IPs de destino. Os mapeamentos de IP para Mac são armazenados na tabela ARP de cada dispositivo (a lista telefônica na sua analogia).

Para simplificar: Na maioria dos casos, para resolver o endereço MAC associado a um endereço IP, você envia um pacote ARP de difusão (para todos os dispositivos da rede), perguntando quem possui esse endereço IP. O dispositivo com esse endereço IP responde ao ARP (com seu endereço MAC).

mulaz
fonte
na maioria das vezes, ele apenas olha para uma tabela arp local, eu acho. Apenas a primeira vez que tem que fazer uma transmissão.
Cruncher
^ sim, é claro, depois de descobrir os dispositivos MAC, ele é armazenado em uma tabela ARP por algum tempo (alguns minutos), para que não seja necessário repetir o processo de consulta ARP para cada pacote.
mulaz
Ah, eu não percebi que ele caiu da mesa depois de alguns minutos. Eu pensei que isso durou um tempo. Isso significa envenenar o ARP, você precisa enviar respostas ARP quase com frequência?
Cruncher
Sim, e o host "real" não deve enviar nenhum pacote para a máquina envenenada, ou a máquina armazenará o MAC 'real'.
mulaz
1
Dependendo do que você está tentando alcançar.
mulaz
13

Como a pergunta foi marcada com IPv6, responderei porque o IPv6 é muito diferente do IPv4.

Para começar, não existe o ARPv6. O mapeamento entre a camada 2 e os endereços IPv6 é feito pelo NDP (Neighbor Discovery Protocol), que é enviado pelo ICMPv6. Portanto, você não deve ignorar o ICMPv6 e filtrá-lo, como é costume no IP legado. O NDP fornece dois tipos de mensagens que são de interesse aqui: Solicitação de vizinhos e Anúncio de vizinhos. Um nó que deseja aprender um endereço da camada de link para um endereço IP específico envia uma Solicitação de Vizinha para o endereço multicast do nó solicitado local de link local - não há mais transmissão para o IPv6.

Por exemplo, se o endereço em questão for 2001:db8::0011:2233:4455:6677, o endereço multicast do nó solicitado correspondente é ff02::1:ff55:6677e o endereço multicast Ethernet correspondente é 33:33:ff:55:66:77. Todos os nós com um endereço terminado em *55:6677pertencem a esse grupo de difusão seletiva e ouvirão isso - provavelmente é apenas o próprio sistema de destino. A Solicitação de Vizinho contém também os endereços IPv6 unicast e o endereço MAC do sistema de solicitação.

No recebimento, o nó de destino responde com seu Anúncio de vizinho, que é enviado ao endereço unicast (camada de link e IPv6) do nó solicitante. Assim, o nó solicitante aprende o endereço MAC do nó de destino.

E sim, a falsificação de NDP funciona como a falsificação de ARP. E não, o IPsec não é a resposta.

contra-modo
fonte
"O próprio ARP não pode ser usado, porque foi feito para endereços da camada de rede de 4 bytes (ou seja, IPv4). " Isso não é verdade. O ARP usa campos de tamanho de endereço para especificar o tamanho do endereço (até 255 octetos) para os endereços das camadas 2 e 3 (consulte RFC 826). O motivo pelo qual o ARP não pode ser usado com o IPv6 é porque o IPv6 não possui transmissão.
Ron Maupin
1
O ARP foi substituído pelo NDP na v6 por razões de segurança (e, como todos os bons protocolos adjacentes à v6, experimentou uma fluência significativa nos recursos), não porque a v6 não tem transmissão - o ARP usa apenas a transmissão L2 e poderia ser estendido facilmente para fornecer endereços v6.
Nick Bastin 29/03
2
Não sei se o ARP foi substituído por razões de segurança em primeiro lugar. Na minha opinião, havia o desejo de cobrir todos os protocolos de controle do ICMPv6. Como efeito colateral, sim, você pode proteger o ICMPv6 por IPsec. No entanto, o IPsec requer uma troca de chaves e o IKE é executado no UDP - o que requer um endereço IP. Uma tarefa do NDP é negociar um endereço IP, e a troca manual de chaves não é dimensionada, portanto a idéia de NDP + IPsec = NDP seguro não funciona dessa maneira. Alternativas como o SeND não decolaram (e provavelmente nunca o serão). No final, não vejo nenhuma vantagem de segurança do NDP sobre o ARP.
Countermode #
4

A resposta superior é boa. Caso isso ajude, aqui está uma descrição em termos da analogia da sua agenda telefônica. Termos reais de rede entre parênteses.

Com base no nome (endereço IP), você sabe que eles moram no seu bairro (domínio de transmissão). Primeiro, você olha na sua agenda telefônica (cache ARP) para ver se você já sabe o endereço (endereço MAC). Se eles não estão na lista telefônica, você sai e grita (transmite): “Onde Steve mora?” Alto o suficiente para que todos possam ouvir (solicitação ARP). Supondo que Steve realmente mora lá e ele está acordado, ele responde - apenas para você, sem gritar - “Aqui está o meu endereço” (resposta ARP). Você o anota na agenda para referência futura (armazenamento em cache do ARP).

Jacktose
fonte
Certo. Foi um exercício divertido para mim. Coisas reais como broadcast / unicast não se encaixam perfeitamente na analogia (gritar / falar / enviar e-mail?), Então pegue um pouco de sal.
Jacktose
Para o editor: usei o endereço posteriormente na analogia, para MAC.
21418 Jacktose
2
  1. Os endereços MAC podem ser alterados. No Linux, use ip ou ifconfig para a maioria do Windows, observe as configurações do driver da sua interface de rede.

  2. Você não converte nada. Os endereços MAC estão na Camada 2, IP na Camada 3 do modelo OSI. Para IPv4, o ARP é usado para descobrir qual endereço MAC (camada 2) pertence a um determinado endereço IP (camada 3). Para IPv6, é usado o ICMPv6 (descoberta de vizinho).

Jens Link
fonte
Desculpe, eu deveria ter dito "traduzir" em "Convert" não
CodyBugstein
0

Protocolo de resolução de endereços (ARP)

Endereço IP ---> ARP ---> Endereço MAC

Endereço MAC ---> RARP ---> Endereço IP

Endereço IP = Endereço lógico [32 bits]

Endereço MAC = Endereço Físico [48 bits]

Camada de rede (IP) ----> ARP ---> Camada de vinculação de dados (MAC)

O endereço IP é necessário na camada de rede para identificar um host de origem / destino.

O endereço MAC é necessário na camada de enlace de dados para identificar um host de origem / destino.

Dipankar Nalui
fonte
Você está incorreto sobre o RARP (muitas pessoas têm essa ideia incorreta). Isso é algo que costumava ser usado por um host para determinar seu próprio endereço IP, não os endereços IP de outros hosts. Não é mais usado.
Ron Maupin
0

A pilha de rede primeiro pesquisa o IP de destino em sua tabela de roteamento, a partir disso, determina duas coisas.

  1. Qual interface o pacote deve ser enviado.
  2. Qual é o endereço IP do próximo salto. Se nenhum salto seguinte for especificado na tabela de roteamento, o IP do destino será usado como o próximo salto.

Observe que o endereço IP do próximo salto é um conceito puramente local, nunca se torna parte de um pacote enviado na conexão.

Se o pacote for enviado em uma camada de link multiponto (por exemplo, Ethernet etc), o sistema operacional procurará o próximo salto na tabela arp (ipv4) ou discovery do vizinho (ipv6). Se encontrar uma entrada não obsoleta lá, ele terá o endereço MAC necessário e poderá enviar o pacote.

Se não tiver uma entrada utilizável, coloca os pacotes destinados ao salto seguinte em espera e envia uma solicitação para encontrar o endereço MAC. Os mecanismos aqui diferem um pouco entre v4 e v6.

Na v4, as solicitações arp são enviadas. Isso normalmente é transmitido, mas em alguns casos, se o host tiver uma entrada obsoleta, ele poderá tentar uma solicitação de unicast primeiro e só voltará a transmitir se isso falhar. A resposta é normalmente unicast.

Na v6, as solicitações de solicitação de vizinhos são enviadas para um endereço multicast gerado a partir do endereço do próximo salto. O destino responde com um anúncio de vizinho unicast. Os hosts também podem enviar anúncios vizinhos ao grupo "multicast de todos os nós" (também conhecido como broadcast eficaz) para atualizar as entradas nos caches de descoberta de vizinhos de mesmo nível.

Peter Green
fonte