Você está na página 1de 11

Arquitetura TCP/IP e aplicações em Redes de Computadores

Icmp, arp e rarp


Protocolos icmp, arp e rarp e comandos de diagnóstico de redes

Versão 1.2
Setembro de 2018

Prof. Jairo

jairo@uninove.br
professor@jairo.pro.br

http://www.jairo.pro.br/

Icmp, arp e rarp - setembro/2018 - Prof. Jairo - professor@jairo.pro.br - http://www.jairo.pro.br/ 1 / 11


Arquitetura TCP/IP e aplicações em Redes de Computadores

O icmp é um protocolo de camada 3 do RM-OSI.

Os protocolos arp e rarp estão na camada 2 do RM-OSI.

Icmp, arp e rarp - setembro/2018 - Prof. Jairo - professor@jairo.pro.br - http://www.jairo.pro.br/ 2 / 11


Arquitetura TCP/IP e aplicações em Redes de Computadores

1 – Protocolo icmp (internet control message protocol)

1.1 – Descrição

O icmp (internet control message protocol, protocolo de controle de mensagem da internet),


é um protocolo de camada 3.

Funcionalmente, a mensagem do icmp é encapsulada num datagrama IP, e por isso não
oferece garantia de entrega. É semelhante ao UDP (mas cabe lembrar que o UDP é um protocolo de
camada 4).

O icmp não é usado para transportar dados. Tem como finalidade relatar erros no
processamento de datagramas IP e prover mecanismos de investigação das características de redes
TCP/IP, portanto é usado também como ferramenta para fazer diagnósticos de redes.

É importante notar que o icmp apenas relata e não especifica nenhuma ação para corrigir os
erros encontrados.

O funcionamento do icmp é peer-


to-peer (par a par). Como exemplo, um
par envia um request (requisição) e o que
recebe a mensagem responde com um
replay. Isto é diferente do modelo
cliente-servidor, que envolve uso de Requisição (request) e resposta (replay) peer-to-peer (par a par).
portas de serviço e de cliente, como
ocorre com DHCP.

Mas também poderia ser o


caso de informar problemas na
entrega de datagramas IP, como por
exemplo quando um par não está
respondendo, quando a rede não está
acessível, quando um nó está
Mensagem icmp para informar o descarte do datagrama IP.
sobrecarregado, quando encontra um
erro no cabeçalho do datagrama IP,
etc.

As mensagens de retorno icmp usam tipos (types) e códigos (codes) para informar ao
remetente do datagrama o erro que ocorreu.

Alguns exemplos de tipos (types) de mensagem icmp seguem abaixo:

Icmp, arp e rarp - setembro/2018 - Prof. Jairo - professor@jairo.pro.br - http://www.jairo.pro.br/ 3 / 11


Arquitetura TCP/IP e aplicações em Redes de Computadores

Tipo Código Descrição Explicação


É a resposta gerada para uma requisição eco (echo request).
0 0 Resposta eco (echo replay) O echo request é usado pelo comando ping, e a sua resposta
é mandatória para todos os hosts e roteadores.
Notifica que o datagrama IP não teve como ser encaminhado
3 0 a 15 Destino inacessível e por isso foi destruído (dropped). O campo “código” tem a
explicação para este descarte.
Informa que existe uma rota alternativa para o datagrama e
5 0a3 Redirecionamento por isso deveria ser atualizada a tabela de rotas. O campo
“código” explica a razão para a mudança da rota.
É enviado quando o campo TTL1 atinge contagem zero
11 0 ou 1 Tempo excedido (código 0) ou quando ocorre timeout (expiração de tempo)
para remontagem de segmentos (código 1).
É enviado quando o cabeçalho IP é inválido (código 0) ou
12 0 ou 1 Problema de parâmetro quando está faltando alguma opção obrigatória do cabeçalho
IP (código 1).

Alguns exemplos de códigos para o tipo 3 (Destino inacessível) segue abaixo:

Código Descrição
0 Rede de destino inalcançável (destination network unreachable).
1 Host de destino inalcançável (destination host unreachable).
2 Protocolo de destino inalcançável (destination protocol unreachable).
3 Porta de destino inalcançável (destination port unreachable).
6 Rede de destino desconhecida (destination network unknown).
7 Host de destino desconhecido (destination host unknown).

1.2 – Comandos de diagnóstico

