Sei sulla pagina 1di 21

HTTP

Bibliografa:
Redes de Computadores: un enfoque
descendente basado en Internet:
J.F Kurose y K.W. Ross.
Para realizar este material se han utilizado algunas transparencias
proporcionadas junto con el libro Redes de Computadores: un
enfoque descendente basado en Internet:
Copyright 1996-2002.
J.F Kurose y K.W. Ross.
Todos los derechos reservados
1
GSyC 2007

Protocolos de WWW
WWW proporciona un interfaz comn para acceder
a diferentes tipos de servicios/documentos a
travs de un sistema de nombres: Universal
Resource Locator (URL)
Describe una forma de incluir enlaces a URLs en
documentos textuales: HyperText Markup
Language (HTML)
Para acceder a WWW se utiliza un programa
navegador u ojeador (browser ) que se encarga de
obtener documentos hipermedia desde su lugar de
origen, utilizando el protocolo HyperText Transfer
Protocol (HTTP)

2
GSyC 2007

1
Qu es HTTP?

HyperText Transfer Protocol.


Es el protocolo que se utiliza para servir
pginas web.
Protocolo cliente-servidor.
Funciona sobre TCP, con el servidor
(normalmente) en el puerto 80.
No olvidar que HTTP puede servir tanto
contenido esttico (ficheros) como dinmico
(el resultado de ejecutar programas en el
servidor).
3
GSyC 2007

Interaccin cliente-
servidor en HTTP
1. El cliente abre una conexin
TCP con el servidor. Pet
ic i
2. El cliente enva un mensaje de nH
TT
Navegador Res P
peticin. (Explorer)
pue
sta
HT
3. El servidor responde con un TP
mensaje de respuesta.
TP
4. El servidor cierra la conexin HT P Servidor
n TT
TCP. t ic i H
Pe sta
de web
e
spu (Apache)
Re
HTTP no mantiene estado (no
hay informacin sobre las
conexiones entre una peticin Navegador
y otra). (Firefox)

4
GSyC 2007

2
Pgina web
Una pgina web consta de objetos.
Un objeto es un archivo (un archivo HTML,
una foto jpg, applet Java, etc) que es
direccionable a travs de su URL.
La mayora de las pginas web estn
formadas por un archivo HTML base y
diversos objetos referenciados.
Ej: una pgina HTLM y 5 objetos jpg es una
pgina formada por 6 objetos.

5
GSyC 2007

Conexiones HTTP
Conexiones HTTP no Conexiones HTTP
persistentes persistentes

Se enva un objeto como Se pueden enviar


mximo con una mltiples objetos con
conexin TCP. una sola conexin TCP
HTTP/1.0 utiliza entre el cliente y el
conexiones HTTP no servidor.
persistentes. HTTP/1.1 utiliza
conexiones persistentes
por omisin.

6
GSyC 2007

3
Conexiones HTTP no persistentes
(consta de texto
Supongamos que el usuario entra en el URL: y referencias a 10
www.escuela.edu/departamento/home.index imgenes jpeg)

1a. El cliente HTTP inicia la conexin


TCP con el servidor HTTP 1b. El servidor HTTP en el host
(proceso) de www.escuela.edu www.escuela.edu que estaba
en el puerto 80. esperando conexiones TCP en el
puerto 80 y acepta esta
Tiempo conexin, y se lo notifica al
2. El cliente HTTP enva un mensaje cliente.
HTTP de peticin (que contiene la
URL) a travs de la conexin TCP.
3. El servidor HTTP recibe el
El mensaje indica que el cliente
mensaje de peticin, compone un
quiere el objeto
/departamento/home.index mensaje de respuesta que
contiene el objeto solicitado, y
lo enva al cliente.

7
GSyC 2007

Conexiones HTTP no
persistentes
4. El servidor HTTP cierra la
conexin TCP.

5. El cliente HTTP recibe el


mensaje de respuesta que
contiene el archivo html.
Analizando el archivo html, se
encuentran referenciados 10
objetos jpeg.
Tiempo

6. Se repiten los pasos del 1 al 5


