PRACTICA FINAL. Diseño e implementación de un servidor Web básico y cliente http. Protocolo HTTP-RC

Documentos relacionados
Tema 2 El Servicio Web

Práctica 5: Servidor web concurrente en Java

Clase. geniería de la Computación. Departamento de Ciencias e Ing. Diego C. Martínez - DCIC-UNS

HTTP Introducción. Redes de Datos Ing. Marcelo Utard / Ing. Pablo Ronco FACULTAD DE INGENIERIA UNIVERSIDAD DE BUENOS AIRES

Internet y Correo Electrónico. Guía del Usuario Página 13. Centro de Capacitación en Informática

HyperText Transfer Protocol

TEMA 3: La Aplicación World Wide Web

Funcionamiento de Servicios Web, FTP

HTTP. Redes I. Departamento de Sistemas Telemáticos y Computación (GSyC) Noviembre de GSyC HTTP 1

Código de ética. Temario. Herramientas. Entrar en ubuntu

Redes de Computadores II

5.1 Introducción. 5.2 El protocolo HTTP.

Práctica IV Anexo sobre protocolos

DISEÑO CURRICULAR ELECTIVA II. DESARROLLO DE APLICACIONES WEB

Protocolo HTTP Apache. Servicios HTTP. Esteban De La Fuente Rubio L A TEX. Universidad Andrés Bello. 17 jun 2011

Aplicaciones Web. Introducción. David Cabrero Souto. Grupo MADS ( Universidade da Coruña

Protocolos de WWW. Bibliografía: Redes de Computadores: un enfoque descendente basado en Internet : J.F Kurose y K.W. Ross. GSyC 2007.

Servidores Web E2B2C. Leandro Radusky Esteban Lanzarotti. Nov 2014

INTRODUCCION. Tema: Protocolo de la Capa de aplicación. FTP HTTP. Autor: Julio Cesar Morejon Rios

Clase 22 Nivel de Aplicación WWW Tema 6.- Nivel de aplicación en Internet

La funcionalidad básica de un navegador web es permitir la visualización de documentos de texto, posiblemente con recursos multimedia incrustados.


La web (el servicio WWW)

HyperText Transfer Protocol

Especificaciones de la Interfaz para envío de SMS

Desarrollo y servicios web

URL. Después de los dos puntos: se interpreta según el método de acceso. Suele contener direcciones y puntos de acceso en una máquina. Esquema URL.

Qué es la Web? (I) Arquitecturas Distribuidas 10/11

Desarrollo y servicios web

Introducción al desarrollo WEB. Tecnologías Web

Práctica 4: Instalación y Gestión de Servicios en Sistemas 9Distribuidos.

Bloque II: El nivel de aplicación. Tema 3: Aplicaciones orientadas a conexión

Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010)

Capa de Aplicación (Parte 2 de 2)

Curso básico de creación de páginas web

CAPA DE APLICACIONES

FORO VOCACIONAL DEL SOVIO

Introducción a las Aplicaciones Web

Implementación del servicio de envío masivo de mensajes SMS HTTP/s API -

5.1. Qué es Internet? controla todo el sistema, pero está conectado de tal manera que hace

UNIDAD 1 GENERALIDADES HTML

Introducción a las Redes de Computadoras

Creación de páginas Web

TEMA 8. Internet y la World Wide Web. Álvarez, S., Bravo, S., Departamento de Informática y automática Universidad de Salamanca

PROTOCOLOS HTTP Y HTTPS

Examen de AAD 21/06/2004, 11:30 13:00 (90 )

TEMA 5. Otras arquitecturas distribuidas IV. Web Services

Implementación del servicio de envío masivo de mensajes SMS HTTP/s API -

Artículos técnicos Grupo Danysoft: Introducción a Web Services con herramientas de desarrollo Microsoft

TEMA 4. PROCESO UNIFICADO

Servicios estándar Internet Web 1.0

Arquitecturas REST (Representa3onal State Transfer)

Servidores web. Qué es un servidor web? Tipos de servidores. Lic. Lorena Bernis

Arquitecturas Distribuidas. TEMA 1. Introducción a las arquitecturas distribuidas

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

PORTAL PAGO PRESTADORES WEB

Desarrollo de Aplicativos con winsockets

Redes de Computadoras Práctica 4: World Wide Web

INTERCAMBIO DE OBJETOS

DESARROLLO DE APLICACIONES PARA LA WEB II

