Sesión de prácticas número 12
Días 3/6 y 5/6
Contenidos:
El primer datagrama se envía con TTL=1, esto quiere decir que el primer router al que se entrega lo decrementará a 0 y no lo reenviará, devolviendo a la máquina origen del datagrama un error ICMP de tiempo excedido en tránsito. Este paquete ICMP tiene en su cabecera IP como dirección origen la dirección IP del interfaz del router por el que éste lo envía (tenga en cuenta que el router es el origen del paquete, no lo está reenviando) y como IP destino la del host, es decir, la que venía como dirección origen en el paquete que se ha tirado. Al recibir este paquete el host origen sabe cuál es la dirección IP de ese interfaz del router.
El siguiente datagrama se envía con TTL=2, entonces el primer router lo decrementará a 1 y lo reenviará y será el segundo router el que lo deseche y devuelva un ICMP de error, con lo que ya se tiene la dirección del segundo router. El proceso continúa hasta que el TTL empleado es lo suficientemente grande para que el datagrama alcance al host destino, momento en el cual ya se tienen las direcciones de todos los routers en el camino.
Veamos un ejemplo:
Desde la máquina tlm14 (u otra cualquiera que tenga como router por defecto a 1.1.1.1) ejecutamos:
/usr/sbin/traceroute -q 1 -n 10.0.1.18 traceroute to 10.0.1.18 (10.0.1.18), 30 hops max, 38 byte packets 1 1.1.1.1 0.340 ms 2 10.0.1.18 0.633 msLa opción -q sirve para especificar el número de paquetes que queremos que se envíen para cada valor de TTL. Si no se especifica se envían 3. Los paquetes pueden tirarse, así que es normal que se hagan varios intentos, sin embargo, para simplificar la salida del programa hemos usado aquí un valor de 1. La opción -n, como en muchos otros programas relacionados con la red, hace que se impriman direcciones IP en el formato de puntos en vez de calcular su nombre de dominio.
Ejercicio: Lea la página del manual del programa traceroute
Ejercicio: Emplee el programa tcpdump (o tcpdump_ro) para ver los paquetes IP que circulan al usar traceroute. Para ver el TTL que llevan los paquetes es probable que necesite la opción -v. A qué puerto UDP se dirigían los paquetes? Es siempre el mismo? Si cambia, cuándo? Qué valores toma? Hay aplicaciones UDP esperando datagramas a ese puerto? (vea el apartado sobre el programa netstat)
Ejercicio: Use el programa traceroute para averiguar la ruta que siguen los paquetes desde las diferentes máquinas de la Red de alumnos a cada una de las redes de la maqueta.
Ejercicio: Cuál es la ruta más larga que se encuentra en la maqueta?
Ejercicio: Si se están ejecutando a la vez en la misma máquina dos programas traceroute mandando sondas a diferentes máquinas cómo se sabe reconocer si un error ICMP que se recibe corresponde a las sondas de uno de los traceroutes o de otro? Si cada traceroute está enviando varias sondas con el mismo TTL las envía simultáneamente; cómo puede distinguir qué ICMP corresponde a cada paquete sonda? Y si los dos traceroutes mandan las sondas al mismo host destino?
Ejercicio: Desde una de las máquinas con 1.1.1.3 como router por defecto use traceroute con 10.0.1.25 como dirección destino. Qué ruta siguen los paquetes? Por qué?
Ejercicio: Explique las diferencias entre usar el programa traceroute o el programa ping con la opción Record Router.
%> netstat -a --inetPodrá ver el estado de todos los sockets TCP/IP de la máquina. Eso incluye tanto sockets UDP como sockets TCP (y otros). En el caso de sockets TCP se muestra el estado del socket (recuerde la máquina de estados de TCP) y el otro extremo de la conexión (si es aplicable).
Ejercicio: Aprenda más sobre DNS y los ROOT SERVERS en la página del IANA o del ICANN. RFC 1591, RFC 1033, RFC 1034 y RFC 1035.
El servicio DNS no solo sirve para resolver estas preguntas sino que los servidores de DNS intercambian información de nombres empleando también este protocolo. DNS emplea normalmente UDP y la PDU está pensada para no sobrepasar un tamaño de paquete que quepa en el tamaño típico de IP de 576 bytes. Si la respuesta a enviar excede este tamaño se indica así y se repite la petición empleando ahora el protocolo TCP. Dado que el intercambio entre servidores normalmente conlleva un intercambio considerable de información, normalmente se realiza sobre TCP. Dado que las respuestas a las peticiones de los usuarios normalmente ocupan poco tamaño se suelen realizar sobre UDP. En ambos casos el puerto empleado por el servidor toma el valor 53.
Ejercicio: Qué conllevaría que la petición de resolución de nombre hecha por el usuario típico se realizara sobre TCP?
Ejercicio: Emplee el programa tcpdump para ver los paquetes UDP que se intercambian al hacer una resolución de nombre de dominio. El puerto que emplea el servicio es el 53, también llamado domain. Puede emplear el programa nslookup para solicitar una resolución de nombre. Emplee la opción lserver para indicar el servidor de DNS a emplear. Si desea resolver nombres del exterior del laboratorio emplee el servidor 1.1.1.254:
%> nslookup *** Can't find server name for address 127.0.0.1: No response from server Default Server: lucas.net.tlm.unavarra.es Address: 1.1.1.253 > lserver 1.1.1.254 Default Server: proxy.net.tlm.unavarra.es Address: 1.1.1.254 >A continuación puede escribir los nombres que desee resolver (consulte la página del manual). Para terminar use la combinación Ctrl+D
Existen varios tipos de resoluciones de nombres además de la comentada. Por ejemplo se puede hacer la resolución inversa, es decir, dada una dirección IP averiguar su nombre de dominio. Puede emplear para ello tambié el programa nslookup especificando la dirección IP en vez del nombre.
Ejercicio: Emplee el programa tcpdump para decodificar las peticiones y respuestas de resolución inversa de nombre.
%> telnet 1.1.1.1 80 Trying 1.1.1.1 Connected to 1.1.1.1. Escape character is '^]'.A continuación lo que escribamos se enviará por la conexión TCP al servidor y veremos en pantalla su respuesta. Escribimos la petición HTTP más simple:
GET /La respuesta será la página web raíz que sirve esa máquina.
Estas páginas pueden sufrir modificaciones
frecuentes
|
Última actualización 09:50 3/6/2003
|