¿Qué es ICMP? Cómo lo usan ping y traceroute

ICMP (Internet Control Message Protocol) es un protocolo de capa de red usado para diagnóstico y reporte de errores. Aprende cómo ping, traceroute, y la resolución de problemas de red dependen de ICMP.

ICMP (Internet Control Message Protocol) es un protocolo de capa de red usado por routers y dispositivos para enviar mensajes de error e información operativa sobre la entrega de paquetes IP. Es la base de dos de las herramientas de diagnóstico de red más comunes: ping y traceroute.

Resumen rápido — ICMP no es un protocolo de transporte. No porta datos de aplicación. En cambio, reporta problemas con la entrega de paquetes IP: hosts inalcanzables, valores de TTL excedidos, y fallos de fragmentación. Ping usa ICMP Echo Request y Echo Reply para probar si un host es alcanzable y medir el tiempo de ida y vuelta. Traceroute usa mensajes ICMP TTL Exceeded para mapear la ruta que toman los paquetes a través de una red. ICMP opera en la Capa 3 del modelo OSI, junto con IP.

Última actualización: 2026-08-08


Qué hace ICMP

Cuando un paquete IP no logra llegar a su destino —porque un router no puede reenviarlo, un host es inalcanzable, o el TTL expira— ICMP envía un mensaje de error de vuelta a la IP de origen. Estos mensajes ayudan a los dispositivos de red y administradores a entender qué salió mal.

ICMP no corrige problemas. Solo los reporta.

ICMP está definido en RFC 792 (IPv4) y RFC 4443 (ICMPv6 para IPv6). Toda implementación IP está obligada a incluir soporte de ICMP.


Tipos de mensaje ICMP

Cada mensaje ICMP tiene un campo Type y un campo Code que juntos especifican el significado exacto.

TipoNombreUso común
0Echo ReplyRespuesta a un ping
3Destination UnreachableHost, puerto, o red no alcanzable
5RedirectEl router le indica al host una mejor ruta
8Echo RequestRequest saliente de ping
11Time ExceededTTL expiró en tránsito (usado por traceroute)
12Parameter ProblemCampo de header IP incorrecto

Códigos de Destination Unreachable

El Tipo 3 (Destination Unreachable) usa códigos para especificar por qué:

CódigoSignificado
0Red inalcanzable
1Host inalcanzable
2Protocolo inalcanzable
3Puerto inalcanzable
4Se necesita fragmentación pero el bit DF está activado
13Comunicación prohibida administrativamente (bloqueo de firewall)

El Código 3 (Puerto inalcanzable) es lo que recibes cuando te conectas a un puerto UDP sin ningún listener. El Código 13 lo devuelven los firewalls que están configurados para enviar rechazos ICMP en lugar de descartar paquetes silenciosamente.


Cómo usa ping ICMP

Ping envía un ICMP Echo Request (Tipo 8) a una dirección IP de destino y espera un ICMP Echo Reply (Tipo 0).

$ ping 8.8.8.8
PING 8.8.8.8: 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=118 time=11.4 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=10.9 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=118 time=11.2 ms

Qué significa cada campo:

  • icmp_seq — número de secuencia, confirma que los paquetes llegan en orden
  • ttl — Time to Live restante cuando llegó la respuesta (comienza alto, se decrementa en cada salto)
  • time — tiempo de ida y vuelta en milisegundos

Si ping no devuelve ninguna respuesta, el host está caído, inalcanzable, o tiene ICMP bloqueado por un firewall. Un valor de time alto indica latencia. Tiempos inconsistentes indican jitter o reordenamiento de paquetes.


Cómo usa traceroute ICMP

Traceroute mapea la ruta que toma un paquete desde el origen hasta el destino explotando el campo TTL (Time to Live) en los paquetes IP.

Cómo funciona TTL: Cada paquete IP comienza con un valor TTL (comúnmente 64 o 128). Cada router que reenvía el paquete decrementa el TTL en 1. Cuando el TTL llega a 0, el router descarta el paquete y envía un mensaje ICMP Time Exceeded (Tipo 11) de vuelta al origen.