NIVEL 16: ESTRUCTURAS N-ARIAS RECURSIVAS Aplicaciones Web, Html y Servlets. ISIS1206 Estructuras de Datos

Problemas sobre DNS y HTTP Sistemas Telemáticos I

GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII

HTTP, CGI, Applets y Servlets

Introduccion a HTML y Formularios. Gerardo Grinman 5D

Sincronizador de Información Táctica

(X)HTML. World Wide Web es uno de los servicios que se pueden encontrar en Internet, pero no el único (correo electrónico, FTP, news...

Web. Web Diapositiva 1

Manual de Usuario Perfil Proveedor

Testing de Seguridad de Aplicaciones Web

SERVIDOR WEB MULTIPLATAFORMA CON IMPLEMENTACIÓN CGI

Servicios Telemáticos Avanzados 4º Grado en Ingeniería en Tecnologías de Telecomunicación Especialidad de Telemática

Desarrollo y servicios web

Protocolo HTTP. Tema 4 SRI. Vicente Sánchez Patón. I.E.S Gregorio Prieto

Decenio de las personas con Discapacidad en el Perú Año de la consolidación del Mar de Grau

Examen de Redes - Primer Parcial - ETSIA 26 de Enero de 2006

UD 4: Instalación y administración de servicios Web SRI

Net-LAN. Guía rápida del Kit inalámbrico NetLAN para ZyXEL P660 HW61

Implementación del servicio de envío masivo de mensajes SMS HTTP/s API -

MANUAL PARA EL CARGUE DE REPORTES POR FTP

Ayuda para entrar a EVA Unidad de Capacitación

INTRODUCCIÓN AL WEB. Pag. 1 de 10

GI-A.10.1-SA-07 GUIA RÁPIDA COMPRAR EN LÍNEA. Código: GI-A.10.1-SA-07 GUÍA RÁPIDA COMPRAR EN LÍNEA. Revisión:1 MANUAL

El servidor Web Tema 2.- Nivel de aplicación en Internet

Especificaciones de la Pasarela SMS NÚMEROS LARGOS

Procedimiento VUCE para la gestión de las solicitudes previas a la licencia de importación de papel de uso editorial.

Una actividad de prueba con Edilim

Workshop de HTTP leaked version 1

Manual del Alumno - Blackboard

Unidad IV: TCP/IP. 4.4 Protocolos a nivel aplicación

Aplicaciones distribuidas: FTP

TABLA DE CONTENIDO PROCEDIMIENTO TEMPORAL ESTRUCTURA PREAPERTURA DE CUENTAS DE DEPÓSITO DE ACCIONES INTEGRALES (TIPO KA)

MANUAL DE QUEJAS Y RECLAMOS OFICINA DE SISTEMAS E INFORMATICA ESCUELA SUPERIOR DE ADMINISTRACION PÚBLICA

TÉCNICO EN PRACTICA 3: INTRODUCCION. Protocol Secure.) En esta guía por Linux. OBJETIVOS. Al finalizar esta. servidor WEB y FTP.

MANUAL DE USO DEL SISTEMA DE MEDICIÓN DE CARGAS DE TRABAJO

ATEL ASESORES C.A IP Multimedia Subsystem Prof. Diógenes Marcano

Las herramientas útiles para la red

GUÍA DE ESTUDIO TEMA 2. MODELO OSI. ESTÁNDARES Y PROTOCOLOS. MODELO TCP/IP.

WEB Y HTTP. HTTP: Hypertext Transfer Protocol [RFC 1945] [RFC 2616] Web Page URL (Uniform/Universal Resource Identifier)

Versión 1.0. Subdirección de Informática

Transcripción:

PRACTICA FINAL Diseño e implementación de un servidor Web básico y cliente http Descripción de la práctica Protocolo HTTP-RC Se pretende desarrollar un servidor Web básico con soporte a múltiples conexiones concurrentes y un cliente http básico que permita el uso del servidor web. Tanto servidor como cliente deben cumplir un subconjunto del estándar HTTP (protocolo HTTP-RC). Descripción del Servidor Web HTTP-RC El servidor aceptará múltiples conexiones concurrentes, hasta un número máximo de clientes indicado en un parámetro de entrada, y para su desarrollo se deberá utilizar la función fork() para que para cada conexión se cree un nuevo proceso que atienda a dicha conexión. El protocolo http a implementar será la versión HTTP/1.0. A diferencia de la versión HTTP/1.1 en la versión 1.0 el servidor una vez realizada la petición (entrega del recurso solicitado o envío de información) cierra la conexión. El servidor aceptará peticiones según el estándar http al menos de los métodos GET y HEAD. Un ejemplo de peticiones que debería aceptar: GET /index.html HTTP/1.0 Host: www.example.com User-Agent: nombre-cliente HEAD /index.html HTTP/1.0 Host: www.example.com User-Agent: nombre-cliente Página 1 de 7