para cada uno de los 10
objetos jpeg. (consta de texto
y referencias a 10
imgenes jpeg)
8
GSyC 2007

4
Modelo del tiempo de
respuesta
Definicin de RTT: tiempo
necesario para enviar un
paquete pequeo desde el
cliente hasta el servidor y Establecimiento
despus de vuelta al cliente. de conexin TCP
Tiempo de respuesta: RTT
Un RTT para iniciar la Peticin
conexin TCP. de archivo
Un RTT para la peticin HTTP RTT
Tiempo de
transmisin
y los primeros bytes de
del archivo
respuesta HTTP de vuelta. Archivo
recibido
Tiempo de transmisin del
archivo:
Tiempo Tiempo

total = 2RTT+ tiempo de transmisin


9
GSyC 2007

HTTP/1.0
Establecimiento http://www.somewhere.com/index.html
de conexin TCP
RTT
index.html references: page1.jpg,
page2.jpg, page3.jpg.
Tiempo de transmisin de index.hml
RTT GET index.html

Fichero recibido
Cierre de conexin TCP
Establecimiento
de conexin TCP

GET page1.jpg
Tiempo de transmisin de page1.jpg

10
GSyC 2007

5
Conexiones HTTP
persistentes
Particularidades de HTTP no
persistente: Conexiones persistentes sin
Requieren dos RTT por objeto. pipelinig:
El sistema operativo gasta tiempo El cliente slo emite una nueva
en asignar los recursos del host peticin una vez que ha
para cada conexin TCP. recibido la anterior respuesta.
Los navegadores suelen abrir Un RTT por cada objeto
conexiones TCP paralelas para referenciado.
traer los objetos referenciados. Conexiones persistentes con
HTTP persistente: pipelining:
El servidor deja la conexin TCP Por defecto en HTTP/1.1
abierta tras enviar la respuesta.
El cliente hace su peticin tan
Los mensajes HTTP posteriores entre pronto como encuentra un
el mismo cliente/servidor se envan
por la misma conexin. objeto referenciado.
El servidor cerrar la conexin Tan slo un RTT para todos los
inactiva pasado un plazo. objetos referenciados.
11
GSyC 2007

Conexiones persitentes
sin pipeline
Establecimiento
de conexin TCP
http://www.somewhere.com/index.html
RTT
index.html references: page1.jpg,
page2.jpg, page3.jpg.

RTT GET index.html Tiempo de transmisin de index.hml


Fichero
recibido
GET page1.jpg
Tiempo de transmisin de page1.jpg

Tiempo de transmisin de page2.jpg

Tiempo de transmisin de page3.jpg


12
GSyC 2007

6
Conexiones persitentes
con pipeline
Establecimiento
de conexin TCP
http://www.somewhere.com/index.html
RTT
index.html references: page1.jpg,
page2.jpg, page3.jpg.

RTT GET index.html Tiempo de transmisin de index.hml

Fichero recibido
GET page1.jpg
GET page2.jpg
GET page3.jpg Tiempo de transmisin de page1.jpg
Tiempo de transmisin de page2.jpg
Tiempo de transmisin de page3.jpg

13
GSyC 2007

Formato de los mensajes


Mensajes legibles (compuestos por lneas de texto
casi en ingls):
Lnea inicial de peticin (diferente para peticin y
respuesta), terminada en CRLF (Carrier Return Line Feed).
Lneas de cabecera (0 ms), cada una terminada en CRLF:
Cabecera-X: Valor-XCRLF
Lnea en blanco (CRLF).
Cuerpo del mensaje (opcional).
Adems de CRLF, deberan tratarse adecuadamente
lneas terminadas en LF.

14
GSyC 2007

7
Mensaje HTTP de peticin:
formato general
Lnea de
mtodo versin
peticin
Nombre del campo de
cabecera
valor
Lneas de
cabecera
Nombre del campo de
cabecera valor
Lnea en blanco

Cuerpo del
mensaje

15
GSyC 2007

Lnea inicial (peticiones)

Especifica el recurso que se solicita y qu