Algoritmo de traceroute:

  1. Envía un paquete con TTL=1 → el primer router lo decrementa a 0 y envía ICMP Time Exceeded. El origen registra la IP del router y el tiempo de ida y vuelta.
  2. Envía un paquete con TTL=2 → el segundo router envía ICMP Time Exceeded.
  3. Repite, incrementando el TTL en 1 cada vez, hasta que se alcanza el destino (que envía ICMP Echo Reply) o se alcanza el conteo máximo de saltos.
$ traceroute azion.com
traceroute to azion.com (200.150.250.123), 30 hops max
1 192.168.1.1 1.2 ms 1.1 ms 1.0 ms (router doméstico)
2 10.0.0.1 8.4 ms 8.6 ms 8.5 ms (gateway del ISP)
3 72.14.215.165 11.2 ms 11.0 ms 11.3 ms (tránsito)
4 * * * (ICMP filtrado)
5 200.150.250.123 18.7 ms 18.9 ms 18.6 ms (destino)

* * * significa que un router no respondió, ya sea porque filtró ICMP o porque no envía mensajes Time Exceeded. No necesariamente significa un problema.


ICMP y TTL

TTL sirve dos propósitos:

  1. Prevención de loops — si existe un loop de enrutamiento, los paquetes circularían indefinidamente. TTL asegura que eventualmente se descarten.
  2. Traceroute — la expiración controlada en cada salto es cómo traceroute identifica cada router a lo largo de una ruta.

El valor TTL en una respuesta de ping indica cuántos saltos sobrevivió la respuesta. Una respuesta con TTL=118 de un TTL inicial de 128 significa que el paquete atravesó 10 saltos.


ICMP y seguridad

Ataques ICMP flood

Un ICMP flood (ping flood) es un ataque DDoS que envía grandes volúmenes de ICMP Echo Requests para abrumar a un objetivo. Cada request requiere procesamiento y una respuesta, consumiendo CPU y ancho de banda.

El ataque Smurf fue una variante de amplificación clásica: el atacante envía ICMP Echo Requests con una IP de origen falsificada (la IP de la víctima) a la dirección de broadcast de una red. Cada host de la red responde a la víctima simultáneamente.

Las redes modernas deshabilitan el broadcast dirigido y limitan la tasa de ICMP para mitigar estos ataques.

¿Deberías bloquear ICMP?

Bloquear todo el ICMP es una mala configuración común. Rompe:

  • Path MTU Discovery (ICMP Tipo 3, Código 4 — requerido para que TCP funcione correctamente a través de redes con distintos MTU)
  • Diagnósticos de traceroute
  • Reporte de errores legítimo

El enfoque correcto es limitar la tasa de ICMP en lugar de bloquearlo por completo, y permitir tipos de mensaje específicos (Tipo 3 y Tipo 11) que son esenciales para el funcionamiento de la red.


ICMPv6

ICMPv6 (definido en RFC 4443) es el protocolo equivalente para redes IPv6. Maneja las mismas funciones de reporte de errores que ICMP pero también asume roles que en IPv4 manejan protocolos separados.

FunciónIPv4IPv6
Reporte de erroresICMPICMPv6
Resolución de direccionesARP (protocolo separado)ICMPv6 Neighbor Discovery
Descubrimiento de routerDHCP / manualICMPv6 Router Advertisement
Gestión de multicastIGMP (protocolo separado)ICMPv6 MLD

ICMPv6 es obligatorio en IPv6. Bloquear ICMPv6 rompe la operación básica de la red IPv6.


Preguntas frecuentes

¿Qué es ICMP? ICMP (Internet Control Message Protocol) es un protocolo de capa de red que los dispositivos y routers usan para enviar mensajes de error y diagnósticos sobre la entrega de paquetes IP. Reporta problemas como hosts inalcanzables, TTL expirado, y fallos de fragmentación. ICMP no porta datos de aplicación; solo porta información de control y error.

