Internet Control Message Protocol (ICMP)) uma rede de protocolo que é responsável por comunicar erros através dos meios de geração e envio de mensagens para o endereço IP de origem quando existem problemas de rede encontrados pelo sistema.[1] As mensagens que o ICMP gera indicam que um determinado gateway, roteador, serviço ou mesmo host que deveria se conectar à internet não pode ser alcançado. Basicamente, o destinatário não pode receber pacotes durante a transmissão. Qualquer dispositivo de rede IP pode enviar, gerar, receber e processar mensagens de erro ICMP.
Por outras palavras, pode imaginar o ICMP como uma equipa que produz peças mecânicas para veículos. A melhor forma de montar um veículo seria fabricar primeiro cada peça individual antes de enviar cada uma destas peças para a linha de montagem, que as montaria num produto mais complexo. No entanto, como todos sabemos, haverá alturas em que a equipa de produção não poderá enviar algumas das peças num prazo determinado. Se alguma vez houver peças em falta, a linha de montagem terá que notificar a equipe de produção, portanto, o ICMP funciona da mesma forma. Essencialmente, o ICMP desempenha o papel de mensageiro que transmite dados e informações do destinatário para o remetente.
Este protocolo é bastante complexo. Ele tem várias outras funções além de apenas relatar erros em transmissões de pacotes e hosts que não podem ser alcançados. Também retransmite eco, bem como resposta de eco, mensagens. Isto é utilizado através de um comando PING bem conhecido que permite à maioria dos utilizadores transmitir um eco a um anfitrião receptor. Isto envia uma resposta de eco sempre que é recebido um eco.
Como tal, as mensagens ICMP fornecem uma maneira para que a rede e o sistema notifiquem o endereço IP de origem, que é o fim do relaying, se o host remoto, que é o fim receptor, não estiver recebendo nenhum pacote que tenha sido transmitido.[2]
Um roteador é usado para transmitir a popular mensagem "Destination Unreachable" de volta para o host de origem.[3] Isto então o enviaria para o dispositivo ou programa que primeiro transmitiu os pacotes de dados. Estas mensagens de erro deixariam então o programa saber que havia um problema com a conectividade da rede. Uma vez que o programa fonte tenha recebido a informação de que alguns desses pacotes de dados não chegaram ao destinatário, ele então retransmitiria essa informação para o destinatário.
Como uma função principal, o ICMP não é necessariamente usado regularmente por indivíduos em aplicações de usuário final, mas é usado por numerosos administradores de rede para solucionar quaisquer erros presentes em conexões de internet através de um diagnóstico de utilidade como:[4]
O protocolo principal que o ICMP usa é usado por dispositivos intermediários, roteadores e até mesmo hosts para se comunicar caso ocorra um erro e fazer atualizações nos roteadores, dispositivos intermediários e hosts necessários. Neste caso, o IPv4 mais utilizado universalmente (Protocolo Internet versão 4) e o muito mais recente IPv6 usam versões similares do protocolo ICMP, que são chamados de ICMPv4 e ICMP6, respectivamente.[5]
Em termos de como o ICMP se relaciona a diferentes cabeçalhos de pacotes, o cabeçalho ICMP aparece após o cabeçalho de pacote IPv4 ou IPv6, enquanto é reconhecido por um número de protocolo. Este protocolo complexo contém três componentes principais diferentes:[6]
A mensagem mais popular e conhecida de um datagrama ICMP é a mensagem "Destination Unreachable".[1:1] Existem várias razões pelas quais esta mensagem é gerada, o que inclui problemas como não ser capaz de alcançar uma rede, uma máquina, uma porta ou mesmo um protocolo defeituoso.
A maioria dos usuários deve estar ciente e também deve levar em conta que, embora a mensagem "Destino inalcançável" seja a mensagem mais comum recebida, ela não é a única mensagem que o ICMP pode transmitir. Há outras mensagens de erro que incluem:[2:1]
Outras mensagens incluem Parameter Problem, Address Mask Request and Reply, Timestamp.
Apesar de todas essas funções que o ICMP deve executar, ele tem algumas restrições funcionais. O ICMP não ajuda o host ou IP de origem a se tornar mais confiável e não recebe ou envia quaisquer dados que possam ser usados para a transmissão.[5:1] O ICMP simplesmente existe como uma forma de identificar problemas em pacotes perdidos e qualquer roteamento quebrado.
Um ICMP também não enviará mensagens sobre mensagens ICMP.[2:2] Se isso acontecesse, isso causaria um loop de feedback que seria prejudicial para o sistema, pois criaria uma mensagem ICMP de volta para o outro lado. Isto iria então replicar-se rapidamente ao ponto de inundar a rede, tornando-a ineficaz.