Escolar Documentos
Profissional Documentos
Cultura Documentos
Versão 1.2
Setembro de 2018
Prof. Jairo
jairo@uninove.br
professor@jairo.pro.br
http://www.jairo.pro.br/
1.1 – Descrição
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.
As mensagens de retorno icmp usam tipos (types) e códigos (codes) para informar ao
remetente do datagrama o erro que ocorreu.
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).
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.
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 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.
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.
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.
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.
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.
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
Nesta rede, o tráfego ARP para a requisição e resposta pode ser observado, por exemplo,
com o comando tcpdump:
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.
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:
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.
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.
Naturalmente, neste caso, o roteador sabe que o host C não está na LAN 1 mas está na LAN 2.
Normalmente, quando se usa proxy ARP não é configurado default gateway nos hosts.
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).
● havia a necessidade do servidor rarp estar no mesmo segmento de rede que o cliente que
solicitava o endereço IP;
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.