Conteúdo
O ICMP é um protocolo para determinar a disponibilidade da rede e gerenciar o tráfego e o controle de erros na camada de rede. Mas o que isso significa na prática?
O ICMP, Internet Control Message Protocol (em português, Protocolo de Mensagens de Controle da Internet), é o protocolo de terceira camada (camada de rede) no modelo de sete camadas OSI. Este protocolo diagnostica problemas de conectividade de rede ou transferência de dados entre dispositivos. Ele auxilia enviando, recebendo e processando mensagens ICMP para relatar problemas de conectividade aos dispositivos de rede de origem.
Portanto, o principal objetivo do protocolo ICMP é relatar erros na camada de rede. No entanto, atores mal-intencionados podem manipular seus recursos para lançar ataques como ataques distribuídos de negação de serviço (DDoS) e Ping of Death. Aqui, você aprenderá sobre o protocolo ICMP, seus casos de uso e parâmetros importantes para entender as mensagens ICMP.
Como funciona o ICMP?
Os roteadores usam o protocolo ICMP para realizar o gerenciamento de rede e o diagnóstico de problemas. Quando a rede proíbe a entrega de um pacote ao dispositivo de destino, ela gera uma mensagem de erro e a envia ao dispositivo de envio. Essas mensagens de erro incluem tempos limite, problemas de parâmetro, destinos inacessíveis, congestionamento de rede, etc.
Por exemplo, quando um remetente envia dados de um dispositivo para um dispositivo de destino na forma de um datagrama IP, ele passa por vários roteadores ou dispositivos intermediários. Ocasionalmente, podem ocorrer erros ao encaminhar este datagrama IPV4. Portanto, as mensagens ICMP são divididas em duas categorias: mensagens de erro e mensagens de consulta.
Mensagem de relatório de erro
Estas são as mensagens que roteadores ou hosts intermediários podem encontrar ao processar datagramas:
- Time Exceeded: Os pacotes ICMP possuem um parâmetro time to live, quando chega a 0, o roteador ou host descarta o datagrama e envia uma mensagem de erro de timeout. Esta mensagem também é enviada quando o destino não recebeu todos os fragmentos de dados.
- Destino inacessível: quando um roteador ou host intermediário não pode entregar, o dispositivo que iniciou a conexão recebe uma mensagem de erro informando que o destino está inacessível. Portanto, o dispositivo descarta o datagrama.
- Source Quench: Quando os dispositivos são incapazes de entregar datagramas devido ao congestionamento da rede, eles enviam uma “source quench message” ICMP para o remetente da mensagem. As mensagens de relatório de erros adicionam controle de fluxo na camada de rede, informando ao dispositivo de origem sobre o congestionamento do caminho e retardando o processo de envio de dados.
- Redirecionamento: Um roteador em um caminho não ideal redireciona um pacote para um roteador com um caminho ideal entre a origem e o destino. Então, ele atualiza a fonte sobre suas mudanças de rota.
- Problema de parâmetro: O dispositivo de origem recebe esta mensagem quando certos valores estão faltando no cabeçalho de dados. Por exemplo, uma diferença de soma de verificação calculada no destino de origem gera essa mensagem de erro ICMP.
Mensagem de consulta
As mensagens de consulta vêm em pares e fornecem informações intermediárias específicas do dispositivo para o dispositivo de origem.
- Mensagens de solicitação de eco e resposta de eco: essas mensagens são úteis para solucionar problemas de diagnóstico de rede.
- Solicitação e resposta de carimbo de data/hora: essas mensagens de solicitação e resposta de carimbo de data/hora ajudam a determinar o tempo de ida e volta entre os dispositivos.
Entendendo os parâmetros ICMP
Os dados da mensagem ICMP são encapsulados sob o cabeçalho IP, o que significa que o cabeçalho do datagrama ICMP vem após as informações IPv4/v6. A primeira parte do cabeçalho do pacote ICMP contém parâmetros que ajudam os dispositivos de rede a determinar mensagens de erro ou de consulta.
Dos primeiros 32 bits, os primeiros 8 bits determinam o tipo de mensagem, os próximos 8 bits determinam o código da mensagem e os bits restantes contêm informações sobre a integridade dos dados. Portanto, os três campos de informação são: ICMP Type, ICMP Code e Checksum.
Tipo ICMP
O tipo determina a finalidade do pacote ICMP. Porque explica brevemente por que o dispositivo de origem recebeu essa mensagem. Existem de 0 a 255 tipos de mensagens ICMP, portanto, cada tipo fornece informações diferentes. Alguns tipos importantes de ICMP são:
- 0: Solicitação de eco
- 3: Destino inacessível
- 4: Extinção de Fonte
- 5: Redirecionar
- 8: Resposta de eco
- 11: Tempo Excedido
- 12: Problema de parâmetro
- 30: Traceroute
Código ICMP
Os códigos ICMP fornecem informações adicionais sobre a mensagem. Por exemplo, ICMP tipo 3 com códigos 0-15 especifica por que o destino não pode ser alcançado, ou seja, se o código for 0, é porque a rede não está disponível. Da mesma forma, para o código 1 do tipo 3, a mensagem especifica que o host não está acessível.
Além disso, Tipo 8 Código 0 e Tipo 0 Código 0 representam mensagens de solicitação de eco e resposta de eco. Portanto, cada tipo de mensagem com o mesmo valor de código fornece informações de rede diferentes.
Soma de verificação
A soma de verificação é um mecanismo de detecção de erros para determinar a integridade dos dados. O valor da soma de verificação representa os bits na mensagem de broadcast. O remetente calcula e inclui a soma de verificação de dados e o destinatário recalcula o valor e o compara com o valor original para determinar quaisquer alterações na mensagem original durante a transmissão.
A segunda parte do cabeçalho aponta para o valor do byte que causou o problema na mensagem original. Finalmente, a última parte do pacote ICMP é o datagrama real.
Caso de uso ICMP
Aqui estão alguns exemplos de trabalho do protocolo ICMP em vários utilitários administrativos e de gerenciamento de rede.
Ping
Ping é um utilitário de linha de comando que se baseia em mensagens de solicitação de eco e resposta de eco ICMP para testar a disponibilidade e a latência da rede entre os dispositivos. O utilitário simplesmente determina a disponibilidade do servidor de destino estimando o total de pacotes enviados ou recebidos e a porcentagem de perda de pacotes. Também ajuda a determinar o tamanho total da unidade máxima de transmissão (MTU).
Use ping <ip_address> para determinar a disponibilidade de google.com: google.com disponibilidade:
![](https://programadoresdepre.com.br/wp-content/uploads/2022/04/Ping-Command-Example.jpg)
Traceroute
Traceroute é outro utilitário de linha de comando que usa mensagens echo-request e echo-reply com uma variável TTL para mapear o caminho entre os dispositivos de origem e destino. Também é útil para determinar os atrasos de resposta e garante a precisão consultando cada salto várias vezes.
![](https://programadoresdepre.com.br/wp-content/uploads/2022/04/Traceroute-Example.jpg)
Como o ICMP funciona se não houver portas?
Pela explicação acima, o ICMP é um protocolo sem conexão, ele envia dados independentemente na forma de datagramas e seus cabeçalhos aparecem após os detalhes do IPv4. No entanto, você também pode notar que o número da porta está ausente, o que levanta a questão de como o dispositivo recebe dados ICMP ou entende as conexões?
A resposta é simples. O protocolo ICMP foi projetado para funcionar na camada de rede do modelo OSI, comunicando-se entre roteadores e hosts para compartilhar informações. Os números de porta fazem parte da camada de transporte e o ICMP não é um protocolo TCP nem UDP. Finalmente, a combinação de tipo e código ICMP ajuda o dispositivo a identificar a mensagem e obter todas as informações sobre a rede.
Controle de erro e fluxo usando ICMP
Os detalhes acima sobre o protocolo ICMP mostram como ele garante controle de fluxo e controle de erros de dados na camada 3 do modelo OSI. As mensagens e parâmetros de protocolo na primeira parte do cabeçalho do pacote ICMP cobrem todos os aspectos de gerenciamento de rede e diagnóstico de problemas.
É importante saber que a configuração inadequada do firewall pode permitir que invasores executem ping na rede da sua organização e a tornem vulnerável a ataques DDOS, pings de morte e inundações de ICMP. Você pode usar o Wireshark para capturar pacotes da Internet e analisar os pacotes ICMP em detalhes para melhor compreensão.
Leia também: Quanto o YouTube paga por visualização?