Como foi dito, o protocolo icmp não é usado apenas para informar problemas na entrega do
datagrama IP, mas também para o administrador da rede fazer diagnóstico de problemas.

Para este diagnóstico existem comandos padronizados como o ping, traceroute (tracert, no
Windows) ou mtr.

O comando ping ajuda no diagnóstico de conectividade na rede. É usado tanto para verificar
se determinada máquina está acessível na rede quanto verificar se o sistema de onde está sendo
1 TTL: Time To Live (tempo de vida) é um valor numérico no datagrama IP (por exemplo, 64), que é subtraído de
uma unidade toda vez que este chegar a um roteador. Se depois desta subtração permanecer maior que zero, o
reteador encaminha o datagrama, se não, descarta. O objetivo é impedir a perpetuação de datagramas em loop
devido a problemas em tabelas de roteamento.

Icmp, arp e rarp - setembro/2018 - Prof. Jairo - professor@jairo.pro.br - http://www.jairo.pro.br/ 4 / 11


Arquitetura TCP/IP e aplicações em Redes de Computadores

dado o comando ping está na rede. Alguns exemplos de ping seguem abaixo:

Comando ping com envio de 3 pacotes. Notar que o TTL padrão (default) é 58.

Comando ping6 (ipv6) com envio de 3 pacotes. Notar que o TTL padrão (default) é 55.

O comando traceroute é uma ferramenta para diagnóstico da rota e também medida de


demora no trânsito de pacotes desde a origem até o destino.

O traceroute funciona enviando pacotes icmp com incremento gradual no valor TTL: o
primeiro pacote tem valor TTL 1, o segundo tem TTL 2 e assim por diante. O primeiro roteador
recebe o pacote, decrementa o valor TTL, destrói (drop) este pacote pois passou a ter valor TTL
zero e então envia uma mensagem icmp “Tempo excedido” de volta para o remetente. Seguindo
este procedimento,
traceroute
engenhosamente usa a
mensagem de retorno
icmp “Tempo
excedido” para
construir uma lista de
roteadores por onde o
datagrama segue
desde a origem até o
destino. Ao chegar Comando traceroute com a opção “-I” para usar icmp echo. A opção “-n” é para não
finalmente no destino, resolver os nomes dos hosts.
recebe como retorno
uma mensagem icmp “resposta eco” (echo replay).

NOTA:
O comando traceroute também pode usar protocolos TCP ou UDP, ao invés de icmp.

Icmp, arp e rarp - setembro/2018 - Prof. Jairo - professor@jairo.pro.br - http://www.jairo.pro.br/ 5 / 11


Arquitetura TCP/IP e aplicações em Redes de Computadores

Comando traceroute com a opção “-6” para usar ipv6 e não ipv4 (que é o default). Nos saltos 6,
7 e 8 os asteriscos retornados indicam timeout (expiração) no retorno do pacote.

O comando mtr é semelhante ao traceroute, porém tem funcionalidades adicionais. Nos


exemplos abaixo, foi feito um trace e gerado um relatório (report) com envio (snt) de 3 pacotes para
cada salto.

Comando mtr com a opção “-n” para não resolver os nomes dos hosts, opção “-4” para usar
ipv4 e não ipv6, opção “-r” para gerar um relatório e opção “-3” para enviar 3 pacotes em
cada salto.

Comando mtr com a opção “-n” para não resolver os nomes dos hosts, opção “-6” para usar
ipv6, opção “-r” para gerar um relatório e opção “-3” para enviar 3 pacotes em cada salto.
Nos saltos 6, 7 e 8 as interrogações indicam timeout (expiração) no retorno do pacote.

O comando mtr também pode usar protocolos TCP ou UDP, ao invés de icmp.

Icmp, arp e rarp - setembro/2018 - Prof. Jairo - professor@jairo.pro.br - http://www.jairo.pro.br/ 6 / 11


Arquitetura TCP/IP e aplicações em Redes de Computadores

2 – Protocolo arp (address resolution protocol)

2.1 – Descrição

Na LAN, cada datagrama (camada 3) enviado para a rede local é encapsulado num frame
(camada 2), então além do endereço IP de destino também é necessário saber o endereço MAC do
destinatário. É necessário os dois endereços de destino, pois o esquema de endereçamento ipv4 é
independente do endereçamento físico.

O arp (address resolution protocol, protocolo de resolução de endereço), é o protocolo usado


