punto 3 – protocolo http juan luis cano. hypertext transfer protocol o http (en español protocolo...

27
Tema 4 – Servicio Web Punto 3 – Protocolo HTTP Juan Luis Cano

Upload: jose-luis-martinez-marquez

Post on 24-Jan-2016

236 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

Tema 4 – Servicio Web

Punto 3 – Protocolo HTTP

Juan Luis Cano

Page 2: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado en cada transacción de la World Wide Web.

HTTP es un protocolo sin estado, es decir, que no guarda ninguna información sobre conexiones anteriores. El desarrollo de aplicaciones web necesita frecuentemente mantener estado. Para esto se usan las cookies, que es información que un servidor puede almacenar en el sistema cliente. Esto le permite a las aplicaciones web instituir la noción de "sesión", y también permite rastrear usuarios ya que las cookies pueden guardarse en el cliente por tiempo indeterminado.

Protocolo HTTP

Page 3: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

El funcionamiento del protocolo HTTP es muy sencillo pero tiene varias funcionalidades para agilizar y mejorar el proceso por lo que puede resultar bastante complejo.

Funcionamiento

Page 4: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

1. Todo el proceso se inicia cuando un cliente web (navegador) o una aplicación web envía una petición al servidor, conectándose por defecto por el puerto 80.

2. Cuando se realiza la conexión el navegador envía una cabecera HTTP realizando la petición de la página que el usuario a solicitado en el navegador. Si no se especifica, el servidor buscará el fichero por defecto asignado (index.html), pero puede especificarse para que busque una dirección concreta de dicha página web.

3. Cuando ha recibido el mensaje, el servidor responde al navegador mediante un mensaje HTTP ofreciéndole la página que ha pedido. Si se ha realizado correctamente, el mensaje HTTP tendrá un código válido, si no fuera así mandaría un mensaje de error (4XX o 5XX), siendo las X otros dos números.

Funcionamiento Básico

Page 5: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

A continuación se muestra una petición HTTP típica, de la página principal de un sitio. Como puede verse se ofrecen muchos datos, como el cliente Web que pide la consulta (Firefox) y el tipo de datos que solicita (Imágenes)

GET / HTTP/1.1 Host: www.24x7linux.com User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2b) Gecko/20021016 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9, text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2, text/css,*/*;q=0.1 Accept-Language: es-es, en-us;q=0.66, en;q=0.33 Accept-Encoding: gzip, deflate, compress;q=0.9 Accept-Charset: ISO-8859-15, utf-8;q=0.66, *;q=0.66 Keep-Alive: 300 Connection: keep-alive

Ejemplo de una petición del cliente web

Page 6: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

Hay dos tipos de mensajes: De respuesta y de petición.

Mensajes HTTP

Page 7: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

Es el mensaje que envía el cliente al servidor para establecer una conexión vía HTTP y poder pedir un recurso o una página.

Mensajes de Petición

Page 8: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

Es el mensaje que envía el servidor para responder al cliente, enviándole la petición que ha realizado. •Los mensajes de respuesta siempre tienen 3 secciones: la línea inicial de estados, las lineas de cabecera y el cuerpo de la entidad.

Mensajes de Respuesta

Page 9: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

El protocolo HTTP consta de ocho métodos de interactuación con el servidor:

HEAD: Pide una respuesta idéntica a la que correspondería a una petición GET, pero sin el cuerpo de la respuesta. Esto es útil para obtener sólo los encabezados de respuesta, agilizando el proceso.

GET: Pide una representación del recurso especificado. Por seguridad no debe ser utilizado ya que transmite información sobre algunos parámetros a la URL.

DELETE: Borra el recurso especificado.

Métodos de petición

Page 10: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

TRACE: Este método solicita al servidor que envíe de vuelta en un mensaje de respuesta, en la sección del cuerpo de entidad, toda la data que reciba del mensaje de solicitud. Se utiliza con fines de comprobación y diagnostico.

OPTIONS: Devuelve los métodos HTTP que el servidor soporta para un URL específico.

CONNECT: Se utiliza para saber si se tiene acceso a un host. POST: Somete los datos a que sean procesados para el

recurso identificado. Los datos se incluirán en el cuerpo de la petición.

PUT: Sube, carga o realiza una subida de un recurso especificado, es el camino más eficiente para subir archivos a un servidor.

Métodos de petición restantes

Page 11: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

Las Cabeceras HTTP o Metatags, son los parámetros que se envían en una petición o respuesta HTTP al cliente o al servidor para proporcionar información esencial sobre la transacción en curso. Estas cabeceras proporcionan información mediante la sintaxis 'Cabecera: Valor' y son enviadas automáticamente por el navegador o el servidor Web.

Cabeceras

Page 12: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

Las cabeceras estandarizadas de HTTP son las siguientes: Accept: Determina el tipo de contenido o MIME que se

espera de la respuesta. Su valor debe ser una cadena MIME.

Accept-Charset: Determina el set de caracteres aceptable en la respuesta. Su valor debe ser un código de caracteres IANA.

Accept-Encoding: Determina la codificación (compresión) que se espera de la respuesta. Valores comunes suelen ser gzip, deflate o sdch.

Accept-Language: Determina el idioma aceptado para la respuesta. Su valor debe ser cualquier código de lenguaje estandarizado

Authorization: Determina la autentificación HTTP para la petición en curso.

Cabeceras estandarizadas

Page 13: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

Ante cada transacción con un servidor HTTP, hay varios tipos de código con los que puede responder dicho servidor:

1XX: Mensajes Informativos. 2XX: Mensajes asociados con operaciones realizadas

correctamente. 3XX: Mensajes de redirección, que informan de que es

necesario realizar operaciones adicionales para llevar a cabo una operación.

4XX: Errores del cliente, dados por que se ha realizado una consulta errónea o no puede ser realizada la operación.

5XX: Error del servidor que no ha podido llevar a cabo la solicitud.

Códigos de estado HTTP

Page 14: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

Código Comentario

Descripción

200 OK La operación se ha realizado correctamente

201 CreatedComo resultado de la operación, se ha creado un nuevo objeto ya disponible. La URL del objeto se adjunta en la respuesta.

202 AcceptedComo resultado de la operación, se ha creado un nuevo objeto que todavía no está disponible. La URL del objeto se adjunta en la respuesta.

204 No ContentLa operación ha sido aceptada pero no ha producido ningún resultado. El cliente no deberá modificar el documento que se muestra.

301Moved

PermanentlyEl objeto al que se quiere acceder ha sido movido a otro lugar permanentemente. El servidor proporciona, además, la URL donde se aloja el objeto.

302 FoundEl objeto al que se quiere acceder ha sido movido a otro lugar temporal. El servidor proporciona, además, la URL donde se aloja el objeto.

304 Not Modified Se devuelve cuando se realiza un GET condicional y el documento no ha sido modificado.

Tabla de códigos de respuesta HTTP

Page 15: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

Código Comentario

Descripción

400 Bad Request La petición tiene un error de sintaxis y no es entendible por el servidor.

401 Unauthorized La petición requiere un permiso especial, que normalmente es un nombre y una contraseña.

403 Forbidden El acceso a este recurso está prohibido. No es posible utilizar una clave para modificar la protección.

404 Not Found La URL solicitada no existe.

500 Internal Server Error

El servidor ha tenido un error interno y no puede continuar con el procesamiento.

501 Not Implemented

El servidor no tiene capacidad, por su configuración interna, para responder a la petición.

502 Bad GatewayEl servidor, que está actuando como Proxy o Gateway, ha encontrado un error al acceder al recurso que había solicitado el cliente.

503Service

UnavailableEl servidor está actualmente deshabilitado y no es capaz de atender al requerimiento.

Tabla de códigos de error HTTP

Page 16: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

La memoria caché HTTP es la parte del protocolo que permite a los clientes y servidores intercambiar información relacionada con la memoria caché.

Almacenamiento en caché

HTTP especifica varias cabeceras de caché para respuestas, como son:

Cache-ControlExpiresETagLast-Modified

Page 17: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

La cabecera Cache-Control es la única que no contiene una, sino varias piezas de información sobre la memoria caché de una respuesta.

Cada pieza de información está separada por una coma:

Cabecera Caché-Control

Page 18: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

El protocolo HTTP permite a los webmasters redireccionar sus páginas a otros enlaces mediante los códigos 301 y 302.

Redirecciones

Page 19: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

Con la redirección 301 estamos indicando al buscador que esa redirección es permanente, es decir, que una URL A ha cambiado definitivamente a la URL B.

Con la redirección 302 estamos indicando al buscador que esa redirección es temporal, es decir, que una URL A  se ha cambiado temporalmente a la URL B.

Diferencias entre redirecciones 301 y 302

Page 20: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

Se trata de comprimir la información enviada por el servidor del sitio web, dejando al navegador del visitante el trabajo de descomprimirlo. Esto se realiza automáticamente, sin que el visitante lo perciba ni deba intervenir.

Compresión

Page 21: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

Para realizarlo hay que descargar uno de los módulos del mismo, el mod_gzip

Realizar una compresión en Apache

Page 22: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

Para la autenticación, el protocolo HTTP incluye mecanismos tales como el digest access authentication, que permite acceder a una página web sólo cuando el usuario ha facilitado un nombre de usuario y contraseña correctos. Y ahí es donde se le dan sentido a las cookies

Cookies

Page 23: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

Una vez que se han introducido los credenciales, el navegador las almacena y las utiliza para acceder a las páginas siguientes, sin pedirlas de nuevo al usuario.

Internamente, el nombre de usuario y la contraseña se envían al servidor con cada petición del navegador.

Repetición de los datos

Page 24: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

En el contexto de una transacción HTTP, la autenticación de acceso básica es un método diseñado para permitir a un navegador web, u otro programa cliente, proveer credenciales en la forma de usuario y contraseña cuando se le solicita una página al servidor.

Autenticación

Page 25: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

Antes de que esta característica existiese, se necesitaba una conexión TCP separada para cada petición. Cuando un documento utilizaba enlaces a otros ficheros externos, la transmisión era extremadamente ineficiente. HTTP en su última versión, proporciona la posibilidad de establecer sesiones de mayor duración de manera que se permiten múltiples peticiones sobre la misma conexión TCP. Esta característica llega a proporcionar en algunos casos hasta un 50 por cien de mejora en los tiempos de latencia entre documentos HTML.

Conexiones Persistentes (Keep Alive)

Page 26: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

Los principales beneficios al usar conexiones persistentes son:

Se abren menos conexiones TCP, lo que ahora recursos (CPU, memoria, etc.).

Se pueden entubar (pipeline) peticiones y respuestas en una conexión. Esto permite al cliente hacer múltiples peticiones sin esperar a las respuestas.

Se reduce la latencia en peticiones al utilizar varias veces un canal ya abierto.

Ventajas de Keep Alive

Page 27: Punto 3 – Protocolo HTTP Juan Luis Cano. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado

Punto 4 – Configuración de un Servidor Web