Documente Academic
Documente Profesional
Documente Cultură
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?
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
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)
7
GSyC 2007
Conexiones HTTP no
persistentes
4. El servidor HTTP cierra la
conexin TCP.
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
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.
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.
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
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
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
17
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 ...
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
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
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
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
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
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
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