se quiere de l:
Nombre del mtodo (GET, POST, HEAD)
Camino de acceso (path)
Versin de HTTP (siempre HTTP/x.y)
Ejemplo:
GET /directorio/otro/fichero.html HTTP/1.0

16
GSyC 2007

8
Ejemplo de mensaje HTTP de
peticin
Lnea de peticin
(GET, POST, GET /dir/pagina.html HTTP/1.1
HEAD) Host: www.escuela.edu
User-agent: Mozilla/4.0
Lneas de Connection: close
cabecera Accept-language:fr

Retorno de carro y (Retorno de carro extra, avance de lnea)


avance de lnea
que indican el final
de la cabecera

17
GSyC 2007

Lnea inicial (respuestas)


Proporciona informacin de estado:
Versin de HTTP (siempre HTTP/x.y).
Cdigo numrico de estado.
Cdigo de estado en ingls.
Cdigos de estado:
1xx: Mensaje informativo.
2xx: Resultado exitoso (200 OK).
3xx: Redireccin del cliente a otra URL (301 Moved
permanently, 303 See Other).
4xx: Error en el lado del cliente (404 Not Found).
5xx: Error en el lado del servidor (500 Server
Error).
18
GSyC 2007

9
Ejemplo de mensaje HTTP de
respuesta
Lnea de informacin
de estado (protocolo,
cdigo y la frase de HTTP/1.1 200 OK
estado) Connection: close
Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Lneas de
Last-Modified: Mon, 22 Jun 1998 ...
cabecera
Content-Length: 6821
Content-Type: text/html
Retorno de carro y
avance de lnea datos datos datos datos datos ...

Datos, por ejemplo,


el archivo
HTML solicitado 19
GSyC 2007

Lneas de cabecera
Mismo formato que las cabeceras de correo y News
(RFC 822, seccin 3).
HTTP/1.0: 16 cabeceras, ninguna obligatoria.
HTTP/1.1: 46 cabeceras, Host: obligatoria en las
peticiones (usada por los virtual hosts).
Se recomienda incluir en las peticiones al menos:
From: (direccin de correo).
User-Agent: (ej: Mozilla/4.7).
Se recomienda incluir en las respuestas al menos:
Server: (ej: Apache/1.3).
Last-Modified: (fecha GMT, usado por las caches).

20
GSyC 2007

10
Cabeceras comunes para
peticiones y respuestas
Content-Type:
Descripcin MIME de la informacin contenida en este mensaje.
MIME (Multipurpose Internet Mail Extensions): Estndar que
especifica como debe un programa transferir archivos multimedia (no
ASCII). Los tipos MIME se especifican con contenido/subtipo:
text/html, text/plain
image/gif, image/jpeg, image/tiff
video/mpeg, video/quicktime

Content-Length:
Longitud en bytes de los datos enviados.
Content-Encoding:
Formato de codificacin de datos enviados en el mensaje. Para enviar
datos comprimidos (z-gzip, o z-compress).
Date:
Fecha local de la operacin, incluye zona horaria.
21
GSyC 2007

Cabeceras slo para


Accept:
peticiones
Lista de tipos MIME aceptados por el cliente. Se puede utilizar * para indicar rangos de
tipos de datos; tipo/* indica todos los subtipos de un determinado medio, mientras que
*/* representa a cualquier tipo de dato disponible.
Authorization:
Clave de acceso que enva un cliente para acceder a un recurso de uso protegido o limitado.
From:
Direccin de correo electrnico del usuario del cliente Web que realiza el acceso.
If-Modified-Since:
Permite realizar operaciones GET condicionales, en funcin de si la fecha de modificacin
del objeto requerido es anterior o posterior a la fecha proporcionada.
Referer:
Contiene la URL del documento desde donde se ha activado este enlace. De esta forma, un
servidor puede informar al creador de ese documento de cambios o actualizaciones en los
enlaces que contiene.
User-agent:
Cadena que identifica el tipo y versin del cliente que realiza la peticin. Por ejemplo, los
browsers de Netscape envan User-Agent: Mozilla/4.5 [en]

22
GSyC 2007

