http 1.1 clase 4 - curso front-end 2014 - open webinars

19
HTTP 1.1 Hypertext Transfer Protocol OpenWebinars Curso de front-end (2014) Sergio Rus @sergiorus

Upload: openwebinarsnet

Post on 17-Aug-2015

21 views

Category:

Education


1 download

TRANSCRIPT

Page 2: Http 1.1   clase 4 - curso front-end 2014 - open webinars

http://www.keepbrowsersafe.com

Page 3: Http 1.1   clase 4 - curso front-end 2014 - open webinars

● Protocolo de propósito general● Originalmente diseñado para hypermedia (HTML)● Modelo cliente-servidor● Stateless (no se guarda el estado)● Conexiones persistentes (HTTP 1.1)● API muy simple (métodos HTTP)

Principales características

Page 4: Http 1.1   clase 4 - curso front-end 2014 - open webinars

Protocolo de propósito general

HTTP fue originalmente diseñado para transmitir sólo documentos HTML. Posteriormente se amplió a otros tipos de datos (Internet media types, antes conocido como MIME types).

Page 5: Http 1.1   clase 4 - curso front-end 2014 - open webinars

Cliente-servidor

El cliente (navegador web, app del móvil, etc) siempre es el que inicia la comunicación enviando una petición HTTP (HTTP request) al servidor. Éste procesa la petición, genera una respuesta y la envía al cliente mediante una respuesta HTTP (HTTP response).

Page 6: Http 1.1   clase 4 - curso front-end 2014 - open webinars

http://slides.com/onema/http-protocol

HTTP request

HTTP request

HTTP request HTTP response

HTTP response

Cliente-servidor

Page 7: Http 1.1   clase 4 - curso front-end 2014 - open webinars

Petición (request)

Una petición es un mensaje que transmite el cliente al servidor con el propósito de acceder a un recurso alojado en éste. Un recurso es cualquier pieza de información que pueda ser identificada con una URI (URL o URN). Los recursos no tienen porqué identificar sólo datos almacenados en el servidor. Un recurso puede ser un concepto.

Page 8: Http 1.1   clase 4 - curso front-end 2014 - open webinars

Respuesta (response)

Es el mensaje que transmite el servidor al cliente en respuesta a su petición.

Page 9: Http 1.1   clase 4 - curso front-end 2014 - open webinars

Estructura de un mensaje HTTP

Tanto las peticiones como las respuestas tienen una estructura similar:

● Línea de estado● Encabezados● Opcionalmente, el cuerpo del mensaje (datos)

Page 10: Http 1.1   clase 4 - curso front-end 2014 - open webinars

Estructura de un petición HTTP

La línea de estado contiene: ● El método HTTP usado (GET)● La URI del recurso (/)● La versión del protocolo (HTTP 1.1)

En HTTP 1.1 es obligatorio incluir siempre la cabecera Host.

GET / HTTP 1.1Host: www.example.comAccept: text/html

Page 11: Http 1.1   clase 4 - curso front-end 2014 - open webinars

Estructura de un respuesta HTTP

La línea de estado contiene: ● La versión del protocolo (HTTP 1.1)● El código de respuesta (200)● Descripción del código (OK)

El resto serían cabeceras y el cuerpo.

HTTP/1.1 200 OKDate: Mon, 08 Dec 2014 19:04:39 GMTContent-Type: text/html

Page 12: Http 1.1   clase 4 - curso front-end 2014 - open webinars

Stateless

Una de las características más importantes de HTTP es que todas las peticiones (requests) son independientes: no se guardan datos (estado) entre una petición y otra, es decir, el servidor debe tratar cada petición de forma independiente. Es una de las claves para poder escalar la arquitectura de la red hasta el tamaño de Internet.

Page 13: Http 1.1   clase 4 - curso front-end 2014 - open webinars

Conexiones persistentes

HTTP es un protocolo de aplicación que requiere un protocolo de transporte para transmitir los datos. El protocolo de transporte (TCP, SPDY, etc) es el encargado de gestionar cada conexión: abrir conexión, transmitir datos, cerrar conexión.

El coste de abrir una nueva conexión es muy alto, tanto para el cliente como para el servidor.

Page 14: Http 1.1   clase 4 - curso front-end 2014 - open webinars

Conexiones persistentes

Gracias a las conexiones persistentes, característica añadida en la versión 1.1 de HTTP (versión actual), el cliente y el servidor pueden realizar varias peticiones HTTP reutilizando la misma conexión proporcionada por el protocolo de transporte. Aunque la conexión sólo se mantiene abierta por un tiempo limitado cuando deja de haber actividad.

Page 15: Http 1.1   clase 4 - curso front-end 2014 - open webinars

Conexiones persistentes

Aunque las conexiones persistentes permiten minimizar el número de conexiones requeridas, actualmente los navegadores pueden abrir de media hasta 6 conexiones simultáneas por host. El problema es que también existe un límite para el número total de conexiones simultáneas a lo largo de todos los hosts. La cifra varía mucho de un navegador a otro, pero se mueve entre 10 y 17.

Page 16: Http 1.1   clase 4 - curso front-end 2014 - open webinars

Conexiones persistentes

Conclusión: minimizar el número de conexiones totales tratando de reutilizar las conexiones ya abiertas (conexiones persistentes) y aprovechando la caché del navegador. ¡La conexión más rápida es aquella no efectuada!

Page 17: Http 1.1   clase 4 - curso front-end 2014 - open webinars

● GET: Obtener un recurso.● POST: Crear un recurso.● PUT: Actualizar o crear un recurso (si no existía).● DELETE: Eliminar un recurso.● OPTIONS: Información del servidor.● HEAD: Igual que GET, pero sólo obtiene cabeceras.

Métodos HTTP

Con ellos el cliente indica al servidor qué tipo de acción quiere realizar. Los más usados son:

Page 18: Http 1.1   clase 4 - curso front-end 2014 - open webinars

curl -v www.example.comcur -v -X HEAD www.example.comcurl -v -X OPTIONS www.example.com

Métodos HTTP

Veamos algunos ejemplos con cURL:

Page 19: Http 1.1   clase 4 - curso front-end 2014 - open webinars

● 1xx Informational: Información provisional.● 2xx Success: La acción se realizó correctamente.● 3xx Redirection: El cliente debe realizar otra acción.● 4xx Client Error: Error en la petición del cliente.● 5xx Server Error: Error del servidor al procesar la petición.

Status codes

Los códigos de respuesta se pueden dividir en 5 categorías: