Articulo de referencia

Protocolo de mensajes de control de Internet

El Protocolo de Mensajes de Control de Internet ( ICMP ) es un protocolo de soporte [ 2 ] en el conjunto de protocolos de Internet . Lo utilizan los dispositivos de red , inclui...

El Protocolo de Mensajes de Control de Internet ( ICMP ) es un protocolo de soporte [ 2 ] en el conjunto de protocolos de Internet . Lo utilizan los dispositivos de red , incluidos los enrutadores , para enviar mensajes de error e información operativa que indica el éxito o el fracaso al comunicarse con otra dirección IP . Por ejemplo, se indica un error cuando un servicio solicitado no está disponible o cuando no se puede acceder a un host o enrutador. [ 3 ] ICMP se diferencia de los protocolos de transporte como TCP y UDP en que no se utiliza normalmente para intercambiar datos entre sistemas, ni es empleado habitualmente por las aplicaciones de red de los usuarios finales (con la excepción de algunas herramientas de diagnóstico como ping y traceroute ).

Se utiliza un protocolo de mensajes de control de Internet independiente (llamado ICMPv6 ) con IPv6 . [ 4 ]

Detalles técnicos

ICMP forma parte del conjunto de protocolos de Internet definidos en la RFC 792. Los mensajes ICMP se utilizan normalmente con fines de diagnóstico o control, o se generan en respuesta a errores en las operaciones IP (según se especifica en la RFC 1122). Los errores ICMP se dirigen a la dirección IP de origen del paquete. [ 3 ]

Por ejemplo, cada dispositivo (como un enrutador intermedio) que reenvía un datagrama IP primero decrementa en uno el campo de tiempo de vida (TTL) en la cabecera IP. Si el TTL resultante es 0, el paquete se descarta y se envía un mensaje ICMP de tiempo excedido a la dirección de origen del datagrama.

Muchas utilidades de red de uso común se basan en mensajes ICMP. El comando traceroute se puede implementar transmitiendo datagramas IP con campos de encabezado TTL IP configurados específicamente y buscando mensajes ICMP de tiempo de tránsito excedido y destino inalcanzable generados en respuesta. La utilidad ping relacionada se implementa utilizando mensajes de solicitud y respuesta de eco ICMP .

ICMP utiliza la compatibilidad básica de IP como si fuera un protocolo de nivel superior; sin embargo, en realidad es una parte integral de IP. Aunque los mensajes ICMP se incluyen dentro de paquetes IP estándar, suelen procesarse como un caso especial, distinto del procesamiento IP normal. En muchos casos, es necesario inspeccionar el contenido del mensaje ICMP y enviar el mensaje de error correspondiente a la aplicación responsable de transmitir el paquete IP que originó el envío del mensaje ICMP.

ICMP es un protocolo de capa de red ; esto lo convierte en un protocolo de capa 3 en el modelo OSI de siete capas . Basado en el modelo TCP/IP de cuatro capas, ICMP es un protocolo de capa de Internet , lo que lo convierte en un protocolo de capa 2 en el modelo de cuatro capas TCP/IP del estándar de Internet RFC 1122 o en un protocolo de capa 3 en las definiciones modernas del protocolo TCP/IP de cinco capas (por Kozierok, Comer, Tanenbaum, Forouzan, Kurose, Stallings).

No hay un número de puerto asociado a un paquete ICMP, ya que estos números están asociados a protocolos de la capa de transporte superior, como TCP y UDP. [ 5 ]

Estructura del datagrama

El paquete ICMP está encapsulado en un paquete IPv4. [ 3 ] El paquete consta de secciones de encabezado y datos.

La cabecera ICMP comienza después de la cabecera IPv4 y se identifica por su número de protocolo , 1. [ 6 ] Todos los paquetes ICMP tienen una cabecera de ocho bytes y una sección de datos de tamaño variable. Los primeros cuatro bytes de la cabecera tienen un formato fijo, mientras que los últimos cuatro bytes dependen del tipo y código del paquete ICMP. [ 3 ]

Tipo : 8 bits
Tipo ICMP, véase §  Mensajes de control .
Código : 8 bits
Subtipo ICMP, véase §  Mensajes de control .
Suma de verificación : 16 bits
Suma de verificación de Internet [ 7 ] para la verificación de errores, calculada a partir del encabezado ICMP y los datos con el valor 0 sustituido para este campo.
Resto del encabezado : 32 bits
Campo de cuatro bytes, cuyo contenido varía según el tipo y el código ICMP.

