ilustrar sus conceptos y posibilidades básicas ©2011 prof. josé maría foces morán
TRANSCRIPT
Prácticas sobre el protocolo TCP
Ilustrar sus conceptos y posibilidades básicas
©2011 Prof. José María Foces Morán
Contexto
©2010 Prof. José María Foces Morán
TCP es un protocolo de transporte fiable Entrega garantizada Entrega
secuenciada Se detectan errores Full duplex
Control de flujo Control de
congestión Orientado a
conexión
TCP es orientado a conexión Conexión: Un
canal virtual La 4-tupla siguiente
es única: (193.146.96.163, 80, 1200, 201.1.2.3)
¿Cómo se forma una conexión TCP?
©2010 Prof. José María Foces Morán
©2010 Prof. José María Foces Morán
Cómo se crea una conexión TCP Three-way
handshake Cliente y servidor:
Intercambian tres segmentos TCP
La TPDU se denomina segmento
©2010 Prof. José María Foces Morán
Socket servidor de bienvenida
Ejercicio 1
©2011 Prof. José María Foces Morán
Observación del ciclo de vida de una conexión: Fuentes del programa servidor:
▪ http://paloalto.unileon.es/rc/practicas/tcp-pr1/basicserver.c
Ejecutad servidor en una máquina A y anotad su IP
Arrancad Wireshark y aplicad un filtro a la captura que seleccione sólo el tráfico al puerto TCP 60001▪ Capture | Options / Capture Filter: TCP port 60001
Conectaos con el servidor desde una máquina distinta mediante telnet al puerto 60001 y observad con atención: $ telnet <direccionIPServidor> 60001▪ 1. Handshake de 3-vias
▪ SYN N / SYN M ACK N+1 / ACK M+1
▪ 2. Transferencias▪ 3. Cierre de los dos canales
▪ FIN / ACK (Shutdown a -> b)▪ ACK/FIN (Shutdown b -> a)
Ejercicio 2
©2011 Prof. José María Foces Morán
Observación de una conexión con una máquina no accesible a través de un firewall Asumid que el servidor se ejecuta en paloalto.unileon.es: el firewall de la Universidad
no nos permite hacerle llegar el segmento SYN Arrancad Wireshark y aplicad un filtro a la captura que seleccione sólo el tráfico al
puerto TCP 60001▪ Capture | Options / Capture Filter: TCP port 60001
Conectaos con el servidor desde una máquina distinta mediante telnet al puerto 60001 y observad con atención: $ telnet paloalto.unileon.es 60001
▪ ¿Se recibe el segmento SYN-ACK?▪ ¿Qué significa el segmento recibido RST/ACK?▪ ¿Quién lo envía?
Ejercicio 3
©2011 Prof. José María Foces Morán
Observación de una conexión con una máquina que se encuentra apagada Asumid que el servidor se ejecuta en cualquier dirección IP que no esté activa en una red distinta de
vuestra LAN▪ ifconfig eth0 …
Arrancad Wireshark y aplicad un filtro a la captura que seleccione sólo el tráfico al puerto TCP 60001▪ Capture | Options / Capture Filter: TCP port 60001
Conectaos con el servidor desde una máquina distinta mediante telnet al puerto 60001 y observad con atención: $ telnet <IP no activa que no pertenece a nuestra LAN> 60001
▪ ¿Se recibe el segmento SYN-ACK?▪ ¿Se envía el segmento SYN?
Si, ¿y alguno más? Si, múltiples seguidos y el retardo entre ellos va aumentando a medida que no se recibe el
SYN-ACK: Observadlo –podéis consultar la transparencia siguiente y contrastar con vuestro
experimento.
Ejercicio 3 (ii)
©2011 Prof. José María Foces Morán
Observación de una conexión con una máquina que se encuentra apagada
Observad los
intervalos de tiempo crecientes
Ejercicio 3 (iii)
©2011 Prof. José María Foces Morán
¿Qué ocurre si llevamos a cabo este experimento con una máquina (B) no activa perteneciente a nuestra LAN?
No observaremos ningún tráfico, porque nuestro sistema, en principio, no conoce la MAC de B.
Nuestra máquina (A) intentará averiguar su MAC llevando a cabo una request ARP, a la cual, no recibirá respuesta, ya que B se encuentra apagada.
A no conoce la MAC de B, por tanto, no observaremos ningún tráfico en el hilo dirigido al puerto 60001 de B.▪ Configurad Wireshark con el siguiente filtro de captura, el cual, nos permitirá obtener cualquier
tráfico ARP y cualquier tráfico relacionado con B:▪ arp and host 192.168.99.222
Observad la transparencia siguiente:▪ bs
Ejercicio 3 (iv)
©2011 Prof. José María Foces Morán
Los paquetes 1 a 7 son requests ARP para averiguar la MAC de 192.168.99.222 No se observa ningún trafico con 192.168.99.222
Ejercicio 3 (v)
©2011 Prof. José María Foces Morán
Repetimos el experimento con una máquina apagada perteneciente a otra red Si aparece tráfico en el hilo dirigido a 192.168.1.3 Son segmentos SYN retransmitidos porque el módulo TCP de A nunca recibe el segmento correspondiente SYN-ACK.
©2010 Prof. José María Foces Morán
Ejercicio 4, propuesto para la próxima sesión
Apertura y cierre de la ventana deslizante Cliente: http://paloalto.unileon.es/rc/practicas/tcp-pr1/ClientVentana.java
Servidor: http://paloalto.unileon.es/rc/practicas/tcp-pr1/ServerVentana.java
Observad mediante Wireshark cómo el cliente llena el buffer de recepción del server El server no consume la info recibida ¿Cómo reacciona el servidor (receptor en este caso)?▪ Advertised Window Size = 0▪ ¿Conduce esto a un interbloqueo cliente servidor?▪ Investigadlo y contrastad con los resultados del
experimento.
Prácticas sobre el protocolo TCP (2)
Ilustrar sus conceptos y posibilidades básicas
©2011 Prof. José María Foces Morán
Contexto
©2010 Prof. José María Foces Morán
TCP es un protocolo de transporte fiable Entrega garantizada Entrega
secuenciada Se detectan errores Full duplex
Control de flujo Control de
congestión Orientado a
conexión
©2010 Prof. José María Foces Morán
Ejercicio propuesto: Acceso a un puerto filtrado por un firewall
Wireshark Target: paloalto.unileon.es Servidor TCP en 60001
Recibimos un segmento RST Visto en práctica TCP1 ¿Quién lo envía? Diseñad un escenario de prueba que nos
permita responder a esta pregunta▪ Documentad apropiadamente la solución
incluyendo volcados de pantalla y explicaciones que aclaren lo que ocurre.
©2010 Prof. José María Foces Morán
Ejercicio propuesto: Three-way handshake
Wireshark Cread una conexión
cualquiera Analizad a nivel de bit cada
uno de los segmentos intercambiados▪ Usando el volcado HEX▪ ¿Qué bits se encuentran
activados en cada uno de los 3 segmentos?
▪ ¿Qué números de secuencia reales aparecen en cada caso?
Documentad vuestras respuestas:▪ Volcados de pantalla▪ Explicad de forma concisa la
traza de paquetes que habéis obtenido con Wireshark.
©2010 Prof. José María Foces Morán
Ejercicio propuesto: Control de flujo TCP vs. UDP
Diseñad un experimento que nos permita comprobar empíricamente qué ocurre cuando un receptor UDP recibe datos a una velocidad mas alta que le empleada para consumirlos Cread una socket en el receptor cuya aplicación
consuma los segmentos recibidos con relativa lentitud
En el cliente, cread una socket cuya aplicación envie segmentos NUMERADOS a la mayor velocidad posible
Explicad vuestras observaciones
©2010 Prof. José María Foces Morán
Ejercicio propuesto: Ventana de recepción
Apertura y cierre de la ventana deslizante Cliente: http://paloalto.unileon.es/rc/practicas/tcp-pr1/ClientVentana.java
Servidor: http://paloalto.unileon.es/rc/practicas/tcp-pr1/ServerVentana.java
Observad mediante Wireshark cómo el cliente llena el buffer de recepción del server El server no consume la info recibida ¿Cómo reacciona el servidor (receptor en este caso)?▪ Advertised Window Size = 0▪ ¿Conduce esto a un interbloqueo cliente servidor?▪ Investigadlo y contrastad con los resultados del
experimento.