¿ICMP usa números de puerto?

No —ICMP no usa números de puerto.

ICMP (Protocolo de Mensajes de Control de Internet) opera en la Capa 3 (Capa de Red) del modelo OSI, junto con IP. Está encapsulado directamente en paquetes IP (número de protocolo 1), no en segmentos TCP (protocolo 6) o UDP (protocolo 17) donde residen los puertos.

Cómo ICMP identifica comunicaciones

  • Campos Tipo y Código: En lugar de puertos, los mensajes ICMP usan un Tipo de 8 bits (por ejemplo, 0 = Respuesta de Eco, 8 = Solicitud de Eco, 3 = Destino Inalcanzable, 11 = Tiempo Excedido) y un Código de 8 bits para subtipos.
  • Identificador y Número de Secuencia: En Solicitud/Respuesta de Eco (ping), estos campos emparejan solicitudes con respuestas —funcionalmente similares a los puertos pero en la capa ICMP.

Por qué esto importa

  • Los cortafuegos filtran ICMP por Tipo/Código, no por puerto.
  • No puedes "vincular" un socket a un puerto ICMP —se requieren sockets en bruto (SOCK_RAW, IPPROTO_ICMP).
  • Herramientas como ping, traceroute y Descubrimiento de MTU de Ruta dependen del diseño sin puertos de ICMP.

ICMP es un protocolo de plano de control para diagnóstico de redes e informes de errores —no un transporte de aplicaciones. Por eso omite por completo la abstracción de puertos.