para obter o endereço do hardware MAC (Media Access Control), quando se dispõem do endereço
lógico (endereço IP).

Uma vez determinado o endereço físico, o arp mantém em cache (tabela arp) o mapa dos
endereços MAC relacionados aos endereços IP.

Embora opere em camada 2 (camada de linque, link layer), o quadro gerado pelo arp
transporta informações de camada 3. Por ser de camada 2, arp não é roteável.

Para entender o funcionamento do arp, considerar o caso abaixo:

i) a estação de trabalho A com IP 192.168.1.10 quer enviar uma mensagem para a estação C,
que tem IP 192.168.1.12. As duas máquinas estão na mesma rede, porém A não sabe o endereço
físico (MAC) de C;

ii) a estação A envia um broadcast ARP perguntando quem tem endereço IP 192.168.1.12
(ARP "who-has" request);

iii) todas as estações da rede recebem o broadcast, porém apenas C responde com “ARP
replay” enviando seu endereço físico para A;

iv) a estação A recebe o ARP replay e armazena o par IP:MacAddress na sua tabela ARP
para que, da próxima vez que precisar se comunicar com C, não necessite fazer outro broadcast.

A B C A B C
192.168.1.10 192.168.1.11 192.168.1.12 192.168.1.10 192.168.1.11 192.168.1.12

Broadcast ARP “who-has” request Resposta “ARP replay” da


para o endereço FF:FF:FF:FF:FF:FF Estação C para A

Quem tem o IP 192.168.1.12? Eu tenho MAC 51:54:00:6d:d1:13

Icmp, arp e rarp - setembro/2018 - Prof. Jairo - professor@jairo.pro.br - http://www.jairo.pro.br/ 7 / 11


Arquitetura TCP/IP e aplicações em Redes de Computadores

Nesta rede, o tráfego ARP para a requisição e resposta pode ser observado, por exemplo,
com o comando tcpdump:

Comando tcpdump com opções para observar o tráfego ARP na rede.

2.2 – Comando arp

Para visualizar o conteúdo da tabela ARP (cache ARP), usar o comando arp:

Comando arp com a opção “-n” para não resolver os nomes dos hosts.

O comando arp também permite deletar e incluir entradas do cache ARP. No exemplo acima,
a flag CM para o endereço 192.168.1.100 indica que foi criada manualmente, portanto é estática e
nunca expira. As demais entradas são dinâmicas, pois foram criadas ao final das resoluções ARP
com sucesso. Estas últimas expiram após algum período de tempo.

A duração típica do cache ARP é de 60 minutos num Linux. Se neste intervalo não for
reusado, expira e é removido do cache.

2.3 – ARP Gratuito (Gratuitous ARP)

Normalmente, a resposta ARP “is-at” (está em) é enviada em resposta a uma requisição ARP
“who-has” (quem tem), resposta esta que causa a atualização da tabela ARP do requisitante.

Mas caso haja alteração do MAC, por exemplo pela substituição da interface de rede da
estação B do exemplo acima, as outras máquinas desta rede vão manter no cache ARP o valor
antigo por algum tempo, e isto vai impedi-las de acessar a estação B enquanto não renovarem o
cache.

Neste caso, a estação B pode enviar um broadcast ARP replay para todas as outras
máquinas da rede local para atualizarem as suas tabelas ARP. Este ARP replay não é resposta a uma
requisição específica, por isso é chamado de ARP gratuito.

O ARP gratuito pode ser enviado com o comando arping. Por exemplo, se a estação B
acessa a rede pela interface ethernet eth0 e nela for rodado o comando:

Icmp, arp e rarp - setembro/2018 - Prof. Jairo - professor@jairo.pro.br - http://www.jairo.pro.br/ 8 / 11


Arquitetura TCP/IP e aplicações em Redes de Computadores

arping -A -I eth0 192.168.1.11

então será enviando um broadcast ARP replay para todas máquinas nesta rede, que atualizarão suas
tabelas ARP para retratar o novo endereço MAC da estação B. O comando arping acima continua
enviando o broadcast até que seja encerrado com um Control-C.

O tráfego ARP para este broadcast pode ser observado, por exemplo, com o comando
tcpdump:

Comando tcpdump para observar o broadcast ARP na rede criado pelo arping na estação B.

2.4 – Proxy ARP

