Obligatorio 2 - Facultad de Ingeniería

Anuncio
Redes de Computadoras
Obligatorio 2 - 2016
Redes de Computadoras
Obligatorio 2 - 2016
Facultad de Ingeniería
Instituto de Computación
Departamento de Arquitectura de Sistemas
Nota previa - IMPORTANTE
Se debe cumplir íntegramente el “Reglamento del Instituto de Computación ante
Instancias de No Individualidad en los Laboratorios”, disponible en el EVA.
En particular está prohibido utilizar documentación de otros estudiantes, de otros años,
de cualquier índole, o hacer público código a través de cualquier medio (EVA, news,
correo, papeles sobre la mesa, etc.).
Forma de entrega
La entrega de la tarea consiste en un único archivo obligatorio2GrupoGG.tar.gz que
deberá contener los siguientes archivos:
•
•
•
Un documento llamado Obligatorio1GrupoGG.pdf donde se documente todo lo
solicitado en la tarea. GG es el número del grupo.
Los programas solicitados.
Un directorio extras incluyendo cualquier otro archivo que considere relevante.
La entrega se realizará en el sitio del curso, en la plataforma EVA.
Fecha de entrega
Los trabajos deberán ser entregados antes del 16/10/2016 a las 23:30 horas. No se
aceptará ningún trabajo pasada la citada fecha y hora. En particular, no se aceptarán
trabajos enviados por e-mail a los docentes del curso.
Observaciones
Los programas pueden ser escritos en cualquier lenguaje de programación, con el previo
acuerdo del docente de monitoreo. Los programas deberán poder ejecutarse dentro de
las máquinas virtuales brindadas para el curso en los PCs Linux de la Facultad.
Se deben documentar todos los casos de uso, incluyendo la invocación de los programas
y sus parámetros de entrada, y un análisis de los resultados.
Objetivo del Trabajo
Tener una primer experiencia académica ante las diferentes versiones de protocolo
HTTP. Durante el año 2015 se produjo la publicación del RFC 7540 - Hypertext Transfer
Protocol Version 2, una actualización del protocolo fundamental del WWW. El objetivo del
presente obligatorio es lograr una aproximación al protocolo, combinando estudio de los
mismos, documentación e implementaciones.
Página 1 de 3
Redes de Computadoras
Obligatorio 2 - 2016
Se pide
1) Evolución de HTTP
Se deberá documentar los aspectos fundamentales de las versiones 1.0, 1.1 y 2 del
protocolo, indicando cronológicamente las mejoras que se le han agregado al protocolo a
lo largo del tiempo, describiendo características comunes y detalles específicos de cada
versión. Esta parte de la documentación será de aproximadamente 2.500 palabras.
2) Manipulando el protocolo HTTP
Desarrolle un programa que determine qué versiones de HTTP soporta un servidor que
responde por determinada URL. El programa deberá contar con una interfaz de usuario
mínima que permita recibir una URL, y que luego de conectarse al servidor
correspondiente sea capaz de determinar la o las versiones de HTTP que soporta. A
modo de ejemplo, si un servidor soporta 1.0 y 1.1, entonces una salida correcta podría
ser “HTTP 1.0 HTTP 1.1”. Para la implementación solo pueden utilizarse bibliotecas para
manipulación de strings, expresiones regulares y sockets TCP, y no se puede hacer uso
de ninguna biblioteca para el manejo de HTTP.
3) Mi primer cliente y servidor HTTP 2!
Deberá desarrollarse un cliente y un servidor HTTP2.
Requerimientos del servidor:
•
Debe tomar al menos dos parámetros al ejecutarse: i) el puerto en el que
escucha, y ii) una ruta en el sistema de archivos que será el repositorio donde se
encuentra el contenido que va a servir.
•
El contenido servido deberá poder ser navegado tanto desde el cliente a
desarrollar como desde un navegador del mercado (Firefox por ejemplo).
•
Deberá soportar el método GET del protocolo HTTP 2 y será capaz de manejar el
escenario de la multiplexación de pedidos sobre la misma conexión.
Requerimientos del cliente:
•
Será capaz de conectarse al servidor, y utilizar el protocolo HTTP2 para hacer
pedidos GET y obtener los recursos (no importa visualizarlos como en un
navegador, sino ser capaces de transferir los recursos y guardarlos en un
archivo).
•
Tomará como parámetros obligatorios: el servidor (FQDN o IP), y la ruta (path) del
recurso a obtener. Soportará una bandera “-m” que indique que se va a realizar
pedido con multiplexación, para lo cual deberá incluir tantas rutas adicionales
como recursos que se pretender obtener en paralelo.
Se debe diseñar e implementar un escenario en el cual sea posible probar la
funcionalidad de PUSH del protocolo HTTP2. A modo de ejemplo, se pide que el servidor
envíe periódicamente la hora hacia los clientes conectados sin que los mismos lo hayan
solicitado mediante un GET; el cliente debe ser capaz de desplegar la hora recibida.
Página 2 de 3
Redes de Computadoras
Obligatorio 2 - 2016
Cronograma
Hasta el 24/9: comenzar con los desafíos 1) y 2) del obligatorio. Se sugiere comenzar a
probar prototipos de 2).
Durante los parciales: avanzar ambos desafíos y comenzar a estudiar posibles
implementaciones de 3).
Desde el 2/10 al 16/10 (fecha de entrega): terminar desafíos 1) y 2) y realizar el 3)
coordinando con los docentes el lenguaje y bibliotecas a utilizar.
Herramientas
Para la implementación del desafío 3) se podrán utilizar bibliotecas de manejo de HTTP,
previo acuerdo con los docentes.
Referencias y Bibliografía Recomendada
[1] RFC 1945 - Hypertext Transfer Protocol – HTTP/1.0 – T. Berners-Lee, R. Fielding,
H. Frystyk - 1996.
[2] RFC 2616 - Hypertext Transfer Protocol – HTTP/1.1 – R. Fielding, J. Gettys, J.
Mogul, H. Frystyk, T. Berners-Lee - 1997.
[3] RFC 7540 - Hypertext Transfer Protocol Version 2 – M. Belshe, R. Peon, M.
Thomson – 2015.
Página 3 de 3
Descargar