Title: ICMP%20(%20Internet%20Control%20Messages%20Protocol%20).%20%20Protocolo%20de%20mensajes%20de%20control%20de%20inter%20red.
1ICMP ( Internet Control Messages Protocol ).
Protocolo de mensajes de control de inter red.
- Juan Carlos Llanos V.
- Alvin Sepúlveda A.
- UTFSM
- Valparaíso, 1999
2Introducción
- IP entrega un servicio de comunicación de mejor
esfuerzo. Esto genera
- Duplicación de datagramas.
- Pérdida de datagramas.
- Retardo o desorden en la entrega de datagramas.
3Introducció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 .
4Introducción
Para el control de errores a nivel IP existe
ICMP ( Internet Control Messages Protocol ).
5 Qué es ICMP ?
- Es un mecanismo de reporte de errores e
información de la red. - Actúa a través de un datagrama de reporte de
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.
6 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
7 Qué mensajes reporta ICMP. ?
- ICMP define cinco mensajes de error y cuatro de
información.
8 Qué mensajes reporta ICMP. ?
- ICMP define cinco mensajes de error y cuatro de
información.
9- ICMP usa IP para transportar los mensajes de
error. - Existe una interdependencia entre IP e ICMP.
10Transporte de mensajes ICMP.
Area de datos ICMP
Cabecera ICMP
Area de datos IP
Cabecera IP
Area de datos del Cuadro
Cabecera del Cuadro
11Cifra 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
. . .
12Alivio de fuente (Source Quench).
- Cuando un router satura su buffer, comienza a
descartar los paquetes que llegan.
- 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.
13 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
14Formato de Alivio de fuente (Source Quench).
15Destino 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).
16 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
17Formato de Destino inalcanzable
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.
18Solicitud de eco (Echo request ).Réplica
(Reply).
- Puede enviarse un mensaje de solicitud de eco al
software ICMP desde cualquier computador. - En respuesta a este mensaje, ICMP debe enviar un
mensaje de regreso de contestación. - La respuesta lleva los mismos datos que la
solicitud.
19Solicitud 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.
20 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
21 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.
22Solicitud 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.
23Solicitud 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
24Solicitud 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
25Solicitud 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
. . .
26Detección de rutas muy largas o ciclos
Mensaje ICMP Time Exceeded
tiempo de vida excedido
destino
fuente
Tiempo de vida 0
27Detecció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
. . .
28Reporte de otros problemas
Mensaje ICMP Parameter Problem
!?
Cabecera IP incorrecta
destino
fuente
29Reporte 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
Sin uso (valor 0)
Puntero
Cabecera interred primeros 64 bits del datagrama
. . .
30Sincronizació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
31Sincronizació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
32Sincronizació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.
33Solicitud 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.
34Obtenció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
35Obtenció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)
36Aplicació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_seq0 ttl252 time3.3 ms
64 bytes from 146.83.198.9 icmp_seq1
ttl253 time2.0 ms 64 bytes
from 146.83.198.9 icmp_seq2 ttl253 time2.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
37Aplicación /usr/sbin/icmpinfo
Salida de icmpinfo en pantalla
rce-20 icmpinfo -vv
icmpinfo Icmp monitoring in
progress... Sep 23
172611 ICMP_Echo_Reply lt 146.83.198.9
loa.alumnos.utfsm.cl sz64(20)
Sep 23 172612 ICMP_Echo_Reply lt
146.83.198.9 loa.alumnos.utfsm.cl sz64(20)
Sep 23
172613 ICMP_Echo_Reply lt 146.83.198.9
loa.alumnos.utfsm.cl sz64(20)
38Aplicació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
39Aplicación /usr/sbin/icmpinfo
Salida de icmpinfo en pantalla
icmpinfo Icmp monitoring in progress...
Sep 23
181433 ICMP_Time_Exceeded lt 200.1.17.129
alm-gw.elo.utfsm.cl gt
146.83.198.9loa.alumnos.utfsm.cl sp55169
dp33435 seq0x0014d86f sz68(20)
Sep 23 181433 ICMP_Time_Exceeded lt
200.1.17.129
alm-gw.elo.utfsm.cl gt 146.83.198.9loa.alumnos.u
tfsm.cl sp55169 dp33436 seq0x0014ff70
sz68(20) Sep 23
181434 ICMP_Time_Exceeded lt 200.1.17.129
alm-gw.elo.utfsm.cl gt
146.83.198.9loa.alumnos.utfsm.cl sp55169
dp33437 seq0x00143368 sz68(20)
Sep 23 181434
ICMP_Time_Exceeded lt 200.1.17.1
elo-gw.utfsm.cl gt 146.83.198.9
loa.alumnos.utfsm.cl sp55169 dp33438
seq0x00145261 sz36(20)
40Aplicación /usr/sbin/icmpinfo
Salida de icmpinfo en pantalla
Sep 23 181434 ICMP_Time_Exceeded lt 200.1.17.1
elo-gw.utfsm.cl gt 146.83.198.9
loa.alumnos.utfsm.cl sp55169 dp33439
seq0x0014e2ff sz36(20)
Sep 23 181434
ICMP_Time_Exceeded lt 200.1.17.1
elo-gw.utfsm.cl gt 146.83.198.9
loa.alumnos.utfsm.cl sp55169 dp33440
seq0x001462f7 sz36(20)
Sep 23 181434
ICMP_Dest_UnreachablePort lt 146.83.198.9
loa.alumnos.utfsm.cl gt 146.83.198.9
loa.alumnos.utfsm.cl sp55169 dp33441
seq0x001442eb sz48(20)
Sep 23 181439 ICMP_Dest_UnreachablePort
lt 146.83.198.9 loa.alumnos.utfsm.cl gt
146.83.198.9 loa.alumnos.utfsm.cl sp55169
dp33443 seq0x0014bc64 sz48(20)
41Aplicación /usr/sbin/icmpinfo
Proceso corridos en consola linux de lucas
rce-20 ftp
ftpgt o
(to) ftp.aol.com
ftp connect
to address 205.188.176.163 No route to host ftpgt
quit rce-20
Salida de icmpinfo en pantalla
Sep 23 171642 ICMP_Dest_Unreachable--Sub-Type-O
UT-OF-RANGE-- lt 146.83.198.1utfsm-gw.utfsm.cl
gt 205.188.176.166 ftp15d.newaol.com sp2052
dp21 seq0x87b60824 sz36(20)
42Aplicació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 182413
ICMP_Dest_Unreachable--Sub-Type-OUT-OF-RANGE--
lt 146.83.198.1 utfsm-gw.utfsm.cl gt
194.112.123.200 Turing.suse.de sp8964 dp80
seq0x8708b9a2 sz36(20)
0000 4500 0038 6044 0000 FD01
2B8A 9253 C601 E..8D......S..
0010 C801 11A0 030D B7D4 0000 0000 4500
003C ............E..lt
0020
4AEA 4000 J._at_.
43Có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
44Có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
45Có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
46Có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
47Conclusiones.
- 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. -
48Conclusiones.
- 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.
49Bibliografí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.