Protocolo de mensajes de control de Internet
El Protocolo de mensajes de control de Internet (ICMP) es un protocolo de soporte en el conjunto de protocolos de Internet. Los dispositivos de red, incluidos los enrutadores, lo utilizan 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 que un host o enrutador no pudo ser alcanzado. ICMP se diferencia de los protocolos de transporte como TCP y UDP en que normalmente no se usa para intercambiar datos entre sistemas, ni las aplicaciones de red del usuario final lo emplean regularmente (con la excepción de algunas herramientas de diagnóstico como ping y traceroute).
ICMP para IPv4 se define en RFC 792. Se usa un ICMPv6 separado, definido por RFC 4443, con IPv6.
Detalles técnicos
ICMP forma parte del conjunto de protocolos de Internet, tal como se define en 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 de IP (como se especifica en RFC 1122). Los errores de ICMP se dirigen a la dirección IP de origen del paquete de origen.
Por ejemplo, cada dispositivo (como un enrutador intermedio) que reenvía un datagrama IP primero reduce el campo de tiempo de vida (TTL) en el encabezado IP en uno. Si el TTL resultante es 0, el paquete se descarta y se envía un mensaje ICMP de tiempo excedido en tránsito 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 mediante la transmisión de datagramas IP con campos de encabezado IP TTL especialmente configurados y buscando el tiempo ICMP excedido en tránsito y los mensajes de Destino inalcanzable generados en respuesta. La utilidad de ping relacionada se implementa utilizando los mensajes ICMP echo request y echo answer.
ICMP utiliza el soporte básico de IP como si fuera un protocolo de nivel superior; sin embargo, ICMP es en realidad una parte integral de IP. Aunque los mensajes ICMP están contenidos en paquetes IP estándar, los mensajes ICMP generalmente se procesan como un caso especial, que se distingue 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 solicitó el envío del mensaje ICMP.
ICMP es un protocolo de capa de red. No hay un número de puerto TCP o UDP asociado con los paquetes ICMP, ya que estos números están asociados con la capa de transporte anterior.
Estructura de datagrama
El paquete ICMP está encapsulado en un paquete IPv4. El paquete consta de secciones de encabezado y datos.
Encabezado
El encabezado ICMP comienza después del encabezado IPv4 y se identifica con el número de protocolo IP '1'. Todos los paquetes ICMP tienen un encabezado de 8 bytes y una sección de datos de tamaño variable. Los primeros 4 bytes del encabezado tienen un formato fijo, mientras que los últimos 4 bytes dependen del tipo/código de ese paquete ICMP.
Offsets | Octet | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Octet | Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
0 | 0 | Tipo | Código | Checksum | |||||||||||||||||||||||||||||
4 | 32 | Descanso de cabecera |
- Tipo
- ICMP type, see § Control messages.
- Código
- Subtipo ICMP, ver § Mensajes de control.
- Checksum
- Internet checksum (RFC 1071) for error check, calculated from the ICMP header and data with value 0 replacedd for this field.
- Descanso de cabecera
- Campo de cuatro bytes, los contenidos varían 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 del encabezado IPv4 completo, además de al menos los primeros ocho bytes de datos del paquete IPv4 que provocó el mensaje de error. La longitud de los mensajes de error ICMP no debe exceder los 576 bytes. El host utiliza estos datos para hacer coincidir el mensaje con el proceso adecuado. Si un protocolo de nivel superior utiliza números de puerto, se supone que se encuentran en los primeros ocho bytes de los datos del datagrama original.
Se ha explotado el tamaño variable de la sección de datos del paquete ICMP. En el "Ping de la muerte", los paquetes ICMP grandes o fragmentados se utilizan para ataques de denegación de servicio. Los datos ICMP también se pueden utilizar para crear canales encubiertos para la comunicación. Estos canales se conocen como túneles ICMP.
Mensajes de control
Los mensajes de control se identifican por el valor en el campo tipo. El campo código proporciona información de contexto adicional para el mensaje. Algunos mensajes de control han quedado obsoletos desde que se introdujo el protocolo por primera vez.
Tipo | Código | Situación | Descripción |
---|---|---|---|
0 – Echo Responder | 0 | Respuesta ecológica (utilizada para ping) | |
1 y 2 | no asignados | Reservado | |
3 – Destino no alcanzable | 0 | Red de destino inalcable | |
1 | Destino host inalcanzable | ||
2 | Protocolo de destino no accesible | ||
3 | Puerto de destino no accesible | ||
4 | Fragmentación requerida, y conjunto de bandera DF | ||
5 | La ruta de origen falló | ||
6 | Red de destino desconocida | ||
7 | Destino anfitrión desconocido | ||
8 | Fuente host isolated | ||
9 | Red administrativamente prohibida | ||
10 | Host administratively prohibited | ||
11 | Network unreachable for ToS | ||
12 | Host unreachable para ToS | ||
13 | Comunicación prohibida administrativamente | ||
14 | Violación de la Precedencia Anfitriona | ||
15 | Corte de precedencia en efecto | ||
4 – Fuente Quench | 0 | Quench fuente (control de congestión) | |
5 – Mensaje redirigido | 0 | Redirect Datagram for the Network | |
1 | Redirect Datagram for the Host | ||
2 | Redirect Datagram para la red ToS | ||
3 | Redirect Datagram para el host ToS | ||
6 | Alternate Host Address | ||
7 | no asignados | Reservado | |
8 – Solicitud de Eco | 0 | Solicitud de Eco (utilizado para ping) | |
9 – Router Anuncio | 0 | Router Anuncio | |
10 - Convocatoria de Router | 0 | Explorador/selección/solicitación | |
11 – Tiempo transcurrido | 0 | TTL venció en tránsito | |
1 | Fragment reassembly time exceeded | ||
12 - Parámetro Problema: mala cabecera IP | 0 | Pointer indica el error | |
1 | Falta una opción necesaria | ||
2 | Longitud mala | ||
13 – Timestamp | 0 | Timestamp | |
14 – Timestamp Responder | 0 | Respuesta de Timestamp | |
15 – Solicitud de información | 0 | Solicitud de información | |
16 – Información Responder | 0 | Información | |
17 – Solicitud de Máscara de Dirección | 0 | Address Mask Request | |
18 – Dirección Mask Responder | 0 | Address Mask Responder | |
19 | reservadas | Reservado para la seguridad | |
20 a 29 | reservadas | Reservado para experimento de robustez | |
30 – Traceroute | 0 | Solicitud de información | |
31 | Error de conversión de datagramas | ||
32 | Mobile Host Redirect | ||
33 | Where-Are-You (originally meant for IPv6) | ||
34 | Here-I-Am (originally meant for IPv6) | ||
35 | Solicitud de registro móvil | ||
36 | Mobile Registration Responder | ||
37 | Solicitud de nombre de dominio | ||
38 | Domain Name Responder | ||
39 | SKIP Algorithm Discovery Protocol, Simple Key-Management for Internet Protocol | ||
40 | Photuris, fallas de seguridad | ||
41 | Experimental | ICMP for experimental mobility protocols such as Seamoby [RFC4065] | |
42 – Extensión de Eco | 0 | Solicitud Extended Echo (XPing - ver Extended Ping (Xping)) | |
43 – Extended Echo Responder | 0 | No Error | |
1 | Malformed Query | ||
2 | No tal interfaz | ||
3 | No. | ||
4 | Múltiples interfaces Satisfy Query | ||
44 a 252 | no asignados | Reservado | |
253 | Experimental | Experimento de estilo RFC3692 1 (RFC 4727) | |
254 | Experimental | Experimento de estilo RFC3692 2 (RFC 4727) | |
255 | reservadas | Reservado |
Extinción de fuente
Source Quench solicita que el remitente disminuya la tasa de mensajes enviados a un enrutador o host. Este mensaje se puede generar si un enrutador o host no tiene suficiente espacio de búfer para procesar la solicitud, o puede aparecer si el enrutador o el búfer de host se acercan a su límite.
Los datos se envían a una velocidad muy alta desde un host o desde varios hosts al mismo tiempo a un enrutador particular en una red. Aunque un enrutador tiene capacidades de almacenamiento en búfer, el almacenamiento en búfer está limitado dentro de un rango específico. El enrutador no puede poner en cola más datos que la capacidad del espacio de almacenamiento intermedio limitado. Por lo tanto, si la cola se llena, los datos entrantes se descartan hasta que la cola ya no esté llena. Pero como no existe un mecanismo de reconocimiento en la capa de red, el cliente no sabe si los datos han llegado al destino con éxito. Por lo tanto, la capa de red debe tomar algunas medidas correctivas para evitar este tipo de situaciones. Estas medidas se denominan extinción de la fuente. En un mecanismo de apagado de fuente, el enrutador ve que la velocidad de datos entrantes es mucho más rápida que la velocidad de datos salientes y envía un mensaje ICMP a los clientes, informándoles que deben reducir la velocidad de transferencia de datos o esperar una cierta cantidad de datos. tiempo antes de intentar enviar más datos. Cuando un cliente recibe este mensaje, reducirá automáticamente la velocidad de los datos salientes o esperará una cantidad de tiempo suficiente, lo que permite que el enrutador vacíe la cola. Por lo tanto, el mensaje ICMP de extinción de origen actúa como control de flujo en la capa de red.
Dado que la investigación sugirió que "ICMP Source Quench [era] un antídoto ineficaz (e injusto) para la congestión", los enrutadores' la creación de mensajes de extinción de origen quedó obsoleta en 1995 por RFC 1812. Además, el reenvío y cualquier tipo de reacción a los mensajes de extinción de fuente (acciones de control de flujo) quedó obsoleto a partir de 2012 por RFC 6633.
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 | Checksum | |||||||||||||||||||||||||||||
no utilizados | |||||||||||||||||||||||||||||||
encabezado IP y primeros 8 bytes de datos originales de datagram |
Dónde:
- Tipo debe establecerse en 4
- Código debe establecerse en 0
- Cabecera IP y los datos adicionales son utilizados por el remitente para coincidir con la respuesta con la solicitud asociada
Redireccionar
Redirect solicita que los paquetes de datos se envíen por una ruta alternativa. ICMP Redirect es un mecanismo para que los enrutadores transmitan información de enrutamiento a los hosts. El mensaje informa a un host que actualice su información de enrutamiento (para enviar paquetes en una ruta alternativa). Si un host intenta enviar datos a través de un enrutador (R1) y R1 envía los datos a otro enrutador (R2) y hay disponible una ruta directa del host a R2 (es decir, el host y R2 están en la misma subred), luego, R1 enviará un mensaje de redirección para informar al host que la mejor ruta para el destino es a través de R2. Luego, el host debe cambiar su información de ruta y enviar paquetes para ese destino directamente a R2. El enrutador seguirá enviando el datagrama original al destino previsto. Sin embargo, si el datagrama contiene información de enrutamiento, este mensaje no se enviará incluso si hay disponible una ruta mejor. RFC 1122 establece que los redireccionamientos solo deben ser enviados por puertas de enlace y no deben ser enviados por hosts de Internet.
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 | Checksum | |||||||||||||||||||||||||||||
Dirección IP | |||||||||||||||||||||||||||||||
encabezado IP y primeros 8 bytes de datos originales de datagram |
Dónde:
- Tipo debe establecerse a 5.
- Código especifica la razón de la redirección, y puede ser uno de los siguientes:
Código Descripción 0 Redirect for Network 1 Redirect for Host 2 Redirección para el tipo de servicio y red 3 Redirección para el tipo de servicio y host
- Dirección IP es la dirección de 32 bits de la entrada a la que debe enviarse la redirección.
- Cabecera IP y se incluyen datos adicionales para permitir que el anfitrión coincida con la respuesta con la solicitud que causó la respuesta de la redirección.
Tiempo excedido
Tiempo excedido es generado por una puerta de enlace para informar a la fuente de un datagrama descartado debido a que el campo de tiempo de vida llegó a cero. Un host también puede enviar un mensaje de tiempo excedido si no puede volver a ensamblar un datagrama fragmentado dentro de su límite de tiempo.
Los mensajes de tiempo excedido son utilizados por la utilidad traceroute para identificar puertas de enlace en la ruta entre dos hosts.
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 | Checksum | |||||||||||||||||||||||||||||
no utilizados | |||||||||||||||||||||||||||||||
encabezado IP y primeros 8 bytes de datos originales de datagram |
Dónde:
- Tipo debe establecerse en 11
- Código especifica la razón de la tiempo excedido El mensaje incluye lo siguiente:
Código Descripción 0 Tiempo a vida excedido en tránsito. 1 Fragment reassembly time exceeded.
- Cabecera IP y los primeros 64 bits de la carga útil original son utilizados por el host fuente para igualar el tiempo excedido mensaje al datagrama descartado. Para protocolos de alto nivel como UDP y TCP la carga útil de 64 bits incluirá los puertos fuente y destino del paquete descartado.
Marca de tiempo
Timestamp se utiliza para la sincronización de tiempo. La marca de tiempo de origen se establece en la hora (en milisegundos desde la medianoche) en que el remitente tocó el paquete por última vez. Las marcas de tiempo de recepción y transmisión no se utilizan.
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 | Checksum | |||||||||||||||||||||||||||||
Identifier | Número de secuencia | ||||||||||||||||||||||||||||||
Origen timetamp | |||||||||||||||||||||||||||||||
Recibido timetamp | |||||||||||||||||||||||||||||||
Transmisión timetamp |
Dónde:
- Tipo debe establecerse en 13
- Código debe establecerse en 0
- Identifier y Número de secuencias puede ser utilizado por el cliente para que coincida con la respuesta timetamp con la petición timestamp.
- Timetamp originario es el número de milisegundos desde la medianoche Hora Universal (UT). Si una referencia UT no está disponible el bit más significativo se puede establecer para indicar un valor de tiempo no estándar.
Respuesta de marca de tiempo
Respuesta de marca de tiempo responde a un mensaje de Marca de tiempo. Consiste en la marca de tiempo de origen enviada por el remitente de la Marca de tiempo, así como una marca de tiempo de recepción que indica cuándo se recibió la Marca de tiempo y una marca de tiempo de transmisión que indica cuándo se recibió la Marca de tiempo. se envió la respuesta.
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 | Checksum | |||||||||||||||||||||||||||||
Identifier | Número de secuencia | ||||||||||||||||||||||||||||||
Origen timetamp | |||||||||||||||||||||||||||||||
Recibido timetamp | |||||||||||||||||||||||||||||||
Transmisión timetamp |
Dónde:
- Tipo debe establecerse en 14
- Código debe establecerse en 0
- Identifier y Número de secuencia puede ser utilizado por el cliente para igualar la respuesta con la solicitud que causó la respuesta.
- Timetamp originario es el momento en que el remitente tocó el mensaje antes de enviarlo.
- Recibir horarios es el momento en que el ecor lo tocó primero en la recepción.
- Transmitir tiempostamp es el momento en que el ecor ultimo tocó el mensaje en el envío.
- Todos los tiempos están en unidades de milisegundos desde la medianoche UT. Si el tiempo no está disponible en milisegundos o no se puede proporcionar con respecto a la medianoche UT entonces cualquier tiempo puede ser insertado en un timetamp siempre que el bit de alta orden del tiempo también se establece para indicar 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.
Solicitud de máscara de dirección
Lasolicitud de máscara de dirección normalmente la envía un host a un enrutador para obtener una máscara de subred adecuada.
Los destinatarios deben responder a este mensaje con un mensaje de respuesta de máscara de direcció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 = 17 | Código = 0 | Checksum | |||||||||||||||||||||||||||||
Identifier | Número de secuencia | ||||||||||||||||||||||||||||||
Máscara de dirección |
Dónde:
- Tipo debe ser fijado a 17
- Código debe establecerse en 0
- Máscara de dirección se puede configurar en 0
La solicitud de máscara de dirección ICMP se puede utilizar como parte de un ataque de reconocimiento para recopilar información sobre la red de destino, por lo tanto, la respuesta de máscara de dirección ICMP está desactivada de manera predeterminada en Cisco IOS.
Respuesta de máscara de dirección
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.
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 | Checksum | |||||||||||||||||||||||||||||
Identifier | Número de secuencia | ||||||||||||||||||||||||||||||
Máscara de dirección |
Dónde:
- Tipo debe ser fijado a 18
- Código debe establecerse en 0
- Máscara de dirección debe establecerse en la máscara subnet
Destino inalcanzable
Destino inalcanzable es generado por el host o su puerta de enlace de entrada para informar al cliente que el destino es inalcanzable por algún motivo. Las razones de este mensaje pueden incluir: la conexión física al host no existe (la distancia es infinita); el protocolo o puerto indicado no está activo; los datos deben estar fragmentados pero el 'no fragmentar' la bandera está encendida. Los puertos TCP inalcanzables responden notablemente con TCP RST en lugar de un destino inalcanzable tipo 3 como se podría esperar. Destino inalcanzable nunca se informa para transmisiones de multidifusión IP.
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 | Checksum | |||||||||||||||||||||||||||||
no utilizados | Next-hop MTU | ||||||||||||||||||||||||||||||
encabezado IP y primeros 8 bytes de datos originales de datagram |
Dónde:
- Tipo campo (bits 0-7) debe establecerse en 3
- Código campo (bits 8-15) se utiliza para especificar el tipo de error, y puede ser cualquiera de los siguientes:
Código Descripción 0 Error inalcanzable de red. 1 Recibir un error inalcanzable. 2 Error inalcanzable del protocolo (no se admite el protocolo de transporte designado). 3 Error inalcanzable de Puerto (el protocolo designado no puede informar al anfitrión del mensaje entrante). 4 El datagrama es demasiado grande. La fragmentación del paquete es necesaria pero la bandera 'no fragmentar' (DF) está encendida. 5 La ruta de origen falló el error. 6 Red de destino error desconocido. 7 Destino host desconocido error. 8 Fuente host error aislado. 9 La red de destino está prohibida administrativamente. 10 El host de destino está prohibido administrativamente. 11 La red no es accesible para el tipo de servicio. 12 El host es inalcanzable para el tipo de servicio. 13 La comunicación está prohibida administrativamente (el filtrado administrativo impide el envío de paquetes). 14 Violación de la precedencia del huésped (indica la precedencia solicitada no está permitida para la combinación de host o red y puerto). 15 El corte de precedencia en efecto (la precedencia de datagrama está por debajo del nivel establecido por los administradores de la red).
- Next-hop MTU campo (bits 48–63) contiene el MTU de la red de próxima salida si se produce un error de código 4.
- Cabecera IP y se incluyen datos adicionales para permitir que el cliente coincida con la respuesta con la solicitud que causó la respuesta inalcanzable del destino.
Contenido relacionado
Energía renovable
Tipo verdadero
Gregorio Chaitin