11
Cabeceras slo para
Allow:
respuestas
Informa de los comandos HTTP opcionales que se pueden aplicar sobre el objeto al que se
refiere la respuesta
Expires:
Fecha de expiracin del objeto enviado.
Last-modified:
Fecha local de modificacin del objeto devuelto
Location:
Informa sobre la direccin exacta del recurso al que se ha accedido. Cuando el servidor
proporciona un cdigo de respuesta de la serie 3xx, este parmetro contiene la URL necesaria
para accesos posteriores a este recurso.
Server:
Cadena que identifica el tipo y versin del servidor: Server: Apache/1.3.0 (Unix)
WWW-Authenticate:
Cuando se accede a un recurso protegido o de acceso restringido, el servidor devuelve un
cdigo de estado 401, y utiliza este campo para informar de los modelos de autentificacin
vlidos para acceder a este recurso.

23
GSyC 2007

Cuerpo del mensaje


En las respuestas contiene el recurso pedido o
texto explicando un error.
En las peticiones contiene datos de usuario o
ficheros para subir.
Si hay cuerpo, normalmente hay algunas
cabeceras relativas a l:
Content-Type: tipo MIME (Multipurpose
Internet Mail Extensions) de los datos.
Content-Length: nmero de bytes en el cuerpo.

24
GSyC 2007

12
Mtodos GET, HEAD y
POST
GET:
Solicita un objeto al servidor especificando su URL.

HEAD:
Igual que un GET, pero slo pide las cabeceras.
Se pueden consultar las caractersticas sin bajarse el fichero:
Permite que los clientes puedan verificar un link o comprobar si ha habido
modificaciones en cierto objeto, sin necesidad de transferir todo el objeto.
POST:
Hay datos en el cuerpo (que se suben al servidor).
Se especifica en la cabecera Content-Type y Content-Length.
La URL pedida es normalmente el programa que trata los datos
enviados.
Tambin se pueden enviar datos con un GET (codificndolos en el
URL pedido).

25
GSyC 2007

Ejemplo de envo de datos


con GET / POST
GET /indice.jsp?nombre=Fulano+Mengano&OK=1 HTTP/1.0
Host: www.unejemplo.com ?: separacin entre el recurso
User-Agent: Mozilla/4.5 [en] de los parmetros
Accept: image/jpeg, image/gif, text/html +: espacio
Accept-language: en &: separacin entre
Accept-Charset: iso-8859-1 parmetros

POST /indice.jsp HTTP/1.0


Host: www.unejemplo.com
User-Agent: Mozilla/4.5 [en]
Accept: image/jpeg, image/gif, text/html
Accept-language: en
Accept-Charset: iso-8859-1
Content-Type: application/x-www-form-urlencoded
Content-Length: 26

nombre=Perico+Palotes&OK=1

26
GSyC 2007

13
Otros mtodos
PUT:
Actualiza informacin sobre un objeto del servidor.
Similar a POST, pero el servidor debe almacenar en URL
que acompaa el comando el contenido del mensaje
DELETE:
Elimina en el servidor el documento especificado.
LINK:
Crea en el servidor una relacin entre documentos.
UNLINK:
Elimina una relacin existente entre documentos del
servidor.

27
GSyC 2007

Emulando un cliente HTTP


1. Telnet a un servidor de web:
telnet www.urjc.es 80 Abre conexin con el puerto 80
en www.urjc.es
Cualquier cosa que se tecle se enva al puerto
80 de www.urjc.es

2. Escribir una peticin HTTP:


GET /index.html HTTP/1.0 Enva una peticin de la pgina
index.html (es necesario dar dos
veces al retorno de carro).

3. Observar la respuesta del servidor!


28
GSyC 2007

14
Representante (proxy)
HTTP
Intermediario entre un cliente y servidor
un servidor.
Es por tanto a la vez cliente y Servidor
servidor. Pet
ic i TP
R n H proxy n
HT
Usos: cortafuegos, cachs, etc. cliente espu TT i c i TP

e sta
P Pet a HT
s t
Las peticiones a un proxy incluyen HT pue
TP Res
la URL completa en la primera TP
HT
lnea del mensaje de peticin: i n TP
e t ic a HT
P
Si no se incluye la URL completa, est
spu

