Powered By Blogger

martes, 20 de enero de 2015

Práctica de redes. capa de transporte (TCP, UDP)--- 1 parte

1.-    Pregunta
Respuesta              

·         PRÁCTICA DE REDES.
·         CAPA DE TRANSPORTE (TCP, UDP) --- 1 parte

·         En esta práctica sobre la pila de protocolos TCP/IP nos vamos a ocupar de lo que se conoce como  capa de transporte. La capa de transporte se encarga, entre otras cosas, de empaquetar la información en paquetes de tamaño adecuado (limitarlo, por ejemplo, a las características de la red física, que podría no soportar paquetes de tamaños superiores a…), de verificar que todos los paquetes de una comunicación han llegado a destino (dependiendo del protocolo que usemos), de comprobar que los paquetes no estén corruptos…

·         Los dos protocolos principales de la capa de transporte son TCP (Transmission Control Protocol) y UDP (User Datagram Protocol). A lo largo de la práctica veremos algunas de sus características. También recuperaremos el protocolo DNS (Domain Name Server) y veremos la necesidad de contar con servidores DNS en nuestro ordenador para poder acceder a Internet, cómo se pueden configurar los servidores DNS y cómo funciona el protocolo.

·         Antes de empezar la práctica vamos a recuperar el programa para monitorizar el tráfico de red (http://www.wireshark.org/). Instálalo en tu ordenador. Ejecútalo, y dentro del menú “Capture”, en la opción “Interfaces”, elige la interfaz de red activa. Recupera y anota la IP de tu ordenador por medio del comando “ipconfig” (de las distintas interfaces de red que aparezcan debes seleccionar la correspondiente a “Adaptador de Ethernet – Conexión de área local”).

·         Ahora crea un filtro en Wireshark como el siguiente para conseguir aislar sólo el tráfico que tiene como origen o destino tu máquina: host ip-de-tu-maquina
PUEDES VER LA SINTÁXIS DE FORMACIÓN DE LOS FILTROS EN WIRESHARK EN
ESTE LINK. http://wiki.wireshark.org/CaptureFilters.

·         A lo largo de la práctica, a medida que Wireshark captura más paquetes, es probable que su comportamiento se ralentice. En ese caso puedes detenerlo (“Capture -> Stop”) y reiniciarlo (“Capture -> Interfaces -> Start ) (ten en cuenta que empezará una nueva sesión o captura cada vez que lo arranques y se perderán los paquetes ya capturados).

·         Pregunta 1
Abre pestañas independientes en tu navegador y accede a estas direcciones:
193.147.0.103
185.15.76.85



1.1  ¿Qué páginas se han abierto?

·         Portal todo FP inicio
·         http://www.iesgrancapitan.org/portal/

·         Filtra en Wireshark toda la actividad DNS que ha habido al abrir las páginas anteriores (escribe “dns” en la ventana “Filter:”). El protocolo DNS es el que permite, a partir de una dirección URL, resolver su IP para que las cabeceras de la capa de red se puedan formar correctamente.


1.2.- ¿Ha necesitado el ordenador conectarse a los servidores DNS para resolver las anteriores direcciones? ¿Se ha conectado antes o después de hacer las solicitudes HTTP?

*      No a necesitado el ordenador conectarse a los servidores DNS para resolver las anteriores direcciones. No es necesario conectarse a los servidores, pues le estamos dando una dirección IP, y no necesita resolver el nombre porque ya una dirección IP.

*      Se ha conectado antes de hacer las solicitudes HTTP porque no se conecta directamente HTTP sino que realiza una conversación. Por lo tanto, se a conectado primero con protocolo TCP donde ha iniciado la conexión entre el servidor y nosotros, para permitir el envio de datos en protocolo hipertexto.


*      Pregunta 2

*      Vamos ahora a ver cómo funciona la capa de transporte. Dentro de la misma podemos encontrar principalmente dos protocolos, TCP y UDP. Filtra en Wireshark la comunicación que ha tenido lugar entre tu ordenador y la página web en 74.125.159.105. Puedes crear un filtro como: host la_ip_de_tu_maquina and host 185.15.76.85. Observa la lista de paquetes que has recuperado.

2.1 ¿A qué protocolos pertenecen?

*      74.125.159.105 me sale página caída.

*      Protocolos TCP.

*      Recupera el mensaje de protocolo HTTP cuya “info” sea exactamente “GET / HTTP/1.1” y ábrelo (botón derecho sobre el mismo, opción “Show Packet in New Window”). Observa las cabeceras TCP. Anota el valor de los puertos “Src” (puerto de tu máquina) y “Dst” (puerto del servidor). La comunicación entre máquinas siempre se hace a través de puertos de las mismas. Mientras dura una comunicación, cada máquina mantiene el mismo puerto escuchando y mandando mensajes. Algunos protocolos tienen un puerto asignado por defecto; por ejemplo, cuando te conectes a un servidor a través del protocolo http, lo normal es que el servidor utilice su puerto 80 para esa comunicación (¿es cierto en este caso?). Si te conectas por ftp, por defecto el servidor utilizará el puerto 21.

*      Si es correcto.


2.2 Vamos a observar ahora la comunicación que ha habido a través del puerto de tu computadora.
En primer lugar, vamos a filtrar los paquetes de los que hemos sido origen (o src). Aplica el siguiente filtro: tcp.srcport eq puerto_de_tu_maquina

 ¿Cuál es la IP de origen de dichas comunicaciones? ¿Y la de destino? ¿Qué recursos web se han solicitado por HTTP a través de ese puerto?

*      IP de origen: 193.147.0.103/
*      IP de destino: 192.168.1.128
*      Recursos web que se han solicitado por HTTP:Control de protocolo, puertos de destino y origen…

2.3 Veamos ahora los paquetes de los que hemos sido destinatarios (dst). Aplica el siguiente filtro: tcp.dstport eq puerto_de_tu_maquina

¿Cuál es la IP de origen de dichas comunicaciones? ¿Y la de destino? ¿Qué mensajes HTTP se han enviado a través de ese puerto?

*      IP de origen: 193.147.0.103/
*      IP de destino: 192.168.1.128
*      Recursos web que se han solicitado por HTTP:Control de protocolo, puertos de destino y origen…



Aparte de la información sobre los puertos, las cabeceras TCP contienen información que nos va a permitir asegurar la correcta recepción de los paquetes. Copia los números “Sequence number” y  “Next Sequence Number” dentro de la cabecera TCP del mensaje “GET / HTTP/1.1”.  Ahora crea el siguiente filtro: tcp.ack eq next_sequence_number 
Responde a las preguntas:

¿Qué mensajes contienen el número next_sequence_number? ¿La respuesta del servidor “HTTP/1.1 200 OK” contiene el next_sequence_number?


 los mensajes de siguientes secuencias de numeros que se transmiten al enviar el mensaje
si contiene el next - sequence-number.


Pulsa el botón derecho sobre el mensaje cuya “info” es “HTTP/1.1 200 OK”, opción “Show Packet in New Window” y trata de comprobar, en la sección de cabeceras de “Reassembled TCP Segments”, qué paquetes han sido “reensamblados” para construir el mensaje de respuesta HTTP.

Anota sus números y comprueba si aparecen también entre los mensajes filtrados por la regla “tcp.ack eq next_sequence_number”.

HTTP/1.1 201
HTTP/1.1 202
HTTP/1.1 203
HTTP/1.1 204

Tratemos de dar una explicación al anterior hecho. Cuando tu ordenador hace una solicitud a un servidor, genera números “Sequence Number” y “Next Sequence Number”. Estos números son generados de forma aleatoria.
Cuando el servidor responda a tu mensaje, siempre incluirá un campo “Acknowledgment number” en el que enviará el número que nuestro ordenador le envió como “Next Sequence Number”. Así nuestro ordenador consigue distinguir las respuestas a las distintas solicitudes que le haya hecho a ese servidor.
De no existir los números “Sequence” y “Acknowledgment”, nos sería imposible distinguir las distintas comunicaciones con una misma máquina, y por tanto no podríamos reconstruir sus mensajes