Tabla de contenidos
El Protocolo de Mensajes de Control de Internet (ICMP, Internet Control Message Protocol) es uno de los protocolos más importantes con los que interactuarán en su vida como ingenieros de redes. Fue definido originalmente en el RFC 792 para IPv4, y su versión para IPv6 denominada ICMPv6 está definida en el RFC 4443.
Para entender por qué existe ICMP, hay que partir de una característica fundamental de IP: IP no fue diseñado para ser un protocolo confiable. La capa de red no dispone de ningún mecanismo para recuperar errores en la transmisión de paquetes. Esa responsabilidad se delega a la capa de transporte, donde protocolos como TCP implementan sus propios mecanismos de confiabilidad (ACKs, retransmisiones, control de flujo).
Por lo tanto, ICMP fue creado para que los dispositivos de red puedan enviar mensajes a los dispositivos que iniciaron la comunicación, para reportar errores, y circunstancias inesperadas que ocurren en la red. Gracias a estos mensajes pueden comunicarle al origen que algo salió mal en la transmisión de sus paquetes. Para eso existe ICMP. No vuelve a IP en un protocolo confiable ni garantiza la entrega de paquetes; su único propósito es proporcionar retroalimentación sobre problemas en el procesamiento de paquetes IP.
Nota: ICMP no tiene número de puerto, a diferencia de TCP y UDP. Los mensajes ICMP no pertenecen a la capa de transporte: son una parte integral de IP y todo dispositivo que implemente IP está obligado a implementar ICMP. Por eso se clasifica como protocolo de capa 3.
Los mensajes ICMP se generan en diversas situaciones de error o diagnóstico dentro de la red. Las más comunes son:
ping y traceroute generan mensajes ICMP intencionalmente para verificar el estado y la conectividad de la red.Un punto crítico que deben recordar es el siguiente: los mensajes ICMP se envían al dispositivo que originó la comunicación. En la topología anterior, si un paquete atraviesa los tres routers y falla en el tercero (RT_3), es precisamente ese router el que notifica directamente al host de origen, omitiendo todos los routers intermedios. Esto lo mostramos gráficamente en la siguiente topología, asumamos que la PC_1 generó un mensaje que llegó hasta el router RT_3. Si, por algún motivo, es este router el que genera un mensaje ICMP (por ejemplo, un Destination Unreachable o un Time Exceeded), lo enviará directamente al origen del mensaje, es decir, a PC_1. No lo enviará al router RT_2 (el salto anterior), ni tampoco a PC_2, que era el destino final.
Los mensajes ICMP se transportan encapsulados dentro de un paquete IP, exactamente igual que si fueran datos de cualquier otro protocolo de capa superior. La estructura completa la pueden ver en la imagen siguiente: trama de capa 2 → header IP → mensaje ICMP.
Para que el dispositivo receptor sepa que el contenido del paquete es un mensaje ICMP y no TCP o UDP, los headers IP incluyen un campo identificador:
Protocol lleva el valor 1 para indicar ICMPv4.Next Header lleva el valor 58 para indicar ICMPv6.Aunque ICMP está encapsulado dentro de IP, esto no lo convierte en un protocolo de capa 4. ICMP es parte integral del protocolo IP y ninguna implementación de IP puede omitirlo. Por esa razón se considera un protocolo de capa 3.
ICMP es un protocolo de capa 3. Aunque sus mensajes se encapsulan dentro de paquetes IP (igual que haría TCP o UDP), forma parte integral del protocolo IP. El RFC 792 establece que todo dispositivo que implemente IP debe implementar ICMP. No tiene número de puerto y no pertenece a la capa de transporte.
Porque muchos firewalls y dispositivos de seguridad están configurados para bloquear el tráfico ICMP. Un host puede estar activo y respondiendo a tráfico TCP o UDP mientras ignora los Echo Request de ICMP. En entornos corporativos esto es frecuente. Por eso el ping es una primera herramienta de diagnóstico, pero nunca la única.
No. ICMP no convierte a IP en un protocolo confiable. Solo proporciona retroalimentación sobre errores: informa al origen que algo falló, pero no retransmite paquetes ni garantiza que los propios mensajes ICMP lleguen a destino. La confiabilidad sigue siendo responsabilidad de la capa de transporte, específicamente de protocolos como TCP.