Datos

Los mensajes de error ICMP contienen una sección de datos que incluye una copia de la cabecera IPv4 completa, además de al menos los primeros ocho bytes de datos del paquete IPv4 que generó el mensaje de error. La longitud de los mensajes de error ICMP no debe exceder los 576 bytes. [ 1 ] El host utiliza estos datos para asociar el mensaje con el proceso correspondiente. Si un protocolo de nivel superior utiliza números de puerto, se asume que estos se encuentran en los primeros ocho bytes de los datos del datagrama original. [ 2 ]

Se ha explotado el tamaño variable de la sección de datos del paquete ICMP . En el ataque " Ping of death ", se utilizan paquetes ICMP grandes o fragmentados para ataques de denegación de servicio . Los datos ICMP también pueden utilizarse para crear canales de comunicación encubiertos , conocidos como túneles ICMP .

Mensajes de control

Los mensajes de control se identifican mediante el valor del campo "tipo" . El campo "código" proporciona información contextual adicional para el mensaje. Algunos mensajes de control han quedado obsoletos desde la introducción del protocolo.

extinción de la fuente

Source Quench solicita al remitente que reduzca la frecuencia de los mensajes enviados a un enrutador o host. Este mensaje puede generarse si un enrutador o host no dispone de suficiente espacio de búfer para procesar la solicitud, o si el búfer del enrutador o host se está acercando a su límite.

Los datos se envían a gran velocidad desde uno o varios hosts simultáneamente a un enrutador específico en la red. Si bien el enrutador cuenta con capacidad de almacenamiento en búfer, esta se limita a un rango determinado. El enrutador no puede almacenar en cola más datos de los que caben en su capacidad. Por lo tanto, si la cola se llena, los datos entrantes se descartan hasta que la cola vuelva a llenarse. Sin embargo, dado que no existe un mecanismo de confirmación en la capa de red, el cliente desconoce si los datos han llegado correctamente a su destino. Por consiguiente, la capa de red debe implementar medidas correctivas para evitar este tipo de situaciones. Estas medidas se conocen como saturación de la fuente.

En un mecanismo de control de flujo de origen, el enrutador detecta que la velocidad de datos entrantes es mucho mayor que la de salida y envía un mensaje ICMP a los clientes, indicándoles que deben reducir la velocidad de transferencia de datos o esperar un tiempo determinado antes de intentar enviar más datos. Cuando un cliente recibe este mensaje, reduce automáticamente la velocidad de salida o espera el tiempo suficiente, lo que permite al enrutador vaciar la cola. De esta forma, el mensaje ICMP de control de flujo de origen actúa como un mecanismo de control de flujo en la capa de red.

Dado que las investigaciones sugerían que "ICMP Source Quench [era] un antídoto ineficaz (e injusto) para la congestión", [ 10 ] la creación de mensajes source quench por parte de los enrutadores quedó obsoleta en 1995 mediante el RFC 1812. Además, el reenvío y cualquier tipo de reacción a (acciones de control de flujo) mensajes source quench quedaron obsoletos a partir de 2012 mediante el RFC 6633.

Dónde:

  • El tipo debe establecerse en 4
  • El código debe establecerse en 0.
  • El remitente utiliza el encabezado IP y datos adicionales para hacer coincidir la respuesta con la solicitud asociada.

Redireccionar

Un ejemplo de cómo funciona un mensaje de redirección ICMPv4.

Las solicitudes de redirección hacen que los paquetes de datos se envíen por una ruta alternativa. La redirección ICMP es un mecanismo que utilizan los enrutadores para transmitir información de enrutamiento a los hosts. El mensaje informa a un host que actualice su información de enrutamiento (para enviar paquetes por una ruta alternativa). Si un host intenta enviar datos a través de un enrutador (R1) y R1 envía los datos a través de otro enrutador (R2) y existe una ruta directa desde el host a R2 (es decir, el host y R2 están en la misma subred ), entonces R1 enviará un mensaje de redirección para informar al host que la mejor ruta para el destino es a través de R2. El host deberá entonces cambiar su información de ruta y enviar los paquetes para ese destino directamente a R2. El enrutador seguirá enviando el datagrama original al destino previsto. [ 15 ] Sin embargo, si el datagrama contiene información de enrutamiento, este mensaje no se enviará incluso si existe una mejor ruta. El RFC 1122 establece que las redirecciones solo deben ser enviadas por las pasarelas y no por los hosts de Internet.