Él servidor enviará por la conexión las cabeceras de respuesta según la petición realizada (GET o HEAD) y según si se puede cumplir o no la petición, y seguido a las cabeceras deberá enviar, si es el caso de petición GET, línea a línea el recurso (fichero) solicitado En el ejemplo anterior, hay que enviar el recurso (fichero) index.html Los recursos que sirve deben encontrarse a partir de un directorio a especificar en la ejecución del servidor. Será en ese directorio donde el servidor web irá a buscar dichos ficheros Del estándar HTTP el protocolo HTTP-RC al menos debe implementar: Debe implementar los métodos GET y HEAD Debe interpretar una solicitud con cabeceras de petición estándar y debe implementar las cabeceras de respuesta al menos las más relevantes. Al menos debe implementar el comportamiento para responder con un código 200 OK o 404 Not Found Una vez enviado el recurso debe cerrar la conexión establecida con el cliente Ejemplo: Ejecución: $ httpserver-rc -n <número de clientes> -d <dir base recursos> Ejemplo: httpserver-rc -p 8888 -n 10 -d /opt/rc/rc<xx>/html Petición: GET /index.html HTTP/1.0 Host: <nombre_del_host_que_hace_la_peticion> User-Agent: http-rc/1.0 Respuesta: HTTP/1.0 200 OK Date: 10/11/2009 16:15:00 Content-Length: 57 <html> <body> <h1>hello World</h1> </body> </html> Página 2 de 7

Las cabeceras Host y User-Agent se usan para lo siguiente: Host: nombre del host cliente que hace la petición User-Agent: nombre del navegador cliente que se está utilizando, en nuestro caso pondremos siempre http-rc/1.0 Es importante destacar que el servidor sabe que la petición ha finalizado, es decir que no hay más cabeceras, mediante una línea en blanco (con caracteres CRLF, retorno de carro, fin de línea). En C se representan mediante \r\n\ (retorno de carro \r y salto de línea \n) en un string Descripción del Cliente Web HTTP-RC El cliente Web HTTP-RC debe implementar el comportamiento anteriormente descrito enviando peticiones GET y HEAD. Mostrará siempre por pantalla las cabeceras de respuesta y en caso de peticiones GET el recurso obtenido lo guardará en un fichero local con el mismo nombre que el fichero solicitado Mediante un modificador (-h) que es opciones indicaremos al cliente que el método es HEAD en vez de GET El funcionamiento detallado del cliente es el siguiente: 1. El cliente envía la solicitud de página al servidor. Dependiendo de la existencia o no del modificador (-h) mandará un GET o un HEAD y de la URL obtendrá el nombre del servidor, el puerto y el recurso solicitado 2. Una vez recibidas las cabeceras de respuesta y el recurso solicitado (según si es una petición GET o HEAD) cerrará el programa Ejemplo: Ejecución: http-rc http://<nombre_servidor>:<puerto>/<recurso> [-h] Ejemplo: http-rc http://tlm101.net.tlm.unavarra.es:8888/index.html Deberá enviar al servidor la petición: GET /index.html HTTP/1.0 Host: <nombre_del_host_que_hace_la_peticion> User-Agent: http-rc Mostrará por pantalla: HTTP/1.0 200 OK Date: 10/11/2009 16:15:00 Content-Length: 57 Página 3 de 7

Y habrá creado un fichero de texto en local con el nombre index.html y con el contenido: <html> <body> <h1>hello World</h1> </body> </html> Página 4 de 7

