Pre-Laboratorio 1: HTTP/ Servidor Web Apache / Herramientas de desarrollo Pre-Laboratorio 1: HTTP / Servidor Web Apache / Herramientas de desarrollo HTTP (Hypertext transfer protocol) HTTP es el acrónimo del término en inglés Hypertext Transfer Protocol, en castellano, Protocolo de Transferencia de HiperTexto. HTTP está soportado por el protocolo de red TCP/IP. HTTP es utilizado para transferir peticiones y respuestas en la World Wide Web. Las respuestas usualmente contienen archivos y otros datos (colectivamente llamados recursos).. Los recursos pueden ser: archivos HTML, archivos de imagen (jpg, gif, *), archivos con scripts o datos, resultados de consultas o cualquier otra cosa. El protocolo HTTP está basado en el paradigma petición/respuesta, donde un cliente HTTP realiza una petición a un servidor HTTP. Un navegador (browser) es un cliente HTTP, que envía solicitudes a un servidor http-d. Un http-d es un servidor tipo proceso demonio, que escucha en un puerto TCP y recibe peticiones HTTP, una vez procesada las peticiones, envía respuestas HTTP de vuelta al cliente HTTP. Servidor HTTP Apache El proyecto del servidor HTTP apache es un esfuerzo de desarrollo de software colaborativo que apunta a crear un servidor HTTP (Web) robusto, de grado comercial, alto en prestaciones y con gratuita disponibilidad del código fuente. El proyecto es manejado conjuntamente por un grupo de voluntarios alrededor del mundo, quienes se comunican, diseñan, desarrollan, evolucionan el servidor, así como su documentación relacionada. Este proyecto es parte de la Apache Software Foundation. Además, gran cantidad de contribuyentes en todo el mundo han aportado ideas, código y documentación para el proyecto. [2] Pros y Contras del servidor HTTP Apache Pros: El Apache Web Server es gratis (gracias a sus características opensource), por lo tanto la inversión que se tiene que hacer para poder tener un Servidor Web están solo en la parte de Hardware que van a soportar al mismo. El Servidor Apache posee un gran desempeño y una sólida robustez, gracias a su constante desarrollo. Los errores son encontrados rápidamente por los miles de Webmasters en el mundo que mantienen Grupo Docente ATI 1 Pre-Laboratorio 1: HTTP/ Servidor Web Apache / Herramientas de desarrollo sitios Webs críticos y estos son corregidos por ellos mismos o por terceros pertenecientes a la Apache Software Foundation. Provee una muy buena base para la seguridad del sistema, gracias a los módulos de Autentificación, Autorización y Control de Acceso al Servidor Web, además el nuevo modulo para la versión 2.0 que nos permite poder disfrutar de SSL/TLS en nuestro servidor para seguridad en la transmisión de datos. Como se encuentra bajo constante revisión, el Servidor Apache soporta la última versión del protocolo HTTP, la versión 1.1. El soporte es abundante, y muy bueno (en cuanto a contenido). La documentación es excelente, dado que la misma esta en constate revisión y es actualizada muy rápidamente. Existen muchos foros de noticias, así como páginas especializadas en el Apache Web Server como la revista electrónica Apache Week. La extensibilidad por módulos lo hace extremadamente flexible y fácil de usar, así como de configurar. Contras La versión para el OS de Apple es muy pobre y deficiente, dado que hace poco es cuando esta versión salio al público y la falta de usuarios en este sistema que hace que el desarrollo vaya mucho más lento. Las distribuciones para Windows todavía no están al 100% de su capacidad, por lo tanto el rendimiento en comparación con el sistema operativo Linux es muy pobre y deja que desear. Esto aunado a que Apache proviene del demonio HTTPd de Linux, por lo tanto este es el sistema preferido de los desarrolladores. Es necesario algún tipo de Front grafico para hacer más amena y mucho más fácil la configuración del Apache Web Server, así como algún tipo de soporte para la instalación y configuración más fácil de entender, dado que muchos de las directivas de configuración del Apache Web Server todavía son un poco oscuras. El Servidor Apache no soporta ningún tipo de integración con Bases de Datos (PHP). No hay soporte para Java (JSP, Servlets, etc). Un soporte más extenso para llevar un control más riguroso del Servidor Apache requiere la contratación de personal altamente calificado para esta tarea, dado que la tarea de configuración y mantenimiento del servidor no son nada fáciles.[3] Grupo Docente ATI 2 Pre-Laboratorio 1: HTTP/ Servidor Web Apache / Herramientas de desarrollo Formato y estatutos de entrega La evaluación de este pre-laboratorio se realizará por medio de un cuestionario el cual verificará su conocimiento e investigación respecto al protocolo HTTP, diferencias entre la versión 1.0 y 1.1 y ciertas características y conceptos fundamentales del servidor HTTP Apache. Justifique adecuadamente todas sus respuestas. Al final el pre-laboratorio y el laboratorio el estudiante estará en capacidad de comprender el funcionamiento del protocolo HTTP, realizar la instalación del servidor Web Apache, realizar ciertas configuraciones relativas a este, comprender cómo maneja el sistema de archivos, comprender su manejo de seguridad y virtual host, conocer ciertas herramientas de desarrollo provistas por los clientes para verificar el funcionamiento de cierta aplicación. Para documentarse respecto al protocolo HTTP debe leer el artículo de James Marshall “HTTP Made Really Easy” (http://www.jmarshall.com/easy/http/), también se recomienda la lectura de los siguientes artículos: http://acsblog.es/articulos/trunk/LinuxActual/Apache/html/x49.html (Capítulo relativo a “El Protocolo HTTP”) http://www8.org/w8-papers/5c-protocols/key/key.html between HTTP/1.0 and HTTP/1.1 Distintas documentaciones bibliográficas relativas a este protocolo que desee leer (Incluidos los RFC 1945 y 2616 si tiene el interés en el protocolo) Key Differences Para documentarse respecto al servidor HTTP Apache en lo referido a los aspectos de nuestro interés se recomienda la lectura de la documentación provista en la web del proyecto (http://httpd.apache.org/docs/), no completa dado que es bastante densa. Se recomiendan las guías del Usuario de Archivos de configuración Mapear URLs a ubicaciones de un sistema de archivos Hosting Virtual Archivos Log Y los tutoriales: Autentificación, Autorización y Control de Acceso En general existe mucha documentación adicional respecto al servidor HTTP Apache, también se puede hacer uso de ella. Grupo Docente ATI 3 Pre-Laboratorio 1: HTTP/ Servidor Web Apache / Herramientas de desarrollo Cuestionario 1. El protocolo HTTP realiza solicitudes desde un cliente hacia un servidor y este le responde, ¿Qué busca el cliente mediante este procedimiento? Respecto a la respuesta anterior, ¿De qué forma se referencia eso que se desea buscar? 2. Para realizar una solicitud HTTP a un servidor que escucha solicitudes por el puerto 90, ¿Desde qué puerto se debe realizar dicha solicitud? 3. HTTP 1.1 provee características como utilizar conexiones TCP persistentes, solicitudes If-Modified-Since y If-Unmodified-Since, caching. ¿Cuál es la finalidad de estas agregaciones al protocolo? Justifique brevemente su respuesta. 4. ¿Qué característica permite a los servidores la inclusión de la cabecera Host en las solicitudes HTTP? Explique la relevancia de esta característica. 5. Indique cuáles de las siguientes sentencias son verdaderas o falsas, justifique a. Suponga que se tienen las directivas Order allow,deny seguidas por allow from xxx.xxx.xxx.xxx y deny from xxx.xxx.xxx.xxx, Las peticiones provenientes de xxx.xxx.xxx.xxx serían aceptadas. b. Suponga que se tienen las directivas <Location /images> ForceType image/png </Location> y se guarda un archivo pdf en el directorio correspondiente a esta locación en la respuesta se podría apreciar sin inconveniente que dicho archivo es del tipo pdf. 6. Apache provee del concepto de Virtual Host, responda las siguientes preguntas considerando dicho concepto: a. ¿Qué representa este concepto a nivel práctico? b. ¿Qué tipos de virtual host maneja Apache? Explique las diferencias entre cada uno de ellos. 7. Suponga que se tiene la directiva CacheEnable mem /static, ¿Qué ocurriría con todos los archivos servidos en la url http://esteservidor.com/static? Sea específico en su respuesta. Grupo Docente ATI 4 Pre-Laboratorio 1: HTTP/ Servidor Web Apache / Herramientas de desarrollo Entrega Debe entregar el día de la semana del 9 al 13 de Diciembre en el cual le corresponda su laboratorio, las respuestas al cuestionario vía la web de la asignatura en la sección de entregas antes de su llegada al laboratorio. El archivo con las respuestas puede ser del formato .doc, .docx, .pdf, .odt o texto plano y el nombre del mismo debe seguir el formato Díalaboratorio-NombreApellido-prelaboratorio1.<extensión del formato> Por ejemplo Martes-LarryWall-prelaboratorio1.doc 5 Referencias [1] http://www.jmarshall.com/easy/http/ [2] http://httpd.apache.org/ABOUT_APACHE.html [3] http://ldc.usb.ve/~emilio/Portafolio/Software/REDES3/G5b/Presenta_Site/caracteristic as_pyc.htm Grupo Docente ATI