Sunteți pe pagina 1din 22

Introduo

O ICMP um protocolo auxiliar da camada de rede, ele ir atuar em complemento ao IP para


garantir o servio de entrega da camada 3;
O ICMP similar ao UDP pois utiliza mensagens que cabem num s datagrama, sendo no
entanto ainda mais simples uma vez que no possui a indicao no seu cabealho dos portos de
origem. As mensagens ICMP so interpretadas pelo software de rede pelo que no necessrio
indicar os portos, o ICMP pode ainda ser usado para se obter informaes acerca da rede. Para
conhecer este protocolo com mais detalhe consultar o RFC 792.
Internet Control Message Protocol (ICMP):

Utilizado para enviar mensagens de erro e de controle


Protocolo de Nvel 3
Encapsulado em um datagrama IP

Objetivos

Conhecer o protocolo ICMP;


Aprender como utilizado esse protocolo;
Visualizar a estrutura do cabealho e o funcionamento de cada campo;

Caractersticas ICMP:
No enviada uma mensagem ICMP para mensagens ICMP de erro

Isto : ICMP no relata erros que ocorram em mensagens ICMP


Ateno! Echo Request no mensagem de erro

Os erros so relatados somente sobre o primeiro fragmento (offset = 0)

Definicao
O protocolo ICMP (Internet Control Message Protocol) um protocolo que permite gerir as
informaes relativas aos erros nas mquinas conectadas.
Dado os poucos controlos que o protocolo IP realiza, permite no corrigir estes erros mas d-los
a conhecer aos protocolos das camadas vizinhas. Assim, o protocolo ICMP utilizado por todos
os switchs, que o utilizam para assinalar um erro (chamado Delivery Problem).
As mensagens ICMP geralmente so enviadas automaticamente em uma das seguintes situaes:

Um pacote IP no consegue chegar ao seu destino (i.e. Tempo de vida do pacote

expirado)
O Gateway no consegue retransmitir os pacotes na frequncia adequada (i.e. Gateway

congestionado)
O Roteador ou Encaminhador indica uma rota melhor para a mquina a enviar pacotes.

ICMP

O protocolo ICMP(Internet Control Message Protocol) usado pela implementao do


protocolo IP de estaes e roteadores para trocar informaes de erro e controle,

sinalizando situaes especiais por meio de seus diversos tipos de mensagens;


Mensagens ICMP so encapsuladas diretamente em datagramas IP;

Uma mensagem de erro nunca gerada em resposta a:

Outra mensagem de erro;


Datagrama com destino brodcast, multicast, loopback;

Cabealho ICMP (Frame ICMP)

Cada mensagem possui um campo tipo e um campo cdigo que indica o tipo da

mensagem, alm de um checksum;


Em algumas situaes a mensagem ICMP contm o cabealho e os primeiros 8 bytes do
datagrama responsvel pela gerao da mensagem;

O ICMP tem uma frame bsico, comum a todos os tipo de mensagem

Type: tipo da mensagem (Echo, Timestamp, Destination Unreachable, ...)


Code: tipo especfico
Checksum: da mensagem ICMP

Campos

Tipo
Existem diversos tipos de mensagem, cada uma para determinada situao;
Cdigo
Indica uma especificidade do tipo da mensagem, cada tipo pode possuir variaes;

Cheksum

Verifica a consistncia da mensagem, usa a mensagem por completa na verificao;


Data
Depende do tipo da mensagem;

Tipos de Mensagem

ICMP Timestamp Request

type: 0 (reply) 8 (request);


Identificador: permite identificar cada mensagem enviada por um processo (identificao

do processo que enviou a mensagem);


nmero de seqncia: nmero da mensagem enviada;
dados: opcionais;

ICMP Source Quench

Utilizada por estao e roteadores para controle de congestionamento;


Geralmente, para cada datagrama descartado por falta de espao no buffer de recepo

enviado uma mensagem source quench;


Solicita reduo na taxa de transmisso;
O fluxo reestabelecido gradualmente caso no chegue novas mensagens source quench;

ICMP Time Exceeded


6

Utilizada quano o temporizador de fragmentao expira antes da chegada de todos os

fragmentos;
Todos os fragmentos so descartados e enviado uma mensagem time exceeded
origem;

ICMP Destination Unreachble

