Cliente HTTP : Usando Telnet Objetivos Comprender el funcionamiento del protocolo HTTP a través de la construcción manual de mensajes Entender el uso de los encabezados para especificar información adicional de un mensaje HTTP Introducción En este laboratorio vamos a establecer una conexión a un servidor HTTP utilizando un cliente de Telnet que nos permite enviar mensajes de texto. En el laboratorio nos conectaremos a un servidor web, crearemos manualmente los mensajes del protocolo y observaremos las respuestas que se generan. Preparar el cliente Antes de empezar debemos descargar un programa cliente de Telnet (o de conexiones “Raw” sockets) que nos permita conectarnos al servidor web y crear los mensajes manualmente. En Unix o Mac En un computador con Unix, Linux o Mac, no es necesario descargar ninguna aplicación adicional. El sistema incluye un cliente de telnet que nos sirve para hacer la conexión. Para ejecutar el cliente es necesario abrir una ventana de línea de comandos y ejecutar “telnet” $ telnet <servidor> <puerto> En Windows En un computador con Windows, si se tienen permisos de administrador, es posible instalar el cliente Telnet de Microsoft. Para instalar el software en Windows 7 o superior, debes ejecutar los siguientes pasos: 1. Entre al menú inicio 2. Después haga click en panel de control 3. Enseguida haga click en programas: i. Ingrese a la opción Activar o desactivar las características de Windows, bajo Programas y características. ii. Busque Cliente Telnet y asegúrese de marcarlo. Haga click en ok para instalarlo. 4. Para probar que ya puede usar el cliente Telnet, ingrese a la línea de comandos de Windows y escriba “telnet /?”. Debe ver las opciones de ayuda para el cliente. Para ejecutar el cliente, se debe ejecutar el cliente en línea de comandos C:\> telnet <servidor> <puerto> En Windows En un computador con Windows, sin permisos de administrador, es posible usar algún software cliente. Por ejemplo, es posible usar PuTTY, un cliente que permite hacer conexiones SSH, Raw Sockets y Telnet entre otros. Para instalar el software, solo debes descargar el archivo ejecutable del sitio web: http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe Para ejecutar el software, es necesario ejecutar el comando “putty”. El software muestra una ventana en donde es posible establecer los parámetros de conexión. Conectarse a un servidor Para conectarse a un servidor utilizando telnet debe pasar como parametro la dirección y el puerto de conexión como se muestra a continuación telnet <dirección ip o dominio> <puerto> Por ejemplo, para conectarse al servidor google.com por el pueto 80 el comando sería el siguiente telnet google.com 80 Una vez se establezca la conexión con el servidor aparecerá como respuesta en la consola: Trying to connect to :ip Connected to :ip o dominio Escape character is ‘^]’. A partir del momento en que se establece una conexión con el servidor se pueden enviar y recibir mensajes. En nuestro caso particular nos comunicaremos con el servidor utilizando el protocolo HTTP. NOTA: Tenga en cuenta que cada salto de línea que haga en la consola enviará los caracteres CRLF automáticamente al servidor. Ejercicios Utilizando el cliente Telnet realice las siguientes peticiones: 1. Búsqueda en google Servidor: Puerto: Petición: google.com 80 GET /search?q=http HTTP/1.1 2. Búsqueda en youtube Servidor: Puerto: Petición: youtube.com 80 GET /search?q=telnet HTTP/1.1 3. Ingreso a un recurso de la universidad de Los Andes Servidor: Puerto: Petición: uniandes.edu.co 80 GET /institucional/programas/programas HTTP/1.1 Host: uniandes.edu.co 4. Uso de una petición sencilla Servidor: Puerto: Petición: google.com 80 GET /search?q=Java HTTP/1.1 Connection: Close 5. Uso de peticiones “keep-alive” Servidor: Puerto: Petición: google.com 80 GET /search?q=Java HTTP/1.1 Connection: Keep-Alive GET /search?q=JavaScript HTTP/1.1 GET /search?q=AngularJS HTTP/1.1 6. Uso de otros comandos de HTTP Servidor: Puerto: Petición: google.com 80 HEAD /search?q=Java HTTP/1.1 Preguntas: 1. ¿Que pasa si cambia la versión del protocolo a HTTP/1.0? 2. ¿Por qué para hacer la petición a la Universidad de los Andes necesitamos poner el Host en el encabezado? 3. ¿Que pasa si no ponemos Host en el encabezado de la petición a la Universidad de Los Andes? Bibliografía 1. Microsoft. How to Request a Web Page through a Telnet Client. https://support.microsoft.com/en-us/kb/279466 2. Microsoft. How Telnet Works. https://technet.microsoft.com/enus/library/cc778139(v=ws.10).aspx