Internet Control Message Protocol

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda
Internet Control Message Protocol (ICMP) para redes
Familia Familia de protocolos de Internet
Función Control y notificación de errores del Protocolo de Internet
Ubicación en la pila de protocolos
Red ICMP
IP
Enlace Ethernet, Token Ring,
FDDI, ...
Estándares
RFC 792 (1981)

El Protocolo de Mensajes de Control de Internet o ICMP (por sus siglas en inglés de Internet Control Message Protocol) es el sub protocolo de control y notificación de errores del Protocolo de Internet (IP). Como tal, se usa para enviar mensajes de error, indicando por ejemplo que un servicio determinado no está disponible o que un router o host no puede ser localizado. También puede ser utilizado para transmitir mensajes ICMP Query.

ICMP difiere del propósito de TCP y UDP ya que generalmente no se utiliza directamente por las aplicaciones de usuario en la red. La única excepción es la herramienta ping y traceroute, que envían mensajes de petición Echo ICMP (y recibe mensajes de respuesta Echo) para determinar si un host está disponible, el tiempo que le toma a los paquetes en ir y regresar a ese host y cantidad de hosts por los que pasa.

Este protocolo es parte de la suite de protocolo de Internet, de esta manera se define en RFC 792. Los mensajes de este protocolo se utilizan con fines de diagnóstico o control y se generan en respuesta a los errores en operaciones IP (como se especifica en el RFC 1122). Estos errores del protocolo ICMP se dirigen a la dirección IP de origen del paquete originario.

Podríamos decir, que todos los dispositivos (como intermedio enrutador) reenvían un datagrama IP que disminuye el tiempo de vida en el encabezado IP por uno. Si el tiempo de vida (TTL) resultante es 0, el paquete se descartara y un ICMP de tiempo de vida superado en tránsito enviara un mensaje de dirección al origen del datagrama.

Aspectos técnicos[editar]

Bit 0 7 Bit 8 15 Bit 16 23 Bit 24 31
Tipo Código Suma de verificación

Datos (opcional)

ICMP es parte del conjunto de protocolos IP tal cual y como se definió en la RFC 792. Los mensajes ICMP son comúnmente generados en respuesta a errores en los datagramas de IP o para diagnóstico y ruteo. La versión de ICMP para IPv4 también es conocida como ICMPv4. IPv6 tiene su protocolo equivalente ICMPv6. Los mensajes ICMP son construidos en el nivel de capa de red. IP encapsula el mensaje ICMP apropiado con una nueva cabecera IP (para obtener los mensajes de respuesta desde el host original que envía), y transmite el datagrama resultante de manera habitual.

Los mensajes del protocolo ICMP se encuentra dentro de los paquetes IP estándar, los mensajes ICMP se procesan generalmente como un caso especial, para distinguirse de procesamientos de IP normal, en lugar de ser procesado como un sub-protocolo normal de IP. En la mayoría de los casos, es necesario analizar el contenido de los mensajes de ICMP( Protocolo de Mensajes de Control de Internet)y entregar el mensaje de error correspondiente a la aplicación que generó el paquete IP original, el que envió el paquete que se le solicitara el envió del mensaje ICMP.

Por ejemplo, cada router que reenvía un datagrama IP tiene que disminuir el campo de tiempo de vida (TTL) de la cabecera IP en una unidad; si el TTL llega a 0, un mensaje ICMP "Tiempo de Vida se ha excedido en transmitirse" es enviado a la fuente del datagrama. Cada mensaje ICMP es encapsulado directamente en un solo datagrama IP, y por tanto no garantiza la entrega del ICMP. Aunque los mensajes ICMP son contenidos dentro de datagramas estándar IP, los mensajes ICMP se procesan como un caso especial del procesamiento normal de IP, algo así como el procesamiento de un sub-protocolo de IP. En muchos casos es necesario inspeccionar el contenido del mensaje ICMP y entregar el mensaje apropiado de error a la aplicación que generó el paquete IP original, aquel que solicitó el envío del mensaje ICMP.

La utilidad del protocolo ICMP es controlar si un paquete no puede alcanzar su destino, si su vida ha expirado, etc. Es decir, se usa para manejar mensajes de error y de control necesarios para los sistemas de la red, informando con ellos a la fuente original para que evite o corrija el problema detectado.