Situao em que o roteador no consegue rotear ou entregar um determinado datagrama;


Falta de informaes de roteamento;
Protocolo do campo protocol no suportado;
Fragmentao do datagrama necessria mas o bit dont fragment est habilitado;

ICMP Redirect

Um router por algum motivo pode no ser a melhor escolha para encaminhar

determinado datagrama;
Descoberta do melhor caminho (redirect);
Routers podem indicar s estaes a existncia de rotas melhores, fornecendo o endereo

lgico do melhor roteador;


Protocolo ARP descobre o endereo fsico;

ICMP Redirect (Exemplo)

1) Estao A envia um datagrama para B pelo Router 1;

2) Router 1 verifica que no adequado para entrega;


3) Router 1 envia um ICMP Redirect estao A para informa-la que deve usar o Router 2 para
esse feito;

Outras Mensagens:
Redirect

Gerada para correo de rotas

Address Maks Request/Reply

Gerada para solicitao de mscara de subrede

Source Quench

Gerada para controle de fluxo pelo nvel 3

Ferramentas comumente usadas em Windows baseadas nesse protocolo so:

Ping e
Traceroute.

Alguns firewalls, geralmente instalados em servidores Windows ou Unix, bloqueiam as respostas


(ICMP Reply), dificultando o Ping e o Traceroute (tracert). Isto por diversas razes. Uma delas
para bloquear os ataques de hackers, que consiste na sobrecarga da memria, enviando dados
8

(em ping) at o sistema no ter a capacidade de administrar suas prprias funes. Esse ataque
significativo, principalmente contra usurios do Microsoft Windows 95.
O ICMP - Internet Control Message Protocol - um protocolo que faz parte da pilha TCP/IP,
enquadrando-se na camada de rede (nvel 3), a mesma camada do protocolo IP - Internet
Protocol. O seu uso mais comum feito pelos utilitrios ping e traceroute. O ping evia pacotes
ICMP para verificar se um determinado host est disponvel na rede. O traceroute faz uso do
envio de diversos pacotes UDP ou ICMP e, atravs de um pequeno truque, determina a rota
seguida para alcanar um host.

Ping
Quando queremos determinar se um determinado host est disponvel na rede interna ou mesmo
na Internet, frequentemente utilizamos o utilitrio ping como um dos primeiros recursos de
troubleshooting. O fato de um host no responder ao ping no quer dizer que ele esteja realmente
fora da rede, pois este servio pode estar desabilitado neste host por questes de segurana.
O comando, provavelmente j conhecido pelo leitor, :
ping <host>
Exemplo:
[root@malkovich linux-2.6.3]# ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=127 time=4.22 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=127 time=1.02 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=127 time=1.01 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=127 time=1.99 ms
64 bytes from 192.168.0.1: icmp_seq=5 ttl=127 time=1.03 ms
9

--- 192.168.0.1 ping statistics --5 packets transmitted, 5 received, 0% packet loss, time 4002ms
rtt min/avg/max/mdev = 1.019/1.857/4.221/1.241 ms

A resposta acima indica que o host 192.168.0.1 est disponvel. No final algumas estatsticas de
tempo e percentual de respostas positivas e negativas so apresentadas.

No exemplo seguinte vemos um caso em que no obtemos resposta do host.


[root@malkovich linux-2.6.3]# ping 192.168.0.2
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
--- 192.168.0.2 ping statistics --5 packets transmitted, 0 received, 100% packet loss, time 3998ms

chamado de cliente o host que inicia a comunicao, ou seja, a partir do qual o usurio executa
o comando de teste de disponibilidade. Servidor o alvo do teste, pois este deve possuir um
servio habilitado para ser capaz de receber o pacote do cliente e respond-lo.
O cliente envia primeiro um pacote do tipo ICMP Echo Request, ou simplesmente ICMP Echo.
Abaixo est a captura deste pacote na rede. Note o tipo do protocolo no cabealho IP (ICMP) e o
tipo do pacote no cabealho ICMP (Echo request).
Internet Protocol, Src Addr: 192.168.0.2 (192.168.0.2), Dst Addr: 192.168.0.1 (192.168.0.1)

Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
10