estaremos utilizando esta mquina Re
como servidor de web
cliente
Pueden encadenarse varios servidor
proxies.
Ejemplo de peticin a un proxy:
GET http://gsyc.escet.urjc.es/index.html HTTP/1.0
29
GSyC 2007

HTTP 1.1
Es una evolucin de HTTP 1.0.
Facilidades especficas para mquinas virtuales
(virtual hosts).
Codificacin por racimos, para respuestas
dinmicas (envo antes de saber el tamao total).
Uso de conexiones persistentes que permiten
varios envos sucesivos (se evitan establecimientos
de conexin).
Facilidades especficas para cachs
(If-Modified-Since, If-Unmodified-Since).

30
GSyC 2007

15
Virtual hosts
Para tener virtual hosts es preciso indicar en cada
peticin a cul de ellos se dirige. Por eso es obligatorio
el uso de la cabecera Host.
Los hosts virtuales permiten hacer funcionar ms de un sitio web en
una sola mquina. Los sitios web virtuales pueden estar "basados en
direcciones IP", lo que significa que cada sitio web tiene una
direccin IP diferente, o "basados en nombres diferentes", lo que
significa que con una sola direccin IP estn funcionando sitios web
con diferentes nombres (de dominio).
Si un servidor recibe una peticin sin Host, debe
devolver un mensaje de error (400 Bad Request).
Los servidores tambin han de aceptar primeras lneas
de peticin con URLs completas, en lugar de caminos
(ser lo habitual en versiones futuras).
Ejemplo de peticin mnima:
GET /dir/index.html HTTP/1.1\r\n
Host: gsyc.escet.urjc.es\r\n
\r\n 31
GSyC 2007

Codificacin por racimos


Cabecera Transfer-Encoding: chunked.
Usada por un servidor que quiere enviar trozos que
ya tiene listos antes de tener todo.
El cuerpo de cada mensaje por racimos contiene
una serie de racimos, cada uno:
Comienza por el tamao de los datos del racimo, en
hexadecimal, seguidos por ;, quizs algo ms, y CRLF.
Los datos, terminados por CRLF.
Terminado por una lnea con 0CRLF.
Seguido de footers (como cabeceras).
Terminado en una lnea en blanco (CRLF).

32
GSyC 2007

16
Ejemplo de respuesta del
servidor codificada por racimos
HTTP/1.1 200 OK\r\n
Date: Fri, 27 Jan 2001 23:00:00 GMT\r\n
Content-Type: text/plain\r\n
Transfer-Encoding: chunked\r\n
\r\n
1a; datos que se pueden ignorar\r\n
abcdefghijklmnopqrstuvwxyz\r\n
10;\r\n
1234567890\r\n
0\r\n
a-footer: su-valor\r\n
another-footer: otro-valor\r\n
\r\n

33
GSyC 2007

Conexiones persistentes
Permiten que varias peticiones y respuestas
sean transferidas usando la misma conexin
TCP.
Se usan por omisin en HTTP 1.1.
Si se enva la cabecera Connection: close
el servidor cerrar la conexin despus de
cada respuesta.
Un servidor puede cerrar la conexin antes
de enviar todas las respuestas.
El servidor cerrar las conexiones inactivas
pasando un plazo (ej: 10 segundos).
34
GSyC 2007

17
Cach en el cliente
Objetivo: no enviar cliente servidor
objetos si el cliente
tiene una versin cach mensaje HTTP de
actualizada. peticin
If-modified-since: <date>
objeto
no
Cliente: especifica la modificado
fecha de la copia en respuesta HTTP
cach en la peticin
HTTP/1.0 304 Not Modified

HTTP:
If-modified-since: <date>
mensaje HTTP de
Servidor: su respuesta peticin
no contiene ningn If-modified-since: <date> objeto
objeto si la copia en modificado
cach est actualizada: respuesta HTTP
HTTP/1.0 304 Not Modified HTTP/1.0 200 OK
<data>
35
GSyC 2007