Muchas de las utilidades de red comunes están basadas en los mensajes ICMP. El comando traceroute está implementado transmitiendo datagramas UDP con campos especiales TTL IP en la cabecera, y buscando los mensajes de "Tiempo de Vida en tránsito" y "Destino inalcanzable" generados como respuesta. La herramienta ping está implementada utilizando los mensajes "Echo request" y "Echo reply" de ICMP.

Diferentes empresas de servicios de red utilizan y se basan en mensajes ICMP. Los comandos se implementan mediante la transmisión de datagramas con campos de cabecera y especialmente establecidas, y en busca de protocolos y de los mensajes de “destino inalcanzable” generados en respuesta. La utilidad de ping es relacionada y se implementa mediante la “petición de eco” en el protocolo y mensajes de “respuestas de eco”.

Estructura de un segmento ICMP[editar]

El ICMP inicia después del IPv4 cabecera y se identifica con el protocolo número “1”. Todos los paquetes ICMP tendrán una cabecera de 8 bytes y la sección de datos de tamaño variable. Los primero 4 bytes de la cabecera serán consistentes. El primer byte es reservado para el tipo de ICMP. El segundo octeto es para el código de ICMP. El tercer y cuarto byte es una suma de comprobación de todo el mensaje ICMP. El contenido de los restantes 4 bytes de la cabecera pueden variar dependiendo de la función del tipo y el código ICMP.

Los mensajes de error de este protocolo contienen una sección de datos que incluye todos los IP de cabecera más los 8 primeros bytes de los datos del paquete IP que ha causado el mensaje de error. El paquete ICMP es encapsulado en un nuevo paquete IP.

Bits 0-7 8-15 16-23 24-31

0 Tipo Código Checksum
32 Resto del encabezado  
  • Tipo - Tipo de ICMP como se especifica a continuación.
  • Código - Subtipo al tipo dado.
  • Checksum - Datos comprobación de errores. Calculado a partir de la cabecera ICMP + datos, con un valor de 0 para este campo. El algoritmo de suma de comprobación se especifica en RFC 1071.
  • Resto del Header - Cuatro campo byte. Puede variar en función del tipo y código ICMP.

Mensajes de Control[editar]

Fuente Saciable[editar]

La Fuente Saciable: las peticiones que provienen del remitente disminuyen su velocidad en base a los mensajes enviados a un host o router. Este mensaje se puede generar si un router o host esta deficiente en espacio de búfer para procesar esta solicitud, o puede ocurrir que el bufer del host o enrutador este llegando a su límite.

La información es enviada a una velocidad muy alta que parte de un anfitrión o de varios host al mismo tiempo hacia un enrutador en particular perteneciente a la red. Aunque un router tiene capacidades de almacenamiento en búfer, esta se limita dentro de un rango en específico. El enrutador no puede colocar más datos que se excedan de la capacidad de almacenamiento que provee el búfer. De esta forma, si la cola se llena, las informaciones se descartan hasta que la cola ya no este saturada. Pero como no hay mecanismos de confirmación está presente en la capa de red, el usuario no tiene conocimiento si la información ha llegado a su destino con éxito. De ahí algunas medidas correctivas deben ser tomadas por medio de la capa de red para prevenir estos tipos de situaciones. Estas medidas se refieren como fuente de amortiguación. En un mecanismo de enfriamiento fuente, el enrutador considera que la tasa de datos entrantes es más rápido que la velocidad de datos de salida, y envía un mensaje ICMP a los clientes, informándoles deben frenar su velocidad de transferencia de datos o esperar una cantidad de tiempo para enviar nuevamente datos. Al usuario recibir esta notificación automáticamente se desacelerara la velocidad de datos salientes o quedara en espera hasta que pase suficiente cantidad de tiempo lo que le permitirá al router vaciar la cola. Por lo tanto fuente saciar mensaje ICMP actos como el control de flujo en la capa de red.

Mensaje de Fuente Saciable
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Tipo= 4 Código = 0 Encabezado
Sin Uso
Cabecera de IP y 8 primeros bytes de datos del datagrama original

Donde Tipo debe establecerse en 4 Código debe establecerse en 0 Encabezado IP y los datos adicionales es utilizado por el emisor para que coincida con la respuesta a la solicitud correspondiente

Redirecciones[editar]

