2.5. El Internet Control Message Protocol

IP tiene otro protocolo complementario del que no hemos hablado todavía. Este es el Internet Control Message Protocol (ICMP), usado por el código de redes del núcleo para comunicar mensajes de error a otros puestos. Por ejemplo, asumiremos que nos encontramos en erdos otra vez y queremos hacer telnet al puerto 12345 en quark, pero no hay procesos escuchando en ese puerto. Cuando el primer paquete TCP para este puerto llegue a quark, la capa de red reconocerá esta llegada e inmediatamente enviará un mensaje ICMP a erdos empezando con “Port Unreachable.”[1]

El protocolo ICMP ofrece varios mensajes diferentes, muchos de ellos tratan con condiciones de error. De todas maneras, hay un mensaje muy interesante denominado mensaje Redirect[2]. Lo genera el módulo de encaminamiento cuando detecta que otro puesto está usándolo como pasarela, aunque exista una ruta más corta. Por ejemplo, después del arranque, la tabla de encaminamiento de sophus puede estar incompleta. Puede que contenga las rutas a la red de Matemáticas, a la dorsal FDDI, y el encaminamiento por defecto apuntando a la pasarela del Groucho Computing Center ( gcc1). De este modo, los paquetes para quark serán enviados a gcc1 en vez de a niels, la pasarela del departamento de Fisicas. Cuando recibe un datagrama como éste, gcc1 notará que esa es una mala elección como ruta y reenviará el paquete a niels, mientras tanto envía un mensaje Redirect ICMP a sophus diciéndole la ruta superior.

Esta parece ser una forma muy inteligente de evitar la configuración manual de las rutas excepto las más básicas. De cualquier forma, hay que decir que depender de esquemas de encaminamiento dinámicos, sean RIP o mensajes Redirect ICMP, no es siempre una buena idea. Redirect ICMP y RIP ofrecen muy poca o ninguna capacidad de verificar si alguna información de encaminamiento es efectivamente auténtica. Esta situación permite a malévolos inútiles perturbar el desarrollo del tráfico de la red completa, o incluso algo peor. Consecuentemente, el código de red de GNU/Linux trata los mensaje Network Redirect como si fuesen Host Redirects. Esto minimiza los daños de un ataque restringiéndolos a sólo un puesto, en vez de la red completa. Por otro lado, esto significa que se generá un poco más de tráfico en las mismas condiciones, ya que cada puesto hace que se genere un mensaje Redirect ICMP. En la actualidad, se considera generalmente una mala costumbre depender de las redirecciones ICMP para algo.

Notas

[1]

N. del T.: Puerto Inalcanzable.

[2]

N. del T.: Redirección.