Universidad Rey Juan Carlos Curso 2008/2009 Resumen Estos ejercicios estan orientados a entender el funcionamiento basico de los protocolos de nivel de transporte UDP y TCP y a entender el funcionamiento de los mecanismos de control de ujo y control de congestion de TCP. Nota: Al cargar cada una de las capturas, es necesario ordenar los paquetes por su marca de tiempo, pulsando en la pesta na Time, de esta forma podremos analizar lo que ha ocurrido ordenadamente siguiendo el eje temporal. 1. Comunicacion UDP En la traza udp.cap se muestra una comunicacion UDP. Contesta a las siguientes preguntas: 1. Direcciones IP y puertos involucrados en la comunicacion. 2. En que red se ha realizado la captura. 3. N umero de paquetes UDP y n umero de bytes de datos intercambiados. 4. El comando nc puede utilizarse para generar traco UDP. Por ejemplo, el siguiente comando enva lo introducido por la entrada estandar a la maquina 10.0.0.1, puerto UDP 11111: pc1:~# nc -u 10.0.0.1 11111 Explica razonadamente que traco se generara en las siguientes situaciones cuando se in- tenta enviar datagramas UDP a la maquina 11.0.0.2, puerto 33000: a) Existe la red 11.0.0.0 y hay ruta para llegar hasta ella, pero no existe la maquina 11.0.0.2. b) Existe la maquina 11.0.0.2 pero no hay una aplicacion escuchando en el puerto 33000. 2. Comunicacion TCP 2.1. Establecimiento de conexion, envo de datos y nalizacion de cone- xion En la traza tcp.cap se muestra una comunicacion TCP entre dos aplicaciones. Para ltrar el traco TCP de una conexion que aparezca en una traza se puede seleccionar uno de sus segmentos y luego seleccionar la opcion de men u AnalyzeFollow TCP Stream. De esta forma wireshark solo mostrara los segmentos de la conexion seleccionada. Contesta a las siguientes preguntas: 1 1. Direccion IP y puerto del cliente TCP y direccion IP y puerto del servidor TCP. 2. Cuantos segmentos TCP se han enviado desde el cliente al servidor? 3. Cuantos segmentos TCP se han enviado desde el servidor al cliente? 4. Cuantos bytes de datos enva el servidor al cliente? Razona la respuesta. Indica cuales son los n umeros de secuencia del SYN y del FIN que enva el servidor, y que relacion tie- nen con la cantidad de datos enviada por el servidor al cliente. En el men u de Wireshark Edit->Preferences->Protocols->TCP puedes desactivar la opcion Relative Sequence Num- bers & Window Scaling. De esta forma podras observar los n umeros de secuencia reales, en lugar de los n umeros relativos que muestra por omision Wireshark. 5. Cuantos bytes de datos enva el cliente al servidor? Razona la respuesta. Indica cuales son los n umeros de secuencia del SYN y del FIN que enva el cliente, y que relacion tie- nen con la cantidad de datos enviada por el cliente al servidor. En el men u de Wireshark Edit->Preferences->Protocols->TCP puedes desactivar la opcion Relative Sequence Num- bers & Window Scaling. De esta forma podras observar los n umeros de secuencia reales, en lugar de los n umeros relativos que muestra por omision Wireshark. 6. Para cada uno de los segmentos de datos que enva el cliente al servidor, indica cual es el RTT. Observa para ello los tiempos de envo de los segmentos y los de recepcion de los asentimientos. 7. Indica cual es el valor del campo de ventana anunciada al comienzo de la conexion en cada uno de los dos sentidos. Indica cual es el valor real anunciado, teniendo en cuenta el factor de escala que se incluye en las opciones. 8. Indica cual es el valor anunciado de MSS en las cabeceras opcionales en los dos sentidos. Justica este valor teniendo en cuenta que el tama no maximo del campo de datos de un trama Ethernet es 1500. 9. Indica los tama nos de las cabeceras de los segmentos medidos en palabras de 32 bits, y razona por que son distintos. 10. Indica que extremo cierra antes la conexion. 11. El comando nc puede utilizarse para generar traco TCP. Por ejemplo, el siguiente comando intenta establecer una conexion TCP con la maquina 10.0.0.1, puerto TCP 11111: pc1:~# nc 10.0.0.1 11111 Explica razonadamente que ocurrira en las siguientes situaciones cuando se intenta estable- cer una conexion TCP con la maquina 11.0.0.2, puerto 33000: a) Existe la red 11.0.0.0 y hay ruta para llegar hasta ella, pero no existe la maquina 11.0.0.2. b) Existe la maquina 11.0.0.2 pero no hay una aplicacion escuchando en el puerto 33000. 2.2. Retransmision de SYN En la traza tcp-syn.cap se muestra una comunicacion TCP. Contesta a las siguientes preguntas: 1. Cuantas veces se enva el segmento SYN del cliente al servidor? 2. Indica la secuencia de marcas de tiempo de los segmentos SYN enviados, y explica sus valores. 3. Explica por que aparecen varios segmentos ACK repetidos. 2 3. Slow Start en el inicio de la conexion En este experimento se observa el comportamiento del mecanismo de TCP arranque lento (Slow Start). Carga en Wireshark la captura slow-start.cap. Selecciona el primer segmento que enva el cliente al servidor, y a continuacion muestra en Wireshark el diagrama Time-Sequence Graph (tcptrace) mediante el men u StatisticsTCP Stream GraphTime-Sequence Graph (tcptrace). Observa la graca de la captura, y cada uno de los segmentos. Explica como afecta Slow Start el envo de nuevos segmentos en el inicio de la conexion. 4. Timeout En este experimento se observa el comportamiento del mecanismo de control de congestion de TCP tras un timeout. Carga en Wireshark la captura ss-timeout.cap. Selecciona el primer segmento que enva el cliente al servidor, y a continuacion muestra en Wireshark el diagrama Time-Sequence Graph (tcptrace) mediante el men u StatisticsTCP Stream GraphTime-Sequence Graph (tcptrace). 1. Observa la captura y explica como afecta Slow Start al envo de nuevos segmentos al inicio de la conexion. 2. Estudia el comportamiento tras el timeout. Analiza tanto la graca como cada uno de los segmentos. Explica que diferencia aprecias respecto al comportamiento al inicio de la conexion. 5. Fast Retransmit / Fast Recovery En este experimento se observa el comportamiento de TCP tras la recepcion de 3 ACKs dupli- cados. Carga en wireshark la traza fr-fr.cap 1 . 1. Cuantas retransmisiones debidas a timeout se observan en la traza? Identica en que instante se producen. 2. Cuantas retransmisiones debidas a Fast Retransmit se observan en la traza? Identica en que instante se producen. 3. Observa la primera ocasion en la que se produce Fast Retransmit. Comprueba cuantos paquetes se envan despues de haber recibido el primer ACK nuevo. Relaciona este valor con el valor que tena la ventana de congestion cuando ocurrio Fast Retransmit. 4. Despues de enviar el paquete retransmitido en la primera ocasion en que se produce Fast Retransmit, se envan nuevos segmentos antes de recibir ACKs. Cuantos? Por que? 5. Observa la segunda ocasion en la que se produce Fast Retransmit. Comprueba cuantos paquetes se envan despues de haber recibido el primer ACK nuevo. Relaciona este valor con el valor que tena la ventana de congestion cuando ocurrio Fast Retransmit. 6. Despues de enviar el paquete retransmitido en la segunda ocasion en que se produce Fast Retransmit, se envan nuevos segmentos antes de recibir ACKs. Cuantos? Por que? 1 ./fr-fr.cap 3 6. Ventana anunciada En este experimento se observa como se comporta TCP atendiendo al valor de ventana anunciada. Carga en wireshark la captura sondas.cap. Selecciona el primer segmento que enva el cliente al servidor, y a continuacion muestra en Wireshark el diagrama Time-Sequence Graph (tcptrace) mediante el men u StatisticsTCP Stream GraphTime-Sequence Graph (tcptrace). Observa la captura y comprueba el comportamiento de la ventana anunciada a partir del seg- mento 43. Localiza en la traza anuncios de ventana 0 enviados por el servidor al cliente. Observa las sondas de ventana que enva el cliente en ese periodo. Explica el comportamiento de TCP entre los segmentos 43 y 87. 4