Redirigir las peticiones de los paquetes de datos se envían en una ruta alternativa. ICMP Redirect: es un mecanismo para enrutadores para transferir datos del router a los hosts. El mensaje informa al receptor (hosts) que actualice su información de enrutamiento. Si un anfitrión intenta enviar información a través del router 1 y el router 1 envía la información al router 2 y una ruta directa desde el host al router 2 está disponible (es decir, el anfitrión y el router 2 están en el mismo segmento de Ethernet), entonces el router 1 enviare una notificación de redirección para informar al host que el mejor trayecto para cumplir su destino es a través del router 2. Entonces el anfitrión debe enviar paquetes directamente al router 2. Y este intentara enviar el original datagrama al destino previsto. Sin embargo, si el datagrama contiene datos del enrutamiento, no se enviara esta notificación incluso si hay mejores caminos disponibles.

Mensaje de Redirección
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Tipo= 5 Código Cabecera
Dirección IP
IP cabecera y los primeros 8 bytes del datagrama original

Donde:

Tipo Establecerse en 5.
Código Especifica el motivo de la redirección, puede ser uno de los siguientes:
Código Descripción
0 Redirección de la Red
1 Redirección para el Host
2 Redirección del Tipo de Servicio y de Red
3 Redirección para el Tipo de Servicio y el Host
Dirección IP Es la dirección de 32 bits de la puerta de entrada a la de la dirección en la cual debe ser enviada.
IP de Cabecera Son los datos adicionales que se incluyen para permitir que el host coincida con la respuesta a la solicitud de redirección.

Tiempo Excedido[editar]

El Tiempo excedido se crea por una puerta de enlace para informar a la fuente de un datagrama debido al tiempo de vida de campo al llegar a cero. Un mensaje sobrepasando el tiempo también puede ser enviado por un host si no logra volver a montar una fragmentación de datagramas dentro de su límite de tiempo.

Los mensajes del tiempo excedido son utilizados por la Ruta de Seguimiento de utilidad para identificar las puertas de enlace en el cambio de los anfitriones.

Tiempo de mensaje Excedido
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Tipo= 11 Código Cabecera
Sin uso.
IP cabecera y los primeros 8 bytes del datagraam original

Donde:

Tipo debe establecerse en 11
Código especifica la razón del mensaje de tiempo excedido, se incluyen los siguientes puntos:
Código Descripción
0 Tiempo de Vida Excedido en el tránsito
1 Tiempo excedido en el Fragmento re ensamblaje.

El IP cabecera y los primeros 64 bits de la carga original útil son utilizados por el host de origen para que coincida con el mensaje de tiempo excedido para el datagrama descartado. Para los protocolos de nivel superior, tales como UDP (Datagrama de Protocolo de Usuario) y TCP (Protocolo de Control de Transmisión) el bit de carga útil de 64 bits incluirá la fuente y puertos de destino del paquete descartado.

Timestamp[editar]

[1] Timestamp Es usada para la sincronización de tiempo. Consiste en el origen del timestamp

Mensaje de Marca de Tiempo
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Tipo= 13 Código= 0 Cabecera
Identificador Número de Secuencia
Crea un timestamp

Donde:

Tipo debe establecerse en 13
Código debe establecerse en 0
Identificador y número de secuencia puede ser utilizado por el cliente para que coincida con la marca de tiempo respuesta a la solicitud de marca de hora.
Crear un timestamp es el número de milisegundos desde la media noche Horario Universal (UT). Si una referencia UT no está disponible el bit más significativo se puede configurar para indicar un valor de tiempo no estándar.

Respuesta Timestamp[editar]

Respuesta a una timestamp del mensaje. Se compone de la timestamp originario enviado por el remitente del timestamp, así como una timestamp y así recibir una timestamp de la transmisión.

Respuesta Timestamp
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Tipo= 14 Código= 0 cabecera
Identificador Número de Secuencia
Crea un timestamp
Recibe un timestamp
Transmite un timestamp

Donde:

Tipo Debe establecerse en 14
Códigio De establecerse en 0
Idenficador y Número de Secuencia puede ser utilizado por el cliente para que coincida con la respuesta a la solicitud que hizo.
Crear un timestamp es la última vez que el remitente toco el mensaje antes de enviarlo.
Recibe timestamp es el tiempo que el generador de ecos maneja el mensaje recibido.
Transmite un timestamp es el tiempo que el generador de ecos tocó el mensaje por última vez antes de enviarlo.

Todos los timestamp son en unidades de milisegundos desde la medianoche UT. Si el tiempo no está disponible en milisegundos o no puede ser proporcionado con respecto a la medianoche UT entonces cualquier momento se puede insertar en una timestamp siempre y cuando que el bit de orden superior del timestamp también se establezca como indicador del valor estándar.

