540 likes | 788 Views
ICMP ( Internet Control Messages Protocol ). Protocolo de mensajes de control de inter red. Juan Carlos Llanos V. Alvin Sepúlveda A. UTFSM Valparaíso, 1999. Introducción. Duplicación de datagramas. Pérdida de datagramas. Retardo o desorden en la entrega de datagramas.
E N D
ICMP( Internet Control Messages Protocol ).Protocolo de mensajes de control de inter red. Juan Carlos Llanos V. Alvin Sepúlveda A. UTFSM Valparaíso, 1999
Introducción • Duplicación de datagramas. • Pérdida de datagramas. • Retardo o desorden en la entrega de datagramas. IP entrega un servicio de comunicación de “mejor esfuerzo”. Esto genera :
Introducción • Si un un router no puede “enrutar” un datagrama (por ej: debido a congestión en la red, tiempo de vida agotado,etc.) IP no informa a la fuente. • Surge la necesidad de informar a la fuente del datagrama que tome alguna decisión .
Introducción Para el control de errores a nivel IP existe ICMP ( Internet Control Messages Protocol ).
¿ Qué es ICMP ? Es un “mecanismo” de reporte de errores e información de la red. Actúa a través deun datagrama de reportede error. Este datagrama de reporte es generado por un router que ha detectado un error en un datagrama recibido. El datagrama de reporte es enviado desde el router hacia el “host fuente” del datagrama original.
Según tipo de error, host determina acción a seguir. Por ej: Volver a enviar datagrama. Host fuente envía un datagrama a host destino. (datagrama “ original ” ) . Host fuente router router Router detecta un error en el datagrama recibido y envía datagrama de reporte de error hacia el host fuente. Según el error, el router decide que hacer con el datagrama recibido. Por ej: destruirlo. Host destino ¡¡ERROR EN DATAGRAMA RECIBIDO. !! router router
Alivio de fuente (Source Quench).Destino inalcanzable (Destination Unreachable).Tiempo excedido (Time Exceeded).Redirigir (Redirect).Fragmentación requerida (Fragmentation Requiered). ¿ Qué mensajes reporta ICMP. ? ICMP define cinco mensajes de error y cuatro de información.
Solicitud de eco (Echo request ). Réplica (Reply). Solicitud de máscara de dirección (Adress Mask Request). Regreso de constestación de máscarade dirección (Adress Mask Reply). ¿ Qué mensajes reporta ICMP. ? ICMP define cinco mensajes de error y cuatro de información.
ICMP usa IP para transportar los mensajes de error. Existe una “interdependencia” entre IP e ICMP.
Transporte de mensajes ICMP. Cabecera ICMP Area de datos ICMP Cabecera IP Area de datos IP Cabecera del Cuadro Area de datos del Cuadro
Cifra de comprobación (Sólo para el mensaje ICMP). Significado del mensaje. Por ejemplo, 0 = Respuesta de eco. 3 = Destino inalcanzable. 4 = Alivio de fuente. 5 = Redirigir, etc. Más detalles respecto del problema. Por ejemplo: 0 = Red inalcanzable. 1 = Host inalcanzable. 4 = Fragmentación requerida, etc. Formato del mensaje ICMP. Con esto, el host fuente identifica qué protocolos y que aplicaciones fueron las que generaron el datagrama. (En capas superiores, los 64 primeros bits son seteados con información crucial). Cabecera IP del datagrama recibido por el router (dir. Ip fuente, destino, tipo de servicio, etc.). 0 16 8 31 Bits de relleno, para completar tamaño del datagrama. Tipo Código Checksum El contenido de este campo varía según el tipo de mensaje. Cabecera interred + primeros 64 bits del datagrama . . .
Alivio de fuente(Source Quench). • Usualmente, el router envía un mensaje ICMP “Quench Source” a las máquinas cuyos datagramas han sido descartados. • Si una máquina recibe un mensaje ICMP “Source Quench”, reduce su tasa de transmisión. Cuando un router satura su buffer, comienza a descartar los paquetes que llegan.
Host reduce su tasa de transmisión. Host fuente envía un datagrama a host destino. (datagrama “ original ” ) . Host fuente router router Router no tiene más espacio en el buffer y envía datagrama de alivio de fuente hacia el host que creó el datagrama. El router descarta los datagramas recibidos hasta que tenga espacio en el buffer. Host destino ¡¡ Buffer lleno. !! router router
Destino inalcanzable (Destination Unreachable). Cuando un router determina que no se puede entregar un datagrama, envía un mensaje ICMP “Destination Unreachable” a la máquina que lo envió. Se entregan detalles adicionales. (Por ej: si una red se desconecta en forma temporal, si el destino está desconectado, si el datagrama debe ser necesariamente fragmentado y su “seteo” no lo permite).
Host determina si reenvía o no el datagrama o espera un tiempo. Host fuente envía un datagrama a host destino. (datagrama “ original ” ) . Host fuente router router Router detecta que no tiene acceso al destino del datagrama recibido y envía datagrama de dirección inalcanzable hacia el host fuente. ¡¡No hay acceso al destino del datagrama. !! Host destino router router
0 = Red inalcanzable. 1 = Host inalcanzable. 2 = Protocolo inalcanzable. 3 = Puerto inalcanzable. 4 = Fragmentación requerida. 5 = Source route failed. 6 = Red de destino desconocida. 7 = Host destino desconocido. 8 = Source host isolated. 9 = Comunicación prohibida con red destino. 10 = Comunicación prohibida con host destino. 11 = Red inalcanzable por tipo de servicio. 12 = Host inalcanzable por tipo de servicio. Formato de Destino inalcanzable
Solicitud de eco (Echo request ).Réplica (Reply). Puede enviarse un mensaje de solicitud de eco al software ICMPdesde cualquier computador. En respuesta a este mensaje, ICMPdebe enviar un mensaje de regreso de contestación. La respuesta lleva los mismos datos que la solicitud.
Solicitud de eco (Echo request ).Réplica (Reply). Utilizando este mensaje ICMP , se ha desarrollado una aplicación llamada “Ping”. Ping permite saber si una máquina o red se encuentra alcanzable. Existen diferentes versiones de Ping. Algunas versiones permiten definir los datos a enviar en el datagrama y cada cuanto tiempo realizar la petición de eco.
Según tipo de respuesta, host sabe si host destino es alcanzable o no. Host fuente hace un “ Ping” a host destino (ping 200.1.17.132) enviando un datagrama. Host fuente router router Host destino envía mensaje de respuesta, con los mismos datos de vuelta (en el area de datos del datagrama). Host destino 200.1.17.132 router router
Formato de Solicitud de eco (Echo request ). Formato de Regreso de constestación (Reply). Identificador y Nº de Secuencia : Identifican al mensaje (sirve cuando se envía una ráfaga de peticiones de eco ). 8 = Solicitud de eco. 0 = Regreso de constetación.
Solicitud de los routers de cambio de ruta Mensaje ICMP redirect Se supone que los routers conocen las rutas correctas; las máquinas comienzan con mínima información de ruteo y aprenden nuevas rutas de los routers. Regla: • La máquina parte conociendo sólo la dirección de un router de la red local. • El router inicial devuelve un mensaje de redirigir cuando el host envía un datagrama para el cual existe una mejor ruta.
Solicitud de los routers de cambio de ruta Mensaje ICMP redirect Los routers sólo envían solicitudes de redirigir a las máquinas Este paquete va para otro lado Cambio de ruta destino fuente
Solicitud de los routers de cambio de ruta Mensaje ICMP redirect Los mensajes de redirigir están limitados a la interacción entre un router y un host conectados ambos en la misma red. Problema: R3 R2 R1 R5 destino fuente R4
Solicitud de los routers de cambio de ruta Mensaje ICMP redirect Formato de cuadro Dirección del router que usa el host para enviar paquetes al destino 0 1 2 3 Redirigir datagramas para la red Redirigir datagramas para el host mensaje redirigir (5) Redirigir datagramas para el tipo de servicio y red Redirigir datagramas para el tipo de servicio y el host 0 16 8 31 Tipo Código Checksum Dirección interred del router Cabecera interred + primeros 64 bits del datagrama . . .
Detección de rutas muy largas o ciclos Mensaje ICMP Time Exceeded tiempo de vida excedido destino fuente Tiempo de vida = 0
Detección de rutas muy largas o circulares Mensaje ICMP Time Exceeded Formato de cuadro Tiempo excedido (11) 0 1 Tiempo de vida excedido Tiempo de reensamble de fragmentos excedido 16 0 8 31 Tipo Código Checksum Sin uso (valor 0) Cabecera interred + primeros 64 bits del datagrama . . .
Reporte de otros problemas Mensaje ICMP Parameter Problem ¿!? Cabecera IP incorrecta destino fuente
Reporte de otros problemas Mensaje ICMP Parameter Problem Formato de cuadro Indica el octeto del datagrama que produjo el error Problema no definido (11) 0 1 Usar el campo puntero Falta un opción requerida 16 0 8 31 Tipo Código Checksum Puntero Sin uso (valor 0) Cabecera interred + primeros 64 bits del datagrama . . .
Sincronización de reloj y estimación de tiempo de tránsito Mensaje ICMP timestamp request / reply mi tiempo de salida del paquete es T3 Procesando paquete mi tiempo de ingreso del paquete es T2 mi tiempo es T4 mi tiempo es T1 fuente destino
Lo usa la fuente para asociar respuestas con preguntas Lo usa la fuente para asociar respuestas con preguntas Sincronización de reloj y estimación de tiempo de tránsito Mensaje ICMP timestamp request / reply Formato de cuadro tiempo justo luego de recibir el paquete (destino) marca de tiempo 13 14 tiempo justo antes de devolver el paquete (destino) tiempo justo antes de enviar el paquete (fuente) solicitud respuesta 16 0 8 31 Tipo Código (0) Checksum Identificador Número de secuencia Timestamp de origen Timestamp de recepción Timestamp de transmisión
Sincronización de reloj y estimación de tiempo de tránsito Mensaje ICMP timestamp request / reply Aspectos gererales Los valores de los campos de tiempo están expresados de acuerdo al referente GMT y en [ms]. Para obtener una estimación apropiada del retardo en la red, se deben efectuar varias mediciones. El retardo entre dos máquinas conectadas a una gran interred puede variar drásticamente, incluso en períodos cortos de tiempo. Debido a que IP hace su “mejor esfuerzo”, nada garantiza que una consistencia entre las diversas mediciones de los tiempos de retardo. Se usa anáisis estadístico para precisar las estimaciones.
Solicitud y Respuesta de información Mensaje ICMP information request / reply Los mensajes de solicitud (15) y respuesta (16) de información están obsoletos. Estos mensajes estaban pensados para que el host pudiera conocer su direccion IP al momento de arrancar Actualmente, esto se hace con los protocolos RARP y BOOTP.
Obtención de una máscara de subred Mensaje ICMP address mask request / reply La máscara de mi red es 255.255.255.128 ICMP address mask reply 200.1.17.130
Obtención de una máscara de subred Mensaje ICMP address mask request / reply Formato de cuadro Máscara 17 18 solicitud respuesta 16 0 8 31 Tipo Código (0) Checksum Identificador Número de secuencia Dirección de máscara (sólo en respuesta)
Aplicación: /usr/sbin/icmpinfo Procesos corridos en consola linux de lucas rce-20:~ # ping loa.alumnos.utfsm.cl PING loa.alumnos.utfsm.cl (146.83.198.9): 56 data bytes 64 bytes from 146.83.198.9: icmp_seq=0 ttl=252 time=3.3 ms 64 bytes from 146.83.198.9: icmp_seq=1 ttl=253 time=2.0 ms 64 bytes from 146.83.198.9: icmp_seq=2 ttl=253 time=2.0 ms --- loa.alumnos.utfsm.cl ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 2.0/2.4/3.3 ms rce-20:~ #
Aplicación: /usr/sbin/icmpinfo Salida de icmpinfo en pantalla rce-20:~ # icmpinfo -vv icmpinfo: Icmp monitoring in progress... Sep 23 17:26:11 ICMP_Echo_Reply < 146.83.198.9 [loa.alumnos.utfsm.cl] sz=64(+20) Sep 23 17:26:12 ICMP_Echo_Reply < 146.83.198.9 [loa.alumnos.utfsm.cl] sz=64(+20) Sep 23 17:26:13 ICMP_Echo_Reply < 146.83.198.9 [loa.alumnos.utfsm.cl] sz=64(+20)
Aplicación: /usr/sbin/icmpinfo Procesos corridos en consola linux de lucas rce-20:~ # traceroute loa.alumnos.utfsm.cl traceroute to loa.alumnos.utfsm.cl (146.83.198.9), 30 hops max, 40 byte packets 1 alm-gw.elo.utfsm.cl (200.1.17.129) 2.233 ms 1.698 ms 0.635 ms 2 elo-gw.utfsm.cl (200.1.17.1) 1.278 ms 1.603 ms 1.991 ms 3 loa.alumnos.utfsm.cl (146.83.198.9) 3.365 ms * 3.834 ms rce-20:~ #
Aplicación: /usr/sbin/icmpinfo Salida de icmpinfo en pantalla icmpinfo: Icmp monitoring in progress... Sep 23 18:14:33 ICMP_Time_Exceeded < 200.1.17.129 [alm-gw.elo.utfsm.cl] > 146.83.198.9[loa.alumnos.utfsm.cl] sp=55169 dp=33435 seq=0x0014d86f sz=68(+20) Sep 23 18:14:33 ICMP_Time_Exceeded < 200.1.17.129 [alm-gw.elo.utfsm.cl] > 146.83.198.9[loa.alumnos.utfsm.cl] sp=55169 dp=33436 seq=0x0014ff70 sz=68(+20) Sep 23 18:14:34 ICMP_Time_Exceeded < 200.1.17.129 [alm-gw.elo.utfsm.cl] > 146.83.198.9[loa.alumnos.utfsm.cl] sp=55169 dp=33437 seq=0x00143368 sz=68(+20) Sep 23 18:14:34 ICMP_Time_Exceeded < 200.1.17.1 [elo-gw.utfsm.cl] > 146.83.198.9 [loa.alumnos.utfsm.cl] sp=55169 dp=33438 seq=0x00145261 sz=36(+20)
Aplicación: /usr/sbin/icmpinfo Salida de icmpinfo en pantalla Sep 23 18:14:34 ICMP_Time_Exceeded < 200.1.17.1 [elo-gw.utfsm.cl] > 146.83.198.9 [loa.alumnos.utfsm.cl] sp=55169 dp=33439 seq=0x0014e2ff sz=36(+20) Sep 23 18:14:34 ICMP_Time_Exceeded < 200.1.17.1 [elo-gw.utfsm.cl] > 146.83.198.9 [loa.alumnos.utfsm.cl] sp=55169 dp=33440 seq=0x001462f7 sz=36(+20) Sep 23 18:14:34 ICMP_Dest_Unreachable[Port] < 146.83.198.9 [loa.alumnos.utfsm.cl] > 146.83.198.9 [loa.alumnos.utfsm.cl] sp=55169 dp=33441 seq=0x001442eb sz=48(+20) Sep 23 18:14:39 ICMP_Dest_Unreachable[Port] < 146.83.198.9 [loa.alumnos.utfsm.cl] > 146.83.198.9 [loa.alumnos.utfsm.cl] sp=55169 dp=33443 seq=0x0014bc64 sz=48(+20)
Aplicación: /usr/sbin/icmpinfo Proceso corridos en consola linux de lucas rce-20:~ # ftp ftp> o (to) ftp.aol.com ftp: connect to address 205.188.176.163: No route to host ftp> quit rce-20:~ # Salida de icmpinfo en pantalla Sep 23 17:16:42 ICMP_Dest_Unreachable[--Sub-Type-OUT-OF-RANGE--] < 146.83.198.1[utfsm-gw.utfsm.cl] > 205.188.176.166 [ftp15d.newaol.com] sp=2052 dp=21 seq=0x87b60824 sz=36(+20)
Aplicación: /usr/sbin/icmpinfo Proceso corridos en consola linux de lucas rce-20:~ # netscape Salida de icmpinfo en pantalla rce-20:~ # icmpinfo -vvv icmpinfo: Icmp monitoring in progress... Sep 23 18:24:13 ICMP_Dest_Unreachable[--Sub-Type-OUT-OF-RANGE--] < 146.83.198.1 [utfsm-gw.utfsm.cl] > 194.112.123.200 [Turing.suse.de] sp=8964 dp=80 seq=0x8708b9a2 sz=36(+20) 0000 : 4500 0038 6044 0000 FD01 2B8A 9253 C601 E..8`D....+..S.. 0010 : C801 11A0 030D B7D4 0000 0000 4500 003C ............E..< 0020 : 4AEA 4000 J.@.
Código del paquete icmpinfo-1.10 linux_ip_icmp.h Define una estructura con los campos de la trama de icmp struct icmp { u_char icmp_type; /* type of message, see below */ u_char icmp_code; /* type sub code */ u_short icmp_cksum; /* ones complement cksum of struct */ union { u_char ih_pptr; /* ICMP_PARAMPROB */ struct in_addr ih_gwaddr; /* ICMP_REDIRECT */ struct ih_idseq { n_short icd_id; n_short icd_seq; } ih_idseq; int ih_void; } icmp_hun;
Código del paquete icmpinfo-1.10 linux_ip_icmp.h Además define una estructura para el header del datagrama IP. Incluye los #define para asignar un número decimal a los distintos tipos de mensajes ICMP defs.h Lleva los #includes, #defines y variables globales usadas entre por la funciones del programa
Código del paquete icmpinfo-1.10 recvping.c Recibe e imprime cada paquete ICMP que llega al socket al cual el programa esta “escuchando”. print.c Muestra los paquetes ICMP entrantes. Analiza la cabecera IP, para conocer el largo del datagrama Verifica que lo que sigue la cabecera IP contenga al menos un cabecera ICMP Se encarga de convertir los caracteres no imprimibles de la representación ASCII del paquete para desplegarlos en pantalla
Código del paquete icmpinfo-1.10 icmpinfo.c Este programa establece el formato de la interfaz con el usuario. Muestra y selecciona las opciones para ejecutar el proceso y genera la página de ayuda. err.c Reporta error si es que el usuario tuvo una falla en la sintaxis
Conclusiones. ICMP es un mecanismo de reporte de errores a nivel de capa IP. Los mensajes ICMP se transportan como simples datagramas. Además de reportar errores, tambíen entrega información de la red. Corresponde a los routers enviar el datagrama ICMP al host fuente del datagrama “original” donde fué detectado el error.
Conclusiones. Utlizando e interpretando los mensajes ICMP, se han desarrollado aplicaciones que entregan información del estado de la red. Ej: ping, icmpinfo, traceroute (utiliza los mensajes de tiempo exedido para encontrar la secuencia de enrutadores a distancia 1, 2,3, etc. , de la trayectoria de un destino), etc. Por último, se puede decir que los host pueden utilizar los mensajes ICMP de fragmentación requerida para determinar la MTU (tamaño máximo del paquete) de trayectoria de un destino.
Bibliografía. Internetworking with TCP/IP Comer, Douglas. Volume I: Principles, Protocols and Architecture. 3era Edición. Redes de Computadoras, Internet e Interredes. Comer, Douglas. Primera edición. Ed. Prentice Hall. Redes de Computadores. Tannenbaum, Andrew.