Um caso incomum, mas que pode ser útil eventualmente, é o proxy ARP. A tradução de
proxy é representante, portanto proxy ARP pode ser entendido como alguém que responde ao
broadcast ARP no lugar de outro.

Para entender o funcionamento, vamos considerar o caso abaixo para duas LANs, LAN 1 e
LAN 2, conectadas por um roteador.

Neste caso, se o host B na LAN 1 quiser enviar uma mensagem para o host C na LAN 2, a
máscara de rede em host B vai mostrar que o endereço de destino está em outro segmento da rede,
portanto o pacote será enviado para o default gateway, que está no IP 172.16.1.1 do roteador. O
roteador então roteia o pacote para o host C, desde que haja rota para a LAN 2.

Mas se o host A na LAN 1 também quiser enviar uma mensagem para o host C, a situação é
diferente. A máscara de rede em host A mostra que o endereço de destino está no mesmo segmento
de rede, e por isso a tabela ARP deve ser consultada.

Não havendo a entrada para host C no cache ARP de host A, este faz um broadcast (ARP
"who-has" request) para atualizar a sua tabela ARP. Porém, este broadcast ARP não prossegue
através do roteador, então falharia a atualização da tabela ARP caso a funcionalidade proxy ARP
não estivesse habilitada no roteador. Esta funcionalidade não costuma estar habilitada por default
(por padrão).

Estando habilitado proxy ARP no roteador, este agora responde ao host A (ARP replay) com
o MAC de sua interface de rede na LAN 1. E após isso, a mensagem do host A para o host C será
roteada pelo proxy ARP.

Proxy ARP é uma técnica pela qual um dispositivo (por exemplo, o roteador) responde à
requisição do broadcast ARP para um endereço MAC que não está naquele segmento de rede.

Icmp, arp e rarp - setembro/2018 - Prof. Jairo - professor@jairo.pro.br - http://www.jairo.pro.br/ 9 / 11


Arquitetura TCP/IP e aplicações em Redes de Computadores

Naturalmente, neste caso, o roteador sabe que o host C não está na LAN 1 mas está na LAN 2.

Proxy ARP habilitado no roteador para permitir ao host A se comunicar


com os hosts da LAN 2.

Normalmente, quando se usa proxy ARP não é configurado default gateway nos hosts.

Em ipv6, a funcionalidade do arp é obtida com o NDP (Neighbor Discovery Protocol).

Icmp, arp e rarp - setembro/2018 - Prof. Jairo - professor@jairo.pro.br - http://www.jairo.pro.br/ 10 / 11


Arquitetura TCP/IP e aplicações em Redes de Computadores

3 – Protocolo rarp (reverse address resolution protocol)

O rarp (reverse address resolution protocol, protocolo reverso de resolução de endereço), é


um protocolo obsoleto que era usado para obter o endereço IP quando se dispunha do endereço
MAC. O funcionamento do rarp é semelhante ao caso descrito para arp.

O objetivo do rarp era obter endereço IP dinamicamente.

Mas devido às deficiências do rarp em suprir um endereço IP, este foi substituído pelo
bootp2 (bootstrap protocol, protocolo de inicialização).

Algumas deficiências que levaram à obsolescência do rarp, são:

● havia a necessidade do servidor rarp estar no mesmo segmento de rede que o cliente que
solicitava o endereço IP;

● como os endereços de hardware (MAC) precisavam estar cadastrados num database do


servidor rarp, não podia ser usado em redes onde o endereço de hardware era alocado
dinamicamente nos clientes (como é o caso da virtualização atual);

● fornecia apenas o endereço IP e não outras informações importantes como máscara de


rede, default gateway e endereços IP dos servidores de nomes (DNS).

2 O bootp (bootstrap protocol, protocolo de inicialização), é usado para atribuir automaticamente um endereço IP à
máquina na rede que solicite um IP a um servidor bootp. Opera na camada de aplicação e usa protocolo de
transporte UDP, com porta de serviço 67. A porta de cliente é a 68, usada para receber as respostas do servidor.
Atualmente o serviço bootp está superado pelo DHCP (Dynamic Host Configuration Protocol), porém quase tudo
que existe no DHCP veio do bootp.

Icmp, arp e rarp - setembro/2018 - Prof. Jairo - professor@jairo.pro.br - http://www.jairo.pro.br/ 11 / 11

Você também pode gostar