Protocolo HTTP El Protocolo de Transferencia de Hipertexto (Hypertext Transfer Protocol) es el protocolo fundador de la red de extensión mundial (WWW, World Wide Web). A pesar del nombre, el protocolo no se limita a la transferencia de hipertexto, sino que se utiliza para transmitir ficheros y otro tipo de datos que pueden ser generados dinámicamente. En realidad es un protocolo para transmitir información con la eficiencia necesaria para realizar saltos de hipertexto. La actual especificación del protocolo HTTP versión 1.1 se encuentra en el RFC 2616 (Request For Comments, documentos de recomendación de especificación de estándares). El funcionamiento del protocolo obedece al modelo cliente/servidor. El servidor Web mantiene los ficheros y genera dinámicamente información que se da como respuesta al cliente (el navegador web, por ejemplo) que solicita alguno de los recursos. Básicamente, la dinámica del intercambio de mensajes que constituyen una transacción se resume en el envío por parte del cliente de un mensaje de solicitud, y el servidor responde con el resultado de la operación y el recurso correspondiente si es el caso. Para localizar un recurso mediante el protocolo http el cliente utiliza la URL (Universal Resource Locator, Localizador Universal de Recurso), que sigue la siguiente sintaxis: http_url = "http:" "//" host [ ":" puerto ] [ ubicación-del-recurso ] ejemplo: http://www.example.com/index.html Una vez establecida la conexión, el formato básico de mensaje de solicitud para la versión HTTP/1.1 tendría la siguiente estructura: línea-de-solicitud = método SP ubicación-del-recurso SP HTTP/1.1 CRLF [cabecera-de-solicitud] CRLF donde: método = GET HEAD CR = <retorno de carro (código ascii 13)> LF = <salto de línea (código ascii 10)> SP = <espacio (código ascii 32)> [cabecera-de-solicitud] : lista de cabeceras con información sobre el cliente que realiza la solicitud y algunos aspectos como el idioma Algunos valores de cabecera de petición: Página 5 de 7

host = "Host" ":" host [ ":" puerto ] ; nombre del servidor agente = "User-Agent" ":" 1*( producto comentarios ) ; descripción del cliente Es importante destacar que el servidor sabe que la petición ha finalizado, es decir que no hay más cabeceras, mediante una línea en blanco (con caracteres CRLF, retorno de carro, fin de línea). En C se representan mediante \r\n en un string Ejemplo solicitud: GET /index.html HTTP/1.1 Host: www.example.com User-Agent: nombre-cliente La respuesta del servidor está formada por encabezados (finalizan con una línea en blanco) seguidos del recurso solicitado, en el caso de una página web: HTTP/1.1 200 OK Date: Fri, 31 Dec 2003 23:59:59 GMT Content-Type: text/html Content-Length: 1221 <html> <body> <h1>página principal de ejemplo.com</h1> (Contenido)... </body> </html> La primera cabecera comienza por la versión del protocolo utilizado (habitualmente HTTP/1.1) seguido del código de respuesta. Los códigos de respuesta son códigos numéricos seguidos de un texto que indican cuál ha sido el resultado de la operación solicitada. Consta de tres dígitos, indicando el primero el tipo de resultado: 1xx: código de información, el proceso continúa. 2xx: código de operación realizada con éxito. 3xx: código de redirección. Son necesarias acciones adicionales. 4xx: código de error en la solicitud del cliente. 5xx: código de error en la operación del servidor. Lo códigos completos más usuales son los siguientes: 200 OK : operación realizada con éxito. 404 NOT FOUND: el recurso que se solicitó no existe. 500 Server Error: hubo un fallo en el servidor al intentar completar la acción solicitada Página 6 de 7

Otros valores interesantes de las cabecera de respuesta son: tipo = Content-Type: tipo-de-contenido longitud = Content-Length: longitud-en-bytes Ejemplos completos Solicitud de página inicial de www.google.es. Mensaje de solicitud: GET / HTTP/1.1 Host: tlm101.tlm.unavarra.es (Salto de línea) Mensaje de respuesta: Bibliografía HTTP/1.1 302 Found Location: http://www.google.es/ Cache-Control: private Content-Type: text/html; charset=utf-8 Date: Tue, 10 Nov 2009 16:37:46 GMT Server: gws Content-Length: 218 X-XSS-Protection: 0 <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>302 Moved</TITLE></HEAD><BODY> <H1>302 Moved</H1> The document has moved <A HREF="http://www.google.es/">here</A>. </BODY></HTML> Hypertext Transfer Protocol HTTP/1.1, R. Fielding et al., RFC 2616. Comunicaciones y Redes de Computadores, William Stallings, Pearson Educación SA, séptima edición, Madrid 2004. www.w3c.org, World Wide Web Consortium. Página 7 de 7