Cachs

Los servidores deben responder siempre con


la cabecera Date (con la fecha actual, en
GMT).
Los servidores han de entender If-Modified-
Since y If-Unmodified-Since (los clientes
pueden usarlos).
Respuesta a If-Modified-Since: Not
Modified.
Respuesta a If-Unmodified-Since:
Precondition Failed.
36
GSyC 2007

18
HTTPS
HTTP sobre SSL (Secure Socket Layer).
La conexin TCP est cifrada, de forma que
una tercera parte no puede conocer su
contenido.
Permite enviar datos sensible a un
servidor web, y recibirlos de l.
Necesita de otros mecanismos
(certificados, etc.) para ofrecer un nivel de
seguridad razonable.
Las URLs son https://.
37
GSyC 2007

Galletitas (cookies)
Sirven para asociar estado a un conjunto de
operaciones (peticiones/respuesta).
Normalmente son datos asociados a un
usuario (carro de la compra, cuenta de
usuario, etc.)
Las galletitas son generadas por los
servidores, y presentadas por los clientes en
ciertas ocasiones.
Especificacin original de Netscape, luego
propuesta como RFC 2109.

38
GSyC 2007

19
Cookies: mantenimiento del
estado
cliente Servidor amazon.com
en
d tra
Tpico msj http de peticin
Archivo el servidor e dat da en
de cookie os
Tpico mensaje de crea un nmero d e la b a
res se
ebay: 8734 respuesta + de identificacin pa
ld o
Set-cookie: 1678 1678 para el usuario
Archivo
de cookie Tpico mensaje http de
amazon: 1678 peticin Accin so
ebay: 8734 cookie: 1678 especfica acce
Tpico mensaje de respuesta cookie
so
ce
una semana ms tarde: ac
Tpico mensaje http de
Archivo
peticin Accin
de cookie
amazon: 1678 cookie: 1678 especfica
ebay: 8734 Tpico mensaje de respuesta cookie

39
GSyC 2007

Cabecera Set-Cookie
Cabecera puesta por un servidor cuando quiere enviar una galletita.
Formato:
Set-Cookie:
Nombre de la galletita y valor (nombre=valor).
Fecha de caducidad (expires=fecha).
Dominio, camino (domain=dominio path=camino). Para decidir
ms tarde si se enva una galletita o no.
secure: si est marcada as, slo se transmitir sobre canales
seguros (HTTPS).
Ejemplo:
Set-Cookie: unnombre=unvalor; expires=Mon, 30-Jan-2001
12:35:23 GMT; path=/dir; domain=mi.dominio.com; secure

40
GSyC 2007

20
Cabecera Cookie
Cuando un cliente pide una URL, buscar en su lista
de galletitas si hay alguna que tenga que enviar
(segn domain y path).
Enviar todas las galletitas en una nica cabecera
(Cookie).
Dentro de esta cabecera, las galletitas se
ordenarn de ms a menos especficas (segn su
path).
No se consideran las galletitas con caducidad en el
pasado (de hecho, se eliminan).
Ejemplo:
Cookie: unnombre=unvalor; otronombre=otrovalor
41
GSyC 2007

Referencias
Definition of URL/URI syntax, RFC 2396. http://www.cis.ohio-
state.edu/htbin/rfc/rfc2396.html
HTTP Made Really Easy. A Practical Guide to Writing Clients and
Servers, por James Marshall. http://www.jmarshall.com/easy/http/
HTTP 1.0, RFC 1945.
http://www.cis.ohio-state.edu/htbin/rfc/rfc1945.html
HTTP 1.1, RFC 2068.
http://www.cis.ohio-state.edu/htbin/rfc/rfc2068.html
An Overview of SHTTP, por Adam Shostack.
http://www.homeport.org/adam/shttp.html
Persistent Client State. HTTP Cookies, Netscape.
http://www.netscape.com/newsref/std/cookie_spec.html
HTTP State Management Mechanism, RFC 2109. http://www.cis.ohio-
state.edu/htbin/rfc/rfc2109.html

42
GSyC 2007

21

Potrebbero piacerti anche