¿Cuál es la diferencia entre ICMP y TCP/UDP? TCP y UDP son protocolos de transporte que portan datos de aplicación entre endpoints. ICMP es un protocolo de capa de red que reporta errores y brinda funciones de diagnóstico. ICMP no tiene números de puerto, ni establecimiento de conexión, ni payload de datos; solo tipo de mensaje, código, e información de header del paquete que falló.

¿Cómo usa ping a ICMP? Ping envía un ICMP Echo Request (Tipo 8) a una dirección IP de destino y espera un ICMP Echo Reply (Tipo 0). El tiempo de ida y vuelta entre enviar el request y recibir la respuesta es la latencia del ping. Si no llega ninguna respuesta, el destino es inalcanzable, está fuera de línea, o tiene ICMP filtrado.

¿Qué significa TTL en la salida de ping? TTL (Time to Live) es un campo en cada paquete IP que se decrementa en 1 en cada salto de router. Cuando el TTL llega a 0, el router descarta el paquete y envía un mensaje ICMP Time Exceeded. El TTL mostrado en la salida de ping es el TTL restante cuando llegó la respuesta; restarlo del valor de TTL inicial revela el número de saltos.

¿Qué es un ataque ICMP flood? Un ICMP flood envía grandes volúmenes de ICMP Echo Requests a un objetivo para agotar su ancho de banda o CPU. El objetivo gasta recursos generando Echo Replies para cada request. Limitar la tasa de ICMP en los edges de red y firewalls mitiga este ataque.

¿Los firewalls deberían bloquear todo el ICMP? No. Bloquear todo el ICMP rompe Path MTU Discovery, que se requiere para que las conexiones TCP funcionen correctamente a través de redes con distintos tamaños de MTU. También previene traceroute y el reporte de errores legítimo. La práctica correcta es limitar la tasa de ICMP y permitir los tipos esenciales (Tipo 3 Destination Unreachable y Tipo 11 Time Exceeded) mientras se bloquean o limitan los Echo Requests si es necesario.

¿Qué es ICMPv6? ICMPv6 es el equivalente de ICMP para redes IPv6. Además del reporte de errores, ICMPv6 maneja funciones que IPv4 asigna a protocolos separados: equivalente de ARP (Neighbor Discovery), descubrimiento de router (Router Advertisement), y gestión de multicast (MLD). ICMPv6 es obligatorio en IPv6; bloquearlo rompe la operación básica de la red.

¿Qué es el ataque Smurf y cómo se relaciona con ICMP? El ataque Smurf es una técnica de amplificación que falsifica la IP de una víctima y envía Echo Requests a la dirección de broadcast de una subred, causando que todos los hosts de esa subred respondan simultáneamente a la víctima. Es una variante histórica del ICMP flood que las redes modernas mitigan deshabilitando el reenvío de broadcast dirigido.

¿Por qué traceroute a veces muestra * * * en lugar de una IP? Ese patrón significa que un router en la ruta no respondió con un mensaje ICMP Time Exceeded, ya sea porque tiene ICMP filtrado por política de seguridad o porque su implementación no genera esos mensajes. No es necesariamente un problema de conectividad; el tráfico real de la aplicación puede seguir fluyendo normalmente a través de ese salto.

¿Qué diferencia hay entre un ping fallido por host inalcanzable y por ICMP bloqueado? Cuando el host está genuinamente inalcanzable, normalmente se recibe un mensaje ICMP Destination Unreachable de un router intermedio. Cuando ICMP está bloqueado por un firewall, el ping simplemente no recibe ninguna respuesta en absoluto (timeout), sin ningún mensaje de error, lo que puede confundirse con un host caído aunque el servicio subyacente esté funcionando normalmente.


mantente actualizado

Suscríbete a nuestro boletín informativo

Recibe las últimas actualizaciones de productos, destacados de eventos y conocimientos de la industria tecnológica directamente en tu bandeja de entrada.