Para in­te­r­ca­m­biar datos de estado o mensajes de error, los nodos recurren al Internet Control Message Protocol (ICMP) en las redes TCP/IP. Co­n­cre­ta­me­n­te, los se­r­vi­do­res de apli­ca­cio­nes y las puertas de acceso como los routers, utilizan esta im­ple­me­n­ta­ción del protocolo IP para devolver mensajes sobre problemas con da­ta­gra­mas al remitente del paquete. Aspectos como la creación, la fu­n­cio­na­li­dad y la or­ga­ni­za­ción dentro de la amplia gama de pro­to­co­los de Internet se es­pe­ci­fi­ca­ron en 1981 en la RFC 792. En el caso de la sexta versión del Internet Protocol (IP), la im­ple­me­n­ta­ción es­pe­cí­fi­ca ICMPv6 fue definida en la RFC 4443. Por de­fi­ni­ción, ICMP es un protocolo autónomo aun cuando los di­fe­re­n­tes mensajes están incluidos en paquetes IP tra­di­cio­na­les. Para tal fin, el protocolo de Internet trata a la im­ple­me­n­ta­ción opcional como un protocolo de capas su­pe­rio­res. Los diversos servicios de red que se suelen utilizar hoy en día, como tra­ce­rou­te 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 co­n­s­tru­c­ción de la cabecera del Internet Control Message Protocol, vinculada di­re­c­ta­me­n­te 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 re­fe­re­n­cia el paquete ICMP co­rre­s­po­n­die­n­te. Este dato puede es­pe­ci­fi­car­se 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 in­fo­r­ma­ción acerca de si la red de destino (0), el host deseado (1) o el puerto esperado (3) no ha re­s­po­n­di­do a la solicitud. Tras los datos sobre el tipo de mensaje se encuentra la suma de ve­ri­fi­ca­ción de ICMP, que garantiza la exactitud del mensaje. Esta se forma de igual manera que la suma de ve­ri­fi­ca­ción de otros pro­to­co­los estándar (IP, UDP, TCP).

Por último aparecen los datos del protocolo ICMP que se crean y es­tru­c­tu­ran de manera muy diferente en función del tipo y de la instancia des­en­ca­de­na­n­te. A menudo también se es­pe­ci­fi­can aquí la cabecera IP y los primeros 64 bits del paquete de datos que es re­s­po­n­sa­ble 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 co­r­ta­fue­gos o para es­ta­ble­cer un canal de co­mu­ni­ca­ción entre dos or­de­na­do­res.

¿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 di­fe­re­n­tes, de los que se asignan alrededor de 40 (incluidos algunos re­pre­se­n­ta­n­tes ya obsoletos) y algunos están blo­quea­dos para el uso meramente ex­pe­ri­me­n­tal. No se asignan, sin embargo, gran parte de los números (42-252), sino que en principio solo se reservan. La asi­g­na­ción de los números es re­s­po­n­sa­bi­li­dad de la IANA (Internet Assigned Numbers Authority), que también regula la cla­si­fi­ca­ción de los espacios para las di­re­c­cio­nes IP y para los puertos. En la siguiente tabla aparece una re­co­pi­la­ción de los tipos de paquetes más im­po­r­ta­n­tes basados en el Internet Control Message Protocol:

Tipo ICMP Tipo ICMPv6 Nombre del tipo Código De­s­cri­p­ción
0 129 Echo Reply 0 Respuesta a un ping de red para comprobar la ac­ce­si­bi­li­dad
3 1 De­s­ti­na­tion Un­rea­cha­ble 0–15 Mensaje ICMP que informa acerca de, por ejemplo, la ac­ce­si­bi­li­dad de red de los co­m­po­ne­n­tes del campo “Código” (red, protocolo, puerto, host), sobre problemas de en­ru­ta­mie­n­to o sobre el bloqueo por parte de los co­r­ta­fue­gos
5 137 Redirect Message 0–3 Mensaje sobre el re­di­re­c­cio­na­mie­n­to de un paquete para la red indicada (0), para el host escogido (1), para el servicio es­pe­ci­fi­ca­do y para la red (2) o para el servicio y host es­pe­ci­fi­ca­dos (3)
8 128 Echo Request 0 Ping de red
9 134 Router Ad­ve­r­ti­se­me­nt 0 Lo utilizan los routers para in­fo­r­mar­se acerca de los di­fe­re­n­tes 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 en­sa­m­bla­je de paquetes IP (1) ha expirado
13 13 Timestamp 0 Dota al paquete IP de una marca de tiempo que se co­rre­s­po­n­de con el momento del envío y que es de utilidad para la si­n­cro­ni­za­ción de dos or­de­na­do­res
14 - Timestamp Reply 0 Mensaje de respuesta a una petición de marca de tiempo enviado por el de­s­ti­na­ta­rio tras la recepción de la misma
30 - Tra­ce­rou­te 0 Tipo de mensaje ICMP obsoleto que se utilizaba para el se­gui­mie­n­to 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

Uti­li­za­ción de ICMP y de ICMPv6

El protocolo ICMP es esencial para la co­mu­ni­ca­ción en redes IP, en las que los routers son los que lo utilizan, como ya se ha me­n­cio­na­do. Los se­r­vi­do­res y los clientes también hacen uso igua­l­me­n­te de las po­si­bi­li­da­des de los mensajes vi­n­cu­la­dos al protocolo de Internet y, de este modo, reciben in­fo­r­ma­ción de red im­po­r­ta­n­te.

Otro de los es­ce­na­rios de apli­ca­ción más ex­te­n­di­dos es el llamado ping de red, que puede eje­cu­tar­se con ayuda de apli­ca­cio­nes del mismo nombre a través de las líneas de comandos del sistema operativo co­rre­s­po­n­die­n­te. Esta simple pero útil he­rra­mie­n­ta de dia­g­nó­s­ti­co es la solución más sencilla para comprobar la ac­ce­si­bi­li­dad de un de­te­r­mi­na­do 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 re­s­po­n­de­rá 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 di­s­po­ni­ble enviará un paquete de respuesta, el cual se amplía con un co­m­po­ne­n­te ICMP, es decir, tipo 3 o 1 “De­s­ti­na­tion Un­rea­cha­ble” (“objetivo inal­ca­n­za­ble”).

Por el contrario, los routers utilizan el protocolo ICMP para diversos fines: mediante el tipo “Router Ad­ve­r­ti­se­me­nt” (tipo 9 de ICMP; tipo 134 de ICMPv6), por ejemplo, pueden informar pe­rió­di­ca­me­n­te a todos los pa­r­ti­ci­pa­n­tes de red activos sobre su presencia y sobre di­fe­re­n­tes 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 in­te­r­fa­ces de red son capaces de advertir a los hosts sobre la exi­s­te­n­cia de un hop (conexión in­te­r­me­dia) de mejor calidad para el envío de paquetes IP.

Ir al menú principal