Departament d Arquitectura de Computadors INTERCAMBIO DE OBJETOS HTTP: Hypertext Transfer Protocol Protocolo de comunicaciones estandarizado que comunica servidores, proxies-cachés y clientes. Permite la transferencia de documentos web HTTP define la sintaxis y la semántica que utilizan estos elementos para comunicarse Versiones HTTP/1.0 y HTTP/1.1 Protocolo en la capa de aplicación Web Correo FTP News HTTP POP3 SMTP FTP NNTP TCP/IP u otro Red física 2
HTTP Intercambio de mensajes de texto Se incluyen dentro de los paquetes TCP/IP Partes del mensaje: Línea inicial del mensaje Indica qué hacer (mensaje de petición) o qué ha ocurrido (mensaje de respuesta) Cabecera del mensaje Bloque de campos terminados por una línea en blanco Contiene los atributos del mensaje Cuerpo del mensaje Es opcional. Su presencia depende de la petición y del resultado. 3 HTTP Comandos de petición: GET, HEAD, POST (+ PUT, DELETE, ) Intercambio de objetos MIME Las páginas de tipo text/html (y tipos MIME integrados en el navegador) se despliegan de forma automática en el navegador Resto tipos MIME (tabla que asocia tipo MIME con un visor) GET /saludo.html HTTP/1.1 Host www.uv.es HTTP/1.1 200 OK Date: Sun, 01 May 2003 12:00:01 GMT Content-Type: text/html Content-Length: 45 <HTML> <BODY> Hola Mundo! </BODY> </HTML> 4
Proxies-Cachés Almacenan respuestas (susceptibles de ser guardadas) En una caché sólo se guardan las respuestas de las peticiones realizadas con GET y HEAD (POST no) Algunos no se puede (privados, dinámicos, de pago): WWW-Authenticate, Cache-control:private, Pragma:no-cache, Cache-control:no-cache, Set-Cookie Pueden ser activas o pasivas: Pasiva: aprovechar respuestas a peticiones de usuarios Activa: acumular documentos de interés en horas de bajo tráfico Pueden ser transparentes o no (configuradas en el navegador) Varios servidores de caché pueden cooperar jerarquía 5 Proxies-Cachés y HTTP Los mecanismos en HTTP/1.0 eran muy pobres. Pragma, Expires, If-Modified-Since y Last-Modified HTTP/1.1 añade mecanismos (cabeceras) Cache-Control, Age, Etag, El cliente puede forzar a la caché a que actualice siempre el objeto Pragma: no-cache (HTTP/1.0) Cache-Control: no-cache (HTTP/1.1) El servidor puede evitar que la caché guarde el objeto Cache-control: no-store (HTTP/1.1) 6
Proxies en HTTP/1.1 Cache-Control: Petición Respuesta No-cache No-store Max-age=sgs Max-stale Max-stale=sgs Min-fresh=sgs Only-if-cached cliente origen (cachés se inhiben) Proxy no debe almacenar perm anentem ente Petición/respta Máx "edad" aceptable obj en cachés Se aceptan objs viejos Se aceptan objs sgs segundos viejos Obj ha de quedarle sgs de vida Petición si sólo está en caché Public Private Private="cabc" No-cache No-cache="cabc" No-store No-transform M ust-revalidate Max-age Se puede cachear por proxies y cliente Sólo caché cliente Todos pueden excepto cabecera cabc: sólo caché cliente No cacheable ni en proxies ni cliente Com binación de los dos anteriores Nadie puede almacenar perm. (sólo mem) Proxies no pueden transf. contenido Revalidar (con origen) si es necesario Margen de edad en segundos 7 Proxies-Cachés Necesitan asegurar que los contenidos guardados en la caché son equivalentes a los almacenados en el servidor. Modelo de expiración: Reduce las peticiones al servidor Modelo de validación: Reduce la cantidad de datos a transmitir Proxy Proxy Navegador Servidor Origen 8
Proxies-Cachés: modelo de expiración 9 Proxies-Cachés: modelo de expiración Determina si el tiempo que lleva almacenado el objeto en la caché ha sobrepasado el máximo permitido. Si el objeto guardado en la caché no es lo suficientemente reciente, la caché valida el recurso con el servidor. Cabeceras HTTP involucradas, enviadas por el servidor: Expires: fecha (de expiración) Age: segundos (que el objeto llevaba almacenado en el servidor) Cache-Control: max-age = segundos Vida máxima del objeto. La caché decide que el recurso ha expirado si: La edad del recurso es mayor que la vida máxima (max-age). Edad = Age + tiempo de respuesta + tiempo en la caché. La fecha de expiración (Expires) ha sido sobrepasada 10
Proxies-Cachés: modelo de validación La caché contrasta con el servidor si el contenido del objeto ha cambiado. Utiliza peticiones condicionales: Basadas en la etiqueta (Etag) del objeto guardado en caché If-Match: etiqueta (Etag del objeto en la caché) / If-None-Match: etiqueta (idem) Basadas en la fecha de la última modificación (Last-Modified) If-Modified-Since: fecha (Last-Modified del objeto en caché) If-UnModified-Since: fecha (idem) Un objeto guardado en la caché será actualizado si: La fecha incluida en If-Modified-Since es anterior a la fecha de la última modificación del objeto en el servidor origen. La etiqueta incluida en If-None-Match no coincide con la del servidor origen. El servidor puede forzar la validación de la caché: Cache-Control: must-revalidate 11 HTTP: peticiones condicionales (1) Ejemplo: un cliente solicita un objeto que no está en caché El servidor envía un mensaje de respuesta con la cabecera Last- Modified, que se asocia al objeto en la caché del cliente GET /fruit/kiwi.gif HTTP/1.0 User-agent: Mozilla/4.0 HTTP/1.0 200 OK Date: Web, 12 Aug 1998 15:39:29 Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 09:23:24 Content-Type: image/gif (data) 12
HTTP: peticiones condicionales (2) Una nueva solicitud del mismo objeto incluye la cabecera If- Modified-Since Respuesta del servidor, en caso de que no se haya modificado el objeto desde la fecha indicada en If-Modified-Since GET /fruit/kiwi.gif HTTP/1.0 User-agent: Mozilla/4.0 If-Modified-Since: Mon, 22 Jun 1998 09:23:24 HTTP/1.0 304 Not Modified Date: Wed, 19 Aug 1998 15:39:29 Server: Apache/1.3.0 (Unix) (cuerpo vacío) 13 HTTP/1.1 Transferencias por rango de bytes GET /Default.htm HTTP/1.1 Host: docencia.ac.upc.es Range: bytes=0-80 HTTP/1.1 206 Partial content Server: Microsoft-IIS/5.0 Content-Type: text/html Content-Length: 81 Content-Range: bytes 0-80/19618 <HTML> 14
HTTP/1.1 Internacionalización del contenido (1) Cada día aparecen en la web millones de documentos escritos en cientos de lenguajes. HTTP da soporte para el transporte y procesado de documentos en lenguajes y alfabetos distintos. Los clientes mandan las cabeceras Accept-Charset y Accept-Language para indicarle al servidor los sistemas de codificación y lenguajes que el cliente entiende, así como cuales prefiere: Accept-Charset: iso-8859-1, utf-8 Accept-Language: es, en El servidor le indica al cliente el alfabeto y lenguaje utilizado con el parámetro charset de Content-Type y con la cabecera Content-Language. Content-Type: text/html; charset=iso-2022-jp Content-Language: jp 15 HTTP/1.1: Internacionalización del contenido (2) Ejemplo GET /~pdi/test.html HTTP/1.1 Connection: close User-Agent: Mozilla/5.0 [en] Host: www.uv.es Accept: image/gif, image/x-xbitmap, image/jpeg, Accept-Encoding: gzip Accept-Language: es Accept-Charset: iso-8859-1 HTTP/1.1 200 OK Date: Tue, 23 Jan 2001 12:44:27 GMT Server: Apache/1.3.9 (Unix) Debian/GNU Last-Modified: Tue, 23 Jan 2001 12:39:45 GMT ETag: "19e89f-22-3a6d7b91" Content-Length: 34 Content-Type: text/html; charset=iso-8859-1 <html>esto es una prueba</html> 16
HTTP/1.1: autenticación Autenticación RFC2617 GET /index.html HTTP/1.1 HTTP/1.1 401 Unauthorized WWW-Authenticate: Basic realm="wallyworld" GET /index.html HTTP/1.1 Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== HTTP/1.1 200 OK 17 Cookies HTTP es un protocolo sin manejo de estados Hay ausencia de estado tras cada par petición-respuesta Las cookies son información que el navegador guarda a solicitud del servidor Cookies de sesión (almacenadas en memoria) Cookies persistentes (almacenadas en disco duro) Pueden usarse para asociar estado Proporcionan una manera de conservar cierta información entre peticiones del cliente 18
HTTP/1.1: cookies Set-cookie: Value, Version, Path, Domain y Max-Age (RFC2109) GET /index.html HTTP/1.1 Set-Cookie: Customer= Prueba ; Version="1"; Path="/acme" POST /acme/pickitem HTTP/1.1 Cookie: $Version="1"; Customer= Prueba"; $Path="/acme" HTTP/1.1 200 OK 19