Total Length: 84
Identification: 0x0000 (0)
Flags: 0x04
Fragment offset: 0
Time to live: 64
Protocol: ICMP (0x01)
Header checksum: 0xb955 (correct)
Source: 192.168.0.2 (192.168.0.2)
Destination: 192.168.0.1 (192.168.0.1)
Internet Control Message Protocol
Type: 8 (Echo (ping) request)
Code: 0
Checksum: 0x5905 (correct)
Identifier: 0x9409
Sequence number: 0x0001
Data (56 bytes)

Quando o servidor recebe este pacote ele responde com um pacote do tipo ICMP Echo Reply.
Internet Protocol, Src Addr: 192.168.0.1 (192.168.0.1), Dst Addr: 192.168.0.2 (192.168.0.2)

Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
Total Length: 84
Identification: 0xa078 (41080)
Flags: 0x00
Fragment offset: 0
Time to live: 127
Protocol: ICMP (0x01)
Header checksum: 0x19dd (correct)
Source: 192.168.0.1 (192.168.0.1)
Destination: 192.168.0.2 (192.168.0.2)
Internet Control Message Protocol
Type: 0 (Echo (ping) reply)
Code: 0
Checksum: 0x6105 (correct)
Identifier: 0x9409
Sequence number: 0x0001
Data (56 bytes)
11

Este processo se repete at que o usurio cancele o ping com um <CONTROL><C>. O utilitrio
ento calcula as estatsticas e as exibe na tela. O usurio tambm pode controlar, atravs de
opes do comando, quantos pacotes devem ser enviados, o intervalo de tempo entre eles, e o
tamanho do pacote. Na verdade a rea de dados do pacote no carrega nenhuma informao til,
entretanto, pode ser aumentada para testar a rede com pacotes de tamanhos diferentes. Existe
atualmente um limite para o tamanho do pacote, pois um pacote muito grande pode provocar o
reboot de alguns sistemas Windows, sendo este o conhecido ping of death, ou ping da morte.

Traceroute
Um dos campos do cabealho IP chamado TTL - Time to Live - e determina por quantas
passagens em roteadores este pacote pode sobreviver. A cada passagem em um roteador ou host
este campo decrementado de 1. Este mecanismo utilizado para evitar que pacotes percorram a
rede eternamente, rodando de um lado para outro.
Echo Request possui um TTL igual a 64. Se um pacote possui um TTL de 1 e este deve passar
por um roteador antes de alcanar o seu destino final, este roteador ir descart-lo ao verificar o
TTL do pacote e retornar um pacote ICMP do tipo ICMP Time Exceeded para o host que o
enviou. Neste pacote de resposta o roteador se identifica como origem da mensagem Time
Exceeded. nessa caracterstica do protocolo que o utilitrio traceroute se baseia para traar uma
rota entre dois pontos da rede.
Suponha que o host 1 esteja separado do host 2 por dois roteadores, chamados router A e router
B. A partir do host 1 executado um traceroute para o host 2. O utilitrio cria um pacote UDP
destinado ao host 2, mas configura o seu TTL para 1. O router A recebe este pacote e, apesar de
saber para onde rotear o pacote, ao decrementar o TTL este torna-se 0 (zero) o que siginifica que
este pacote deve ser descartado, retornando um ICMP Time Exceeded para o host 1. Quando o
traceroute recebe esta resposta ele tem o endereo do primeiro roteador no caminho entre os dois
hosts. O primeiro roteador mostrado para o usurio.

12

Em seguida, o traceroute cria outro pacote UDP, com o TTL de 2. O pacote sobrevive ao
primeiro roteador mas descartado no segundo. Quando recebe o ICMP Time Exceeded do
segundo roteador temos o endereo dele, que tambm mostrado na sada do traceroute. O passo
seguinte um pacote com TTL de 3 o qual alcana o host 2. Os pacotes UDP so sempre
enviados com uma porta de destino invlida, o que fora que o host 2, ao receber o pacote,
retorne um pacote ICMP Destination Unreachable. O traceroute sabe ento que o caminho
completo foi descoberto e mostra ao usurio o endereo do host 2, indicando que o trace foi
finalizado.
Como ilustrao, executei um traceroute do IP 192.168.1.2 (host virtual A) para o IP 192.168.0.1
(host C). Como roteador entre essas duas mquinas est um Linux (host B) com os IP
192.168.1.1 e 192.168.0.2.
Portanto, o caminho do pacote deve ser A <-> B <-> C.
O comando foi executado a partir de A:

[root@malkovich root]# traceroute -q 1 192.168.0.1


traceroute to 192.168.0.1 (192.168.0.1), 30 hops max, 38 byte packets
1 192.168.1.1 (192.168.1.1) 8.243 ms
2 192.168.0.1 (192.168.0.1) 12.298 ms
3 192.168.0.1 (192.168.0.1) 21.193 ms

A sequncia de troca de pacotes a seguinte:

Seq Source --> Destination Protocol Description


1 192.168.1.2 --> 192.168.0.1 UDP Source Port: 33406 Destination Port: 33435 (TTL=1)
2 192.168.1.1 --> 192.168.1.2 ICMP Time-to-live exceeded
3 192.168.1.2 --> 192.168.0.1 UDP Source Port: 33406 Destination Port: 33436 (TTL=2)
4 192.168.0.1 --> 192.168.1.2 ICMP Time-to-live exceeded
5 192.168.0.1 --> 192.168.1.2 ICMP Destination unreachable
6 192.168.1.2 --> 192.168.0.1 UDP Source Port: 33406 Destination Port: 33437 (TTL=3)
7 192.168.0.1 --> 192.168.1.2 ICMP Destination unreachable

13

mostrado abaixo o primeiro pacote enviado pelo host A e descartado pelo roteador B.
Internet Protocol, Src Addr: 192.168.1.2 (192.168.1.2), Dst Addr: 192.168.0.1 (192.168.0.1)

Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
Total Length: 38
Identification: 0x827f (33407)
Flags: 0x00
Fragment offset: 0
Time to live: 1
Protocol: UDP (0x11)
Header checksum: 0xb4f4 (correct)
Source: 192.168.1.2 (192.168.1.2)
Destination: 192.168.0.1 (192.168.0.1)

User Datagram Protocol, Src Port: 33406 (33406), Dst Port: 33435 (33435)

Source port: 33406 (33406)


Destination port: 33435 (33435)
Length: 18
Checksum: 0xa29f (correct)
Data (10 bytes)

Note o TTL 1 e a porta de destino. A esse pacote o roteador B responde:


O mecanismo de controle que emite mensagens quando acontece algum erro a funo principal
do protocolo ICMP.
O ICMP permite aos gateways enviar mensagens de erros ou de controle a outros gateways ou
hosts. ICMP prov comunicao entre os software de IP numa mquina e o software de IP numa
outra mquina.
ICMP somente reporta condies de erros fonte original. A fonte deve relatar os erros aos
programas de aplicao individuais e tomar ao para corrigir o problema. Uma das mensagens

14

que o ICMP pode enviar : Destination Unreachable, o qual, por sua vez pode ser dos seguintes
tipos:

Network Unreachable (rede no alcanvel)


Host Unreachable (host no alcanvel)
Port Unreachable (port no alcanvel)
Destination Host Unknown (Host destino desconhecido)
Destination Network Unknown (rede destino desconhecida)

Protocolo de mensagens de controle da Internet (ICMP) um utilitrio de diagnstico e de


relatrio de erros e considerada uma parte necessria de qualquer implementao de IP. Noes
bsicas sobre ICMP e saber o que pode gerar um tipo especfico de ICMP so til no diagnstico
de problemas de rede.
ICMPs so usados por roteadores, dispositivos intermedirios ou hosts para comunicar
atualizaes ou informaes de erro para outros roteadores, dispositivos intermedirios ou hosts.
Cada mensagem ICMP contm trs campos que definem a sua finalidade e fornecem uma soma
de verificao. Eles so campos tipo e cdigo da soma de verificao. O campo Tipo identifica a
mensagem ICMP, o campo de cdigo fornece mais informaes sobre o campo de tipo associado
e a soma de verificao oferece um mtodo para determinar a integridade da mensagem.
Os tipos definidos so:
TYPE Description
---- ----------0

Echo Reply

Destination Unreachable

Source Quench

Redirect Message

Echo Request

11

Time Exceeded

12

Parameter Problem

13

Timestamp Request

14

Timestamp Reply

15

Information Request (No Longer Used)


15

16

Information Reply (No Longer Used)

17

Address Mask Request

18

Address Mask Reply

Solicitao de eco e de resposta de eco


