Il arrive qu'une passerelle ou un hôte de destination utilise le protocole ICMP (Internet
Control Message Protocol) pour communiquer avec un hôte source afin d'indiquer une
erreur dans le traitement des datagrammes, par exemple. Le protocole ICMP utilise
le support de base du protocole IP comme s'il s'agissait d'un protocole de niveau
plus élevé ; cependant, le protocole ICMP fait en réalité partie intégrante du protocole
IP et est implémenté par chaque module IP. Les messages ICMP sont envoyés dans les
cas suivants : par exemple, lorsqu'un datagramme ne parvient pas à atteindre sa destination,
lorsque la passerelle ne possède pas la capacité de tampon de transfert d'un datagramme
et lorsque la passerelle peut diriger l'hôte afin d'acheminer le trafic via une route
plus courte. Le protocole IP n'est pas conçu pour être parfaitement fiable. Le but
de ces messages de contrôle est d'obtenir un retour d'informations concernant les
problèmes dans l'environnement de communication, et non de rendre le protocole IP
fiable.