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. Des messages ICMP sont envoyés dans diverses situations : par exemple, lorsqu'un datagramme ne peut pas atteindre sa destination, lorsque la passerelle ne possède pas la capacité de tampon suffisante pour transférer 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.