Dónde:

  • El tipo debe estar configurado en 5.
  • El código especifica el motivo de la redirección y puede ser uno de los siguientes:
  • La dirección IP es la dirección de 32 bits de la puerta de enlace a la que se debe enviar la redirección.
  • Se incluye un encabezado IP y datos adicionales para permitir que el host haga coincidir la respuesta con la solicitud que provocó la redirección.

Tiempo excedido

El mensaje "Tiempo excedido" es generado por una puerta de enlace para informar al origen que un datagrama ha sido descartado debido a que el campo de tiempo de vida ha llegado a cero. Un host también puede enviar un mensaje de tiempo excedido si no logra reconstruir un datagrama fragmentado dentro del límite de tiempo establecido.

Los mensajes de tiempo excedido son utilizados por la utilidad traceroute para identificar las puertas de enlace en la ruta entre dos hosts.

Dónde:

  • El tipo debe estar configurado en 11.
  • El código especifica el motivo del mensaje de tiempo excedido e incluye lo siguiente:
  • El host de origen utiliza la cabecera IP y los primeros 64 bits de la carga útil original para asociar el mensaje de tiempo excedido con el datagrama descartado. Para protocolos de nivel superior como UDP y TCP, la carga útil de 64 bits incluirá los puertos de origen y destino del paquete descartado.

Marca de tiempo

La marca de tiempo se utiliza para la sincronización horaria. La marca de tiempo de origen se establece en el momento (en milisegundos desde la medianoche) en que el remitente accedió por última vez al paquete. Las marcas de tiempo de recepción y transmisión no se utilizan.

Dónde:

  • El tipo debe establecerse en 13.
  • El código debe establecerse en 0.
  • El cliente puede utilizar el identificador y el número de secuencia para hacer coincidir la respuesta con la marca de tiempo solicitada.
  • La marca de tiempo de origen es el número de milisegundos transcurridos desde la medianoche, hora universal (UT). Si no se dispone de una referencia UT, se puede configurar el bit más significativo para indicar un valor de tiempo no estándar.

Respuesta con marca de tiempo

La respuesta con marca de tiempo responde a un mensaje con marca de tiempo . Consta de la marca de tiempo original enviada por el remitente, una marca de tiempo de recepción que indica cuándo se recibió el mensaje y una marca de tiempo de transmisión que indica cuándo se envió la respuesta .

Dónde:

  • El tipo debe establecerse en 14.
  • El código debe establecerse en 0.
  • El cliente puede utilizar el identificador y el número de secuencia para relacionar la respuesta con la solicitud que la originó.
  • La marca de tiempo de origen es la hora en que el remitente modificó el mensaje por última vez antes de enviarlo.
  • La marca de tiempo de recepción es el momento en que el emisor la tocó por primera vez al recibirla.
  • La marca de tiempo de transmisión es la hora en que el emisor modificó por última vez el mensaje al enviarlo.
Todas las marcas de tiempo se expresan en milisegundos desde la medianoche (UT). Si la hora no está disponible en milisegundos o no se puede proporcionar con respecto a la medianoche (UT), se puede insertar cualquier hora en la marca de tiempo, siempre que el bit de orden superior de la marca de tiempo también indique este valor no estándar.

El uso de mensajes de marca de tiempo y respuesta de marca de tiempo para sincronizar los relojes de los nodos de Internet ha sido reemplazado en gran medida por el Protocolo de tiempo de red basado en UDP y el Protocolo de tiempo de precisión . [ 16 ]

Solicitud de mascarilla de dirección

Normalmente, un host envía una solicitud de máscara de dirección a un enrutador para obtener una máscara de subred adecuada .

Los destinatarios deberán responder a este mensaje con un mensaje de respuesta con máscara de dirección .

Dónde:

  • El tipo debe establecerse en 17.
  • El código debe establecerse en 0.
  • La máscara de dirección se puede establecer en 0.

La solicitud de máscara de dirección ICMP puede utilizarse como parte de un ataque de reconocimiento para recopilar información sobre la red objetivo; por lo tanto, la respuesta de máscara de dirección ICMP está deshabilitada de forma predeterminada en Cisco IOS . [ 17 ]

Respuesta de máscara de dirección

La respuesta de máscara de dirección se utiliza para responder a un mensaje de solicitud de máscara de dirección con una máscara de subred adecuada.

