¿Qué es el ICMP? Aspectos destacados del protocolo de mensajes

Para intercambiar datos de estado o mensajes de error, los nodos recurren al Internet Control Message Protocol (ICMP) en las redes TCP/IP. Concretamente, los servidores de aplicaciones y las puertas de acceso como los routers, utilizan esta implementación del protocolo IP para devolver mensajes sobre problemas con datagramas al remitente del paquete. Aspectos como la creación, la funcionalidad y la organización dentro de la amplia gama de protocolos de Internet se especificaron en 1981 en la RFC 792. En el caso de la sexta versión del Internet Protocol (IP), la implementación específica ICMPv6 fue definida en la RFC 4443.

Por definición, ICMP es un protocolo autónomo aun cuando los diferentes mensajes están incluidos en paquetes IP tradicionales. Para tal fin, el protocolo de Internet trata a la implementación opcional como un protocolo de capas superiores. Los diversos servicios de red que se suelen utilizar hoy en día, como traceroute o ping, se basan en el protocolo ICMP.

¿Cómo funciona ICMP?

Para poder entender cómo funciona el protocolo, es necesario echar un vistazo a la construcción de la cabecera del Internet Control Message Protocol, vinculada directamente con la del IP, aunque se muestra en el campo “Protocol” de IP mediante la inserción del número de protocolo, que puede ser 1 o 58 (ICMPv6). El campo de la cabecera del Internet Control Message Protocol no es, sin embargo, tan amplio y tiene la siguiente forma:

El primer campo de 8 bits “Tipo” determina el tipo de mensaje al que hace referencia el paquete ICMP correspondiente. Este dato puede especificarse por medio del campo “Código”, que tiene una longitud de 8 bits. Así, un mensaje ICMP del tipo 3 indica que no se ha alcanzado el objetivo del paquete de datos, mientras que el código de este dato precisa y ofrece información acerca de si la red de destino (0), el host deseado (1) o el puerto esperado (3) no ha respondido a la solicitud. Tras los datos sobre el tipo de mensaje se encuentra la suma de verificación de ICMP, que garantiza la exactitud del mensaje. Esta se forma de igual manera que la suma de verificación de otros protocolos estándar (IP, UDP, TCP).

Por último aparecen los datos del protocolo ICMP que se crean y estructuran de manera muy diferente en función del tipo y de la instancia desencadenante. A menudo también se especifican aquí la cabecera IP y los primeros 64 bits del paquete de datos que es responsable del mensaje de error o de la solicitud de estado. En el llamado tunneling de ICMP, este campo se utiliza para otros fines, como puede ser enviar datos de usuario bajo el radar de los cortafuegos o para establecer un canal de comunicación entre dos ordenadores.

¿Qué tipos de paquetes ICMP existen?

Debido a la longitud del campo de 8 bits, en teoría son posibles 256 tipos de mensajes ICMP diferentes, de los que se asignan alrededor de 40 (incluidos algunos representantes ya obsoletos) y algunos están bloqueados para el uso meramente experimental. No se asignan, sin embargo, gran parte de los números (42-252), sino que en principio solo se reservan. La asignación de los números es responsabilidad de la IANA (Internet Assigned Numbers Authority), que también regula la clasificación de los espacios para las direcciones IP y para los puertos. En la siguiente tabla aparece una recopilación de los tipos de paquetes más importantes basados en el Internet Control Message Protocol:

Tipo ICMP Tipo ICMPv6 Nombre del tipo Código Descripción
0 129 Echo Reply 0 Respuesta a un ping de red para comprobar la accesibilidad
3 1 Destination Unreachable 0–15 Mensaje ICMP que informa acerca de, por ejemplo, la accesibilidad de red de los componentes del campo “Código” (red, protocolo, puerto, host), sobre problemas de enrutamiento o sobre el bloqueo por parte de los cortafuegos
5 137 Redirect Message 0–3 Mensaje sobre el redireccionamiento de un paquete para la red indicada (0), para el host escogido (1), para el servicio especificado y para la red (2) o para el servicio y host especificados (3)
8 128 Echo Request 0 Ping de red
9 134 Router Advertisement 0 Lo utilizan los routers para informarse acerca de los diferentes clientes de red
11 3 Time Exceeded 0 o 1 Informe de estado que o bien indica que el tiempo de vida (Time to Live, TTL) de un paquete (0) o el tiempo de espera para el ensamblaje de paquetes IP (1) ha expirado
13 13 Timestamp 0 Dota al paquete IP de una marca de tiempo que se corresponde con el momento del envío y que es de utilidad para la sincronización de dos ordenadores
14 - Timestamp Reply 0 Mensaje de respuesta a una petición de marca de tiempo enviado por el destinatario tras la recepción de la misma
30 - Traceroute 0 Tipo de mensaje ICMP obsoleto que se utilizaba para el seguimiento de la ruta de un paquete de datos en la red. Hoy en día se utilizan “Echo Request” y “Echo Reply” para estos fines

Utilización de ICMP y de ICMPv6

El protocolo ICMP es esencial para la comunicación en redes IP, en las que los routers son los que lo utilizan, como ya se ha mencionado. Los servidores y los clientes también hacen uso igualmente de las posibilidades de los mensajes vinculados al protocolo de Internet y, de este modo, reciben información de red importante.

Otro de los escenarios de aplicación más extendidos es el llamado ping de red, que puede ejecutarse con ayuda de aplicaciones del mismo nombre a través de las líneas de comandos del sistema operativo correspondiente. Esta simple pero útil herramienta de diagnóstico es la solución más sencilla para comprobar la accesibilidad de un determinado host en la red. Para ello, el ping envía, por un lado, un paquete IP incluida una “Echo Request” ICMP(6) (tipo 8 o 128), al que, tras su recepción, el receptor responderá con un paquete de datos que contiene la entrada ICMP “Echo Reply” (tipo 0 o 129).  Si no se localiza al sistema al que se ha enviado el ping, la última estación de red disponible enviará un paquete de respuesta, el cual se amplía con un componente ICMP, es decir, tipo 3 o 1 “Destination Unreachable” (“objetivo inalcanzable”).

Por el contrario, los routers utilizan el protocolo ICMP para diversos fines: mediante el tipo “Router Advertisement” (tipo 9 de ICMP; tipo 134 de ICMPv6), por ejemplo, pueden informar periódicamente a todos los participantes de red activos sobre su presencia y sobre diferentes datos de red. Estos guardan los datos recibidos en el caché y hacen que el router se convierta en la puerta de acceso estándar. Asimismo, los routers intentan optimizar la ruta de los paquetes de datos en la red por medio del tipo “Redirect” de ICMP (tipo 5 o 137). Con ayuda de este tipo de mensajes, las interfaces de red son capaces de advertir a los hosts sobre la existencia de un hop (conexión intermedia) de mejor calidad para el envío de paquetes IP.