Solicitud de Dirección de Máscara[editar]

se envía normalmente por un host a un router con el fin de obtener una adecuada Máscara de Subred. Los remitentes deben responder este mensaje con una Solicitud de Dirección de Máscara.

Solicitud de Dirección de Máscara
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Tipo= 17 Código= 0 Cabecera
Identificador Número de Secuencia
Dirección de Máscara

Donde:

Tipo debe establecerse en 17
Código debe establecerse en 0
Direccón de Máscara puede ajustarse en 0

ICMP Solicitud de Dirección de Máscara puede ser usada como parte de un proceso de reconocimiento para recabar información sobre la red de destino, por lo tanto, ICMP Solicitud de Dirección de Máscara está desactivando por defecto en Cisco IOS. [2]

Respuesta a la Dirección de Máscara[editar]

La Respuesta a la Dirección de Máscara se utiliza para responder a un mensaje de petición de dirección de máscara con una máscara de subred adecuada.

Respuesta a la Dirección de Máscara
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Tipo= 18 Código= 0 Cabecera
Identificador Número de Secuencia
Dirección de Máscara

Donde:

Tipo debe establecerse 18
Código debe establecerse en 0
Dirección de Máscara debe establecerse en la máscara de subred

Destino de Mensaje Inalcanzable[editar]

El Destino Inalcanzable se genera por el host o en la puerta de enlace entrante para informar al cliente de que el destino es inalcanzable por alguna razón. Un mensaje de destino inalcanzable se puede generar como resultado de un TCP, UDP o ICMP u otra transmisión.Los Puertos TCP inalcanzables sobre todo responden con TCP RST en lugar de un tipo de destino inalcanzable 3 como era de esperar.

El error no se génera si el datagrama original tiene un IP Multicast[3] de dirección de destino. Las razones para este mensaje pueden incluir: la conexión física con el host no existe (la distancia es infinita), el protocolo indicado o el puerto no está activo, los datos deben ser fragmentados pero el marcador "no fragmentar" está activo.

Destino de Mensaje Inalcanzable
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Tipo= 3 Código Encabezado
Sin uso Siguiente salto MTU
IP cabecera y los 8 primeros bytes de datos del datagrama original.

Donde:

Tipo campo(bits 0-7) debe establecerse en 3
Código campo(bits 8-15) es utilizado para especificar un tipo de error.

Encapsulación[editar]

[4]

Un mensaje ICMP se encapsula en IP:

Cabecera L2 | Cabecera IP | Cabecera ICMP | Datos....

Cabecera ICMP[editar]

ICMP se puede utilizar para transmitir diferentes tipos de mensajes de gestión, que se identifican principalmente por el tipo y el código correspondiente.

Bit del Mensaje:
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

Código | Cabecera de comprobación ICMP | Datos....

Formato del Protocolo[editar]

Ejemplo de envío y recepción de un ping

Lista de mensajes de control permitidos (incompleta):

  • 0 - Echo Reply
  • 1 - Reservado
  • 2 - Reservado
  • 3 - Destination Unreachable
  • 4 - Source Quench
  • 5 - Redirect Message
  • 6 - Dirección Alterna de Host
  • 7 - Reservado
  • 8 - Echo Request (Ping)
  • 9 - Anuncio de Router
  • 10 - Solicitud de Router
  • 11 - Tiempo Excedido
  • 12 - Problema de Parámetro
  • 13 - Marca de tiempo
  • 14 - Respuesta de Marca de tiempo
  • 15 - Petición de Información
  • 16 - Respuesta de Información
  • 17 - Petición de Máscara de Dirección
  • 18 - Respuesta de Máscara de Dirección
  • 19 - Reservado para seguridad
  • 20-29 - Reservado para experimentos de robustez
  • 30 - Traceroute
  • 31 - Error de Conversión de Datagrama
  • 32 - Redirección de Host Móvil
  • 33 - IPv6
  • 34 - Petición de Registro de Móvil
  • 35 - Respuesta de registro de Móvil
  • 36 - Petición de Nombre de Dominio
  • 37 - Respuesta de Nombre de Dominio
  • 38 - SKIP Protocolo de Algoritmo de Descubrimiento
  • 39 - Photuris, Fallas de Seguridad
  • 40-255 - Reservado

(Fuente: IANA ICMP Parameters)

Referencias[editar]

Enlaces externos[editar]