Dónde:

  • El tipo debe establecerse en 18.
  • El código debe establecerse en 0.
  • La máscara de direcciones debe configurarse con la máscara de subred.

Destino inalcanzable

El mensaje "Destino inalcanzable" es generado por el host o su puerta de enlace de entrada [ 2 ] para informar al cliente que el destino es inalcanzable por alguna razón. Las razones para este mensaje pueden incluir: la conexión física con el host no existe (la distancia es infinita); el protocolo o puerto indicado no está activo; los datos deben fragmentarse pero la bandera "no fragmentar" está activada. [ 18 ] Los puertos TCP inalcanzables responden notablemente con TCP RST en lugar de un tipo de destino inalcanzable 3, como cabría esperar. El mensaje "Destino inalcanzable" nunca se informa para las transmisiones multicast IP .

Con el siguiente contenido de campo:

Tipo : 8 bits ; Tipo == 3
Un valor de 3 indica que el destino es inaccesible.
Código : 8 bits
Esto especifica el tipo de error y puede ser cualquiera de los siguientes: [ 8 ]
Sin usar : 8 - 32 bits ; Sin usar == 0
Si no se utiliza, debe establecerse en cero. Si no se utilizan la longitud o la MTU del siguiente salto , se consideran parte de este campo.
Longitud : 8 bits
Opcional. El campo Longitud indica la longitud de los datos del datagrama original, en palabras de 32 bits. Esto permite extender este mensaje ICMP con información adicional. Si se utiliza, los datos del datagrama original deben rellenarse con ceros hasta el límite de 32 bits más cercano.
MTU del siguiente salto : 16 bits
Opcional. Contiene la MTU de la red del siguiente salto si se produce un error de código 4.
Encabezado y datos IP : 20 - 568 bytes
El encabezado IP (20 bytes) y, como máximo, 548 bytes del inicio del datagrama original (para no exceder el tamaño mínimo del búfer de reensamblaje IPv4). Si este mensaje se extiende, este campo debe contener al menos 128 bytes de datos del datagrama original (rellenados con ceros si es necesario). Estos datos se incluyen para que el cliente pueda relacionar la respuesta con la solicitud que provocó la respuesta de destino inalcanzable .

Extensiones

Los mensajes ICMP pueden ampliarse con información adicional. Esta información se transporta en uno o más objetos de extensión, que van precedidos de una cabecera de extensión ICMP. [ 19 ]

Versión : 4 bits ; Versión == 2
Versión del encabezado de la extensión.
Reservado : 12 bits ; Reservado == 0
Reservado.
Suma de verificación : 16 bits
Suma de verificación sobre este encabezado y todos los objetos de extensión. Este campo está incluido, por lo que se establece en cero durante el cálculo.

Los objetos de extensión tienen la siguiente estructura general:

Longitud : 16 bits
La longitud del objeto en octetos, incluyendo el encabezado.
Número de clase : 8 bits
Identifica la clase del objeto.
Tipo C : 8 bits
Identifica el subtipo del objeto.
Carga útil del objeto : Variable
Carga útil opcional. Si no está vacía, contiene una estructura de datos cuyo tamaño es un múltiplo de 32 bits.

Véase también