Este o mais usado para testar a conectividade IP conhecida como PING de ICMP. O ICMP de
solicitao de eco ter um campo de tipo de 8 e um campo de cdigo de 0. Respostas de eco tem
um campo de tipo de 0 e um campo de cdigo de 0.
Destino inalcanvel
Quando um pacote entregue, ser gerado um ICMP Destino inacessvel, tipo 3. Tipo 3 ICMPs
podem ter um valor de cdigo de 0 a 15:
Type 3
Code
Value Description
----- ----------0

Network Unreachable

Host Unreachable

Protocol Unreachable

Port Unreachable

Fragmentation needed and DF (Don't Fragment) set

Source route failed

Destination Network unknown

Destination Host unknown

Source Host isolated

Communication with Destination Network Administratively Prohibited

10

Communication with Destination Host Administratively Prohibited

11

Network Unreachable for Type Of Service

12

Host Unreachable for Type Of Service

16

13

Communication Administratively Prohibited by Filtering

14

Host Precedence Violation

15

Precedence Cutoff in Effect

Retardamento de origem
Uma mensagem de excluso de origem ICMP tem um campo de tipo de cdigo 0 e 4. Mensagens
de retardamento de origem so enviadas quando o destino capaz de processar trfego to rpido
quanto a fonte est enviando a ele. O ICMP de retardamento de origem informa a fonte para
reduzir a taxa em que ele est enviando dados. O destino vai continuar a gerar ICMPs de
retardamento de origem at que a fonte est enviando a uma velocidade aceitvel.

Redirecionar mensagem
Um dispositivo intermedirio ir gerar uma mensagem de redirecionamento ICMP quando ele
determina que uma rota est sendo solicitada pode ser acessada localmente ou atravs de um
caminho melhor. Redirecionar mensagem ICMPs so tipo 5 e so definidos posteriormente pelos
seguintes valores de campo de cdigo:
Type 5
Code
Value Description
----- ----------0

Redirect datagrams for the Network

Redirect datagrams for the Host

Redirect datagrams for the Type of Service and Network

Redirect datagrams for the Type of Service and Host

Tempo excedido

17

Se um roteador ou host descartar um pacote devido a um tempo limite, ele ir gerar um tempo
excedido tipo 11 ICMP. O ICMP de tempo excedido ter um valor de cdigo de 0 ou 1. Um
cdigo gerado quando a contagem de saltos de um datagrama excedida e o pacote ser
descartado. 1 Cdigo gerado quando o reassemble de um pacote fragmentado excede o valor de
tempo limite.
Problema de parmetro
Quando um host ou dispositivo intermedirio descarta um datagrama devido incapacidade de
processo, gerado um 12 ICMP. Causas comuns de ICMP so informaes de cabealho
danificado ou falta de opes. Se o motivo do ICMP uma opo ausente necessria, o ICMP
ter um cdigo de valor 1. Se o valor do cdigo for 0, o campo de ponteiro ir conter o octeto de
cabealho do datagrama descartado em que o erro foi detectado.

Resposta de carimbo de hora & solicitao de carimbo de hora


Solicitao de carimbo de hora e de resposta de carimbo de hora um mtodo rudimentar para
sincronizar a hora mantida em dispositivos diferentes. A solicitao tem um campo de tipo de 13
e a resposta 14 de tipo. Esse mtodo de sincronizao de hora crua e no confiveis. Portanto,
ele no muito usado.

Solicitao de mscara de endereo & resposta de mscara de endereo


Um computador de inicializao para determinar a mscara de sub-rede em uso na rede local usa
endereo mscara ICMP tipo 17 solicitar. Um dispositivo intermedirio ou um computador
atuando como um dispositivo intermedirio responder com um tipo de 18 ICMP endereo
mscara resposta ICMP.

18

Conclusao

19

Referncia
SOARES, Luiz F.; LEMOS, Guido e COLCHER, Srgio. Redes de Computadores: Das LANs,
MANs e WANs s Redes ATM, Ed. Campus.ROSS, Keith e KUROSE, JAMES. Redes de
Computadores e a Internet: Uma nova abordagem, Ed. Addison Wesley.
TORRES, Gabriel. Redes de Computadores, Ed. Nova Terra.
TENENBAUM, Andrew. S.. Redes de computadores, Ed. Campus. 4 Edio.

20

anexos

21

22