ICMP
El Protocolo de Mensajes de Control de Internet (ICMP por sus siglas en inglés) es un componente fundamental de la suite de protocolos de Internet. ICMP opera en la capa de red del modelo OSI y se utiliza para el diagnóstico, control y gestión de redes IP. A través de sus diversos tipos de mensajes y códigos, ICMP proporciona información sobre el estado y la eficiencia de la comunicación en la red.
Paquetes ICMP
Los mensajes ICMP son encapsulados en paquetes IP, lo que permite que los dispositivos de red intercambien información esencial para el funcionamiento y diagnóstico de la red. Cada mensaje ICMP contiene un campo de tipo y un campo de código que indican el propósito y la subclasificación del mensaje.
El "ping" es una utilidad de red utilizada para verificar la conectividad entre dos dispositivos en una red, generalmente una computadora cliente y un servidor. Su nombre proviene de la similitud con los sonidos que hacen los sonares en los submarinos para detectar objetos en su entorno. El ping envía pequeños paquetes de datos desde un dispositivo a otro y mide el tiempo que lleva que estos paquetes viajen de ida y vuelta. Esta medición se conoce como "tiempo de ida y vuelta" o "round-trip time" (RTT).
El ping se utiliza principalmente para diagnosticar problemas de conectividad en una red. Si los tiempos de ida y vuelta son consistentemente altos o si hay una alta tasa de paquetes perdidos, podría indicar problemas de congestión de red, latencia, problemas de enrutamiento o dispositivos inaccesibles.
Es importante tener en cuenta que no todos los dispositivos en una red pueden estar configurados para responder a los pings, por lo que un ping fallido no siempre indica un problema. Además, algunas redes pueden bloquear o limitar los paquetes ICMP por razones de seguridad.
Aquí te explico cómo funciona el proceso de ping:
- El Host A envía un paquete ICMP de solicitud de eco (ping) al Host B.
- El Host B recibe el paquete y responde con un paquete ICMP de respuesta de eco.
- El Host A recibe la respuesta y calcula el tiempo transcurrido entre el envío y la recepción.

Encabezado ICMP y Códigos
El encabezado ICMP consta de varias partes esenciales que permiten a los dispositivos de red comunicarse y diagnosticar problemas en la red. Además del campo "Type" (Tipo), también está el campo "Code" (Código), que proporciona información adicional sobre la naturaleza específica del mensaje ICMP.
- 🔻
Tipo 0 (Echo Reply): Utilizado para responder a los mensajes de solicitud de eco (ping). - 🔻
Tipo 3 (Destino inalcanzable): Indica que la máquina de destino no es accesible o que un puerto específico en el destino no está disponible. - 🔻
Tipo 8 (Solicitud de eco - Ping): Se utiliza para verificar la conectividad entre dos dispositivos enviando un paquete de solicitud de eco y esperando una respuesta. - 🔻
Tipo 11 (Tiempo excedido): Indica que el paquete IP no pudo ser entregado dentro del tiempo esperado. - 🔻
Tipo 13 (Timestamp Request): Solicita que el host destino responda con su hora actual. - 🔻
Tipo 14 (Timestamp Reply): Respuesta a una solicitud de marca de tiempo.

El campo "Code" dentro del encabezado ICMP trabaja en conjunto con el campo "Type" para proporcionar detalles adicionales sobre el propósito del mensaje. Por ejemplo, para un mensaje ICMP de "Destino inalcanzable" (Type 3), el campo "Code" indica la razón exacta por la cual el destino es inalcanzable, como "Red inalcanzable", "Host inalcanzable", "Protocolo inalcanzable", etc.
Algunos tipos y códigos ICMP comunes incluyen:
- Código 0: Red inalcanzable.
- Código 1: Host inalcanzable.
- Código 2: Protocolo inalcanzable.
- Código 3: Puerto inalcanzable.
- Código 4: Fragmentación requerida y conjunto "No Fragmentar" (DF, Don't Fragment) establecido.
- Código 5: Fuente de ruta fallida.
- Código 6: Red de destino desconocida.
- Código 7: Host de destino desconocido.
- Código 9: Comunicación con el host de destino administrativamente prohibida.
- Código 10: Comunicación con la red de destino administrativamente prohibida.
- Código 11: Red de destino inalcanzable debido a la falta de rutas disponibles.
- Código 0: Código de respuesta por defecto para una solicitud de eco.
- Código 0: Tiempo excedido en el tránsito.
- Código 1: Tiempo excedido en el reensamblaje.
- Código 0: Punto de inicio de fragmentación no válido.
- Código 1: Punto final de fragmentación no válido.
- Código 2: Campo de encabezado "Desplazamiento" de fragmento no válido.
- Código 0: Solicitud de marca de tiempo.
- Código 1: Respuesta de marca de tiempo.
- Código 0: Marca de tiempo.
- Código 0: Solicitud de información de dirección.
- Código 1: Respuesta de información de dirección.
- Código 0: Información de dirección.
- Código 0: Solicitud de máscara de subred.
- Código 1: Respuesta de máscara de subred.
- Código 0: Máscara de subred.
Datos Adicionales y Suma de Comprobación (Checksum)
Aparte de los campos "Type" y "Code", el encabezado ICMP también contiene otros campos importantes:
- ∘
Checksum (Suma de comprobación): Se utiliza para verificar la integridad del paquete ICMP. La suma de comprobación se calcula sobre todo el encabezado ICMP y los datos, y el valor resultante se coloca en este campo. Si el valor de la suma de comprobación no coincide con el valor calculado, el paquete podría estar dañado o haber sido modificado en tránsito. - ∘
Resto del encabezado y datos: Dependiendo del tipo y el código del mensaje ICMP, puede haber información adicional en el encabezado, como números de secuencia y de identificación para los mensajes de solicitud y respuesta de eco.
Ejemplo de Encabezado ICMP
Supongamos que tenemos un mensaje ICMP de "Destino inalcanzable" con el código "Red inalcanzable". El encabezado ICMP para este mensaje se vería así:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 3 | 0 | Suma de comprobación | Datos |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
El valor en el campo "Tipo" es 3 para indicar "Destino inalcanzable", y el valor en el campo "Code" es 0 para indicar "Red inalcanzable". El campo de suma de comprobación contendría el valor calculado para garantizar la integridad del paquete, y los datos adicionales podrían incluir información adicional sobre la red inalcanzable.
Ataques Relacionados a ICMP
☠️
☠️
- El atacante envía una gran cantidad de paquetes ICMP de solicitud de eco a una red que permite la difusión, utilizando la dirección IP de la víctima como dirección de origen.
- Todos los sistemas en la red responden al ping, generando una gran cantidad de tráfico hacia la dirección IP de la víctima.
- La víctima se ve abrumada por la cantidad de respuestas y sufre una denegación de servicio.
☠️
- Un atacante controla una botnet (red de dispositivos comprometidos).
- La botnet envía una gran cantidad de paquetes ICMP a un objetivo específico.
- El objetivo recibe un tráfico ICMP abrumador, lo que consume sus recursos y lo hace inaccesible para los usuarios legítimos.