Referencias

  1. 1 2 F. Baker , ed. (junio de 1995). Requisitos para enrutadores IP versión 4. Grupo de trabajo de redes. doi : 10.17487/RFC1812 . RFC 1812 .Norma propuesta. Sustituye a las RFC 1716 y 1009. Actualizada por las RFC 2644 y 6633 .  
  2. 1 2 3 4 5 6 7 8 9 10 11 12 J. Postel (septiembre de 1981). PROTOCOLO DE MENSAJES DE CONTROL DE INTERNET - ESPECIFICACIÓN DEL PROTOCOLO DEL PROGRAMA DE INTERNET DE DARPA . Grupo de Trabajo de Redes. doi : 10.17487/RFC0792 . STD 5. RFC 792 .Estándar de Internet 5. Actualiza RFC 760 , 777 , IEN 109, 128. Actualizado por RFC 950 , 4884 , 6633 y 6918 .  
  3. 1 2 3 4 Forouzan, Behrouz A. (2007). Comunicaciones de datos y redes (Cuarta ed.). Boston: McGraw-Hill. págs. 621–630 . ISBN   978-0-07-296775-3.
  4. A. Conta; S. Deering (marzo de 2006). M. Gupta (ed.). Protocolo de mensajes de control de Internet (ICMPv6) para la especificación del protocolo de Internet versión 6 (IPv6) . Grupo de trabajo de redes. doi : 10.17487/RFC4443 . STD 89. RFC 4443 .Estándar de Internet 89. Deja obsoleto el RFC 2463. Actualiza el RFC 2780. Actualizado por el RFC 4884 .   
  5. "Las siete capas del modelo OSI definidas y sus funciones explicadas" . Soporte de Microsoft . Consultado el 28 de diciembre de 2014 .
  6. "Números de protocolo" . Autoridad de números asignados por Internet . Consultado el 23 de junio de 2011 .
  7. R. Braden ; D. Borman; C. Partridge (septiembre de 1988). Cálculo de la suma de verificación de Internet . Grupo de trabajo de redes. doi : 10.17487/RFC1071 . RFC 1071 .Informativo. Actualizado por RFC 1141 . 
  8. 1 2 3 "Parámetros del Protocolo de mensajes de control de Internet (ICMP)" . IANA. 21 de septiembre de 2012. Recuperado el 7 de enero de 2013 .
  9. Kurose, JF; Ross, KW (2006). Redes informáticas: Un enfoque descendente . Serie mundial para estudiantes. Addison-Wesley. ISBN 9780321418494.
  10. 1 2 F. Gont (mayo de 2012). Desaprobación de los mensajes ICMP Source Quench . Grupo de trabajo de ingeniería de Internet . doi : 10.17487/RFC6633 . ISSN 2070-1721 . RFC 6633 . Norma propuesta. Actualiza los RFC 792 , 1122 y 1812 . 
  11. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 F. Gont; C. Pignataro (abril de 2013). Formally Deprecating Some ICMPv4 Message Types . Internet Engineering Task Force . doi : 10.17487/RFC6918 . ISSN 2070-1721 . RFC 6918 . Norma propuesta. Sustituye a RFC 1788. Actualiza RFC 792 y 950 .  
  12. J. Kempf (julio de 2005). Instrucciones para las asignaciones de Seamoby y del Protocolo de Movilidad Experimental IANA . IETF . doi : 10.17487/RFC4065 . RFC 4065 .Experimental.
  13. 1 2 R. Bonica; R. Thomas; J. Linkova; C. Lenart; M. Boucadair (febrero de 2018). PROBE: Una utilidad para sondear interfaces . Grupo de trabajo de ingeniería de Internet . doi : 10.17487/RFC8335 . ISSN 2070-1721 . RFC 8335 . Estándar propuesto. Actualiza el RFC 4884 . 
  14. 1 2 B. Fenner (noviembre de 2006). Valores experimentales en encabezados IPv4, IPv6, ICMPv4, ICMPv6, UDP y TCP . Grupo de trabajo de redes de la IETF . doi : 10.17487/RFC4727 . RFC 4727 .Norma propuesta.
  15. "¿Cuándo se envían las redirecciones ICMP?" . Cisco Systems . 28-06-2008 . Consultado el 15-08-2013 .
  16. DL Mills (septiembre de 1985). Protocolo de tiempo de red (NTP) . IETF . doi : 10.17487/RFC0958 . RFC 958. Evolucionó a partir del Protocolo de tiempo y el mensaje de marca de tiempo ICMP y es un reemplazo adecuado para ambos .
  17. "Referencia de comandos IP de Cisco IOS, Volumen 1 de 4: Direccionamiento y servicios, Versión 12.3 - Comandos de direccionamiento y servicios IP: ip mask-reply a través de ip web-cache" . Cisco Systems . Archivado del original el 2 de enero de 2013. Consultado el 7 de enero de 2013 .
  18. J. Mogul; S. Deering (noviembre de 1990). Path MTU Discovery . Network Working Group. doi : 10.17487/RFC1191 . RFC 1191 .Proyecto de Norma. Obsoleto RFC 1063 . 
  19. 1 2 R. Bonica; D. Gan; D. Tappan; C. Pignataro (abril de 2007). ICMP extendido para admitir mensajes multipartes . Grupo de trabajo de redes. doi : 10.17487/RFC4884 . RFC 4884 .Estándar propuesto. Actualiza RFC 792 y 4443. Actualizado por RFC 8335 .  
  • Números de protocolo de IANA
  • Explicación del comportamiento de las redirecciones ICMP en Wayback Machine (archivado el 10/01/2015)
Obtenido de " https://en.wikipedia.org/w/index.php?title=Internet_Control_Message_Protocol&oldid=1341912827 "