-
Notifications
You must be signed in to change notification settings - Fork 11
S7: Protocolo HTTP
- Tiempo: 50min + 50min
- Objetivos: TODO
- Introducción
- Conexión TCP en HTTP
- Mensajes HTTP
- Descargas
- El rincón friki
- Autor
- Créditos
- Licencia
- Enlaces
La web está cobrando cada vez más importancia. Uno de los motivos es su sencillez: sólo necesitamos tener instalado un navegador, en cualquier plataforma: ordenador, tablet, móvil... Los dos actores principales de la web son el navegador (cliente) y el servidor. Hablan entre sí mediante el protocolo HTTP
-
HTTP: (Hyper Text Transfer Protocol): Protocolo entre navegadores y servidores web para transferir documentos hipermedia
-
URL: (Uniform Resource Locator): Interfaz común para acceder a diferentes tipos de servicios/documentos en la web a través de un sistema de nombres
-
HTML: (HyperText Markup Language): Lenguaje que permite incluir en documentos enlaces a otros documentos mediante URLs
- HTTP se utiliza para transferir páginas web del servidor al navegador
- Sigue el modelo Cliente-Servidor:
- Cliente: Es el navegador. Pide páginas y se las muestra la usuario
- Servidor: Aloja las páginas y se las entrega a los clientes que lo solicitan
- Funciona sobre TCP
- Por defecto HTTP escucha en el puerto 80
- HTTP sirve tanto para contenido estático (ficheros) como contenido dinámico (el resultado de ejecutar programas en el servidor)
- Una página web consta de uno o varios objetos
- Un objeto es un archivo (fichero HTML, foto JPG, programa javascript, hoja de estilo...) direccionable a través de su URL
- La mayoría de páginas web están formadas por un archivo HTML base y diversos objetos referenciados dentro del archivo como parte de la misma página
Tenemos la siguiente página web, cuyo fichero HTML base es el siguiente:
<!DOCTYPE html>
<html lang="es" dir="ltr">
<head>
<meta charset="utf-8">
<title>MI TIENDA</title>
<link rel="stylesheet" href="mi-css.css">
<script src="mi-js.js"></script>
</head>
<body onload="main();">
<p>BIENVENIDO A MI WEB</p>
<img src="logo-urjc.png" alt="NOPE" id="logo">
<br>
</body>
</html>
La página completa está formada por el archivo HTML en sí, el fichero de estilo (mi-css.css), el programa javascript (mi-js.js) y la imagen (logo-urjc.png)
Para mostrar la página, el cliente hace en total 4 peticiones al servidor: primero el html, luego la hoja de estilo, después el programa javascript y por último la imagen (el orden es el que está definido en el html)
Completamos el fichero HTML anterior con más etiquetas. ¿Cuantos objetos forman ahora la página web? ¿Cuántas peticiones realiza el cliente al servidor ahora?
<!DOCTYPE html>
<html lang="es" dir="ltr">
<head>
<meta charset="utf-8">
<title>MI TIENDA</title>
<link rel="stylesheet" href="mi-css.css">
<script src="mi-js.js"></script>
</head>
<body onload="main();">
<p>BIENVENIDO A MI WEB</p>
<img src="logo-urjc.png" alt="NOPE" id="logo">
<br/>
<a href="mi_fichero.pdf">Descargar</a>
<br/>
<a href="galeria.html">Acceso a la galería de fotos</a>
</body>
</html>
El protocolo HTTP utiliza conexiones TCP para la conexión entre el cliente y el servidor. Es siempre el cliente el que abre estas conexiones, y el servidor las cierra
El protocolo HTTP NO mantiene estado. El servidor NO guarda información sobre las peticiones anteriores hechas por un cliente
Los pasos para la conexión entre el cliente y el servidor son:
- El cliente abre una conexión TCP con el servidor
- El cliente envía un mensaje de petición, solicitando un recurso al servidor
- El servidor envía un mensaje de respuesta
- El servidor cierra la conexión TCP
Para analizar los tiempos de respuestas de las diferentes versiones de HTTP, utilizaremos las siguientes definiciones:
-
RTT: Tiempo necesario para enviar un paquete "pequeño" desde el cliente al servidor y otro de vuelta del servidor al cliente
-
Tiempo de respuesta: Tiempo desde que se solicitua al servidor un objeto y se recibe en el cliente
- Se envía un objeto como máximo por cada conexión TCP
- Es el comportamiento por defecto de la versión 1.0 de HTTP: HTTP/1.0
- Utilizaremos de ejemplo el fichero HTML del apartado anterior: en total el cliente recibe 4 objetos: el html + 3 ficheros adicionales
- El navegador abre una conexión TCP (Tardará un tiempo igual a RTT)
- Pide el primero objeto: El archivo HTML. Envía un mensaje de solicitud al servidor
- El servidor prepara el mensaje de respuesta, con el fichero HTML solicitado. Lo envía
- El servidor cierra la conexión TCP
- El cliente recibe el mensaje de respueta, que contiene el fichero HTML. Analiza el fichero y comprueba que tiene que pedir 3 fichero más: el css, el js y la imagen
- Repite los pasos 1-4 con el fichero CSS
- Repite los pasos 1-4 con el fichero JS
- Repite los pasos 1-4 con la imagen
- La página web está completa, y se puede mostrar totalmente al usuario
- HTML/1.1 utiliza por defecto conexiones persistentes
- Se permite enviar más de un objeto por una sola conexión TCP
Tenemos dos formas de utilizar las conexiones persistentes: con y sin pipelining
- La conexión TCP sólo se establece con la primera petición
- Se espera a recibir un fichero antes de solicitar el siguiente
- Por defecto en HTTP/1.1
- El cliente realiza la petición encuanto encuentra la referencia del objeto (No espera)
En este ejemplo, con la conexión no persistente necesitamos un total de 8 RTTs. Con la persistente sin pipelining 5 RTTs, mientras que con la persistente con pipelining 3 RTTs
- Hay dos tipos de mensajes: de solicitud y de respuesta
- Ambos tienen el mismo formato:
- Caracteres ASCII planos
- Líneas terminadas en \r\n
- Estructura: Línea inicial + cabeceras + línea en blanco + cuerpo (opcional)
(Dibujo)
TODO
(TODO)
(TODO)
(TODO)
(TODO)
(TODO)
(TODO)
- (TODO)
- Juan González-Gómez (Obijuan)
- Creado a partir del contenido generado por el profesor Jose María Cañas y otros profesores del departamento GSYC
S0: Presentación
S1: Tecnologías web
S2: HTML
S3: CSS
S4: Javascript
S5: Javascript II
S6: Elementos de audio y vídeo
S7: Protocolo HTTP
S8: Codificación Multimedia
S9: Codificación Multimedia (II)
S10: Comunicac. Multimedia (I)
S11: Comunicac. Multimedia (II)
S12: Arquitecturas de red para Multimedia
S13: Ejercicios
L0: Práctica 1-1
L1: Práctica 1-2
L2: Práctica 1-3
L3: Práctica 2-1
L4: Práctica 2-2
L5: Práctica 2-3
L6: Práctica 3-1
L7: Práctica 3-2
L8: Práctica 3-3
L9: Práctica 4-1
L10: Práctica 4-2
L11: Práctica 5-1
L12: Práctica 5-2
L13: 30-Abril
- Ordinario: 9-Mayo-2019. Hora: 12h-15h. Labs L3.210 y L3.208