Documentos de Académico
Documentos de Profesional
Documentos de Cultura
03 HTTP
03 HTTP
Transferencia de Hipertexto
Representación y Gestión de
datos en Internet
1
Definición…
El Protocolo de Transferencia de HiperTexto
(Hypertext Transfer Protocol) es un sencillo
protocolo cliente-servidor que articula los
intercambios de información entre los clientes Web
y los servidores HTTP.
2
Porque HTTP fue Necesario?
De acuerdo con Tim Berners Lee, se hacia
necesario un protocolo con las siguientes
características:
Un subconjunto de FTP
La capacidad de solicitar una búsqueda
indexada.
Lograr una negociación automática del
formato
La capacidad de redireccionar al cliente a otro
servidor
3
Características…
Toda la comunicación entre los clientes y servidores se
realiza a partir de caracteres de 8 bits. De esta forma, se
puede transmitir cualquier tipo de documento: texto, binario,
etc., respetando su formato original.
4
Características…
Cada operación HTTP implica una conexión con el servidor,
que es liberada al término de la misma. Es decir, en una
operación se puede recoger u obtener un único objeto.
5
Terminologia…
Agente de usuario: Cliente que inicia una
peticion (browser, editor, etc)
Servidor origen: Servidor sobre el cual
reside un recurso dado (web server)
Proxy: actúa como ambos, como servidor o
como cliente
Gateway: Servidor el cual actua como
intermediario para otros servidores.
6
Arquitectura Simple
7
TCP
8
Establecimiento Conexión
9
Liberación de Conexión
10
¿Qué es un Web Cluster?
Es definido como un grupo de
servidores que trabajan de manera
conjunta como un servicio coherente
para la provisión de servicios
escalables y disponibles en Internet.
Este web cluster soporta su
funcionamiento sobre tecnologías para
distribuir tráfico a los back servers.
11
Load Balance: DNS Round
Robin
12
Load Balance: DNS Round
Robin
13
Load Balance (two way):
Packet Rewriting
14
Politicas para Balanceo de
Carga
Ramdon Server Selection
Round Robin
Weighted Distribution:
Static
Dynamic
Least Connections
Fewest Packets
Least Busy Server
15
HTTP
Request
File System
16
Recursos…
Un recurso es un pedazo de informacion que puede ser identificado
por un URL (Universal Resource Locator)
17
Universal Resource Locator
protocol://host:port/path#anchor?parameters
http://www.cs.huji.ac.il/~dbi/index.html#info
http://www.google.com/search?hl=en&g=blabla
19
war&peace Tolstoy
20
tp://www.google.com/search?hl=en&q=war%26peace+Tolst
21
Nesting in Page
Index.html
What
What we
we see
see on
on the
the browser
browser can
can be
be
aa combination
combination of
of some
some resources
resources 22
Nested Objects
Suppose a client accesses a page
containing 10 inline images, how many
sessions will be required to display the page
completely?
The answer is 11 HTTP sessions – why?
Some browsers/servers support a feature
called keep-alive which can keep the
connection open until it is explicitly closed
How can this help?
23
Sesión HTTP
Una sesión básica de HTTP tiene 4
fases :
1. El cliente abre la conexion (Conexion
TCP)
2. El cliente hace una peticion (request)
3. El servidor envia una respuesta
(response)
4. El servidor cierra la conexion.
24
Protocolo sin estado…
HTTP es un protocolo sin estados, lo cual
significa que una vez que el servidor haya
entregado los datos al cliente, la conexión
es cerrada
25
Formato de un Request y un
Response
Una linea de petición inicial
Ninguna o algunas lineas de encabezado.
Una línea en blanco
Un cuerpo de mensaje opcional; por
ejemplo un archivo, algún query, etc.
Línea de Petición
Entity Body
27
Ejemplo de Request…
28
Request
method Example
request URL
GET /index.html HTTP/1.1 version
Accept: image/gif, image/jpeg
User-Agent: Mozilla/4.0
Host: www.cs.huji.ac.il:80
Connection: Keep-Alive
[blank line here]
headers
29
Métodos Request…
GET (Obtener)
HEAD (Cabeza)
POST (Correo)
PUT (Poner)
PATCH (Parche)
COPY (Copiar)
MOVE (Mover)
DELETE (Borrar)
LINK (Enlace)
UNLINK (Enlace roto)
TRACE (trazar)
WRAPPED (Envolver)
30
GET Request
Es el método usado con mayor frecuencia.
Es una petición para obtener un recurso de
la Web.
Es utilizado cuando el navegador demanda
un objeto que se identifica por el contenido
del campo URL.
Podría resumirse en que solicita la lectura
de una pagina Web
La información se devuelve en el campo
cuerpo de entidad (en la respuesta…)
31
HEAD Request
Es idéntica al GET.
Retorna información del encabezado para el documento
solicitado.
La diferencia radica en que en la respuesta del servidor no
debe incluir un cuerpo de entidad.
Útil para solicitar información sobre un recurso sin necesidad
de recuperarlo.
Es solicitar información del encabezado sin obtener la página
realmente.
Método muy útil para chequear características de un recurso
sin descargarlo, con ésto se economiza uso de ancho de
banda.
Útil para probar hipervinculos, accesibilidad y modificaciones
reciente.
32
Post
Método que permite que el cliente pueda enviar
datos al Servidor.
Es una petición que le indica al servidor web que
acepte la entidad que se envia como subordinada
del URL identificado.
La relación de subordinación entre entidad – URL
se plantea de la misma forma en la que un fichero
esta subordinado a un directorio.
POST es muy utilizado en relleno de formas:
Los datos diligenciados en la forma son “traducidos” por
el browser a un formato especial y éstos son enviados
hacia una aplicación en el servidor web utilizando el
método POST
33
Post (cont.)
El URL solicitado es el URL de un
programa que manipule los datos que
son enviados. No es un archivo.
La respuesta del HTTP es
normalmente la salida de un
programa, no un archivo estático.
Los datos son enviados con el request
en el cuerpo del mensaje.
34
Post Example
Here's a typical form submission,
using POST:
POST /path/register.cgi HTTP/1.0
From: frog@cs.huji.ac.il
User-Agent: HTTPTool/1.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 35
home=Ross+109&favorite+flavor=flies
35
Headers
HTTP 1.0 defines 16 headers
none are required
HTTP 1.1 defines 46 headers
one header (Host:) is required in
requests that are sent to Web servers
36
Examples of Headers
If an HTTP message includes a body, there
are usually header lines in the message that
describe the body, for example
Content-Type:
gives the MIME-type of the data in the body,
such as text/html or image/gif
Content-Length:
gives the number of bytes in the body
38
Linea inicial de una
Respuesta.
La primera línea de una respuesta http
es conocida como linea de status.
The initial line consists of
Versión de HTTP
Correspondiente código de status.
Correspondiente mensaje de status.
39
Format
Format of
of Response
Response
headers
lines
header : value cr lf
cr lf
Entity Body
40
Response Example
HTTP/1.0 200 OK
Date: Fri, 31 Dec 1999 23:59:59 GMT
Content-Type: text/html
Content-Length: 1354
<html>
<body>
<h1>Hello World</h1>
(more file contents) . . .
</body>
</html>
41
Response Example
version status code
reason phrase
HTTP/1.0 200 OK
Date: Fri, 31 Dec 1999 23:59:59 GMT
Content-Type: text/html
Content-Length: 1354
headers
<html>
<body>
<h1>Hello World</h1>
(more file contents) . . .
</body> message body
</html>
42
Código de Estados…
Existe una infinita cantidad de códigos de
estado definidos en HTTP/1.1. Éstos
códigos se organizan de la siguiente
manera:
De información.
De éxito.
De reedirección
De error del cliente.
De error del servidor.
43
Status Code
The status code is a three-digit integer,
and the first digit identifies the general
category of response:
1xx indicates an informational message
2xx indicates success of some kind
3xx redirects the client to another URL
4xx indicates an error on the client's part
Yes, the system blames it on the client if a
resource is not found (i.e., 404)
5xx indicates an error on the server's part
44
Response Information
Description of information in the headers:
Server Type of server
Date Date and time
Content-Length Number of bytes
Content-TypeMime type
Content-Language English, for example
Content-Encoding Data compression
Last-ModifiedDate when last modified
Expires Date when file becomes invalid
45
New Features in HTTP 1.1
Persistent connections
Virtual Hosts
That is why the HOST header is required
46
Persistent vs. Non-Persistent
Connection
Cualquier página que nosotros observamos
en un browser puede incluir más de un
recurso.
Los recursos son enviados desde el servidor
hacia el cliente uno después de otro.
El envío de los recursos hacia el browser
pueden ser usando conexiones persistentes
o no persistentes
47
Non-Persistent Connection
1. El cliente HTTP inicia la conexión con el servidor
www.escuela.edu.co sobre el puerto 80.
2. El cliente HTTP envía al servidor un mensaje de petición (request).
Éste mensaje incluye el nombre de la ruta
/departamento/home.index
3. El servidor recibe el mensaje de petición, recupera el objeto
/departamento/home.index del filesystem, encapsula el objeto en el
mensaje de respuesta(response) y lo envia.
4. El servidor HTTP dice a TCP que cierre la conexión.
5. El cliente HTTP recibe el mensaje de respuesta. Finaliza la
conexión TCP. El mensaje indica que es un archivo HTML. El
cliente extrae el archivo y encuentra las referencias de 10 objetos
(10 imágenes).
6. Se repiten los 4 primeros pasos.
48
Persistent Connection
1. Browser opens TCP connection to port 80 of
server (handshake)
2. Browser sends http request message
3. Server receives request, locates object, sends
response
4. Browser receives response, parses object
5. Browser repeats steps 2-4 for each
embedded object
6. TCP connection closes on demand or timeout
49
Pipelines
2 types of persistent connections
without pipelining
50
Virtual Hosts
With HTTP 1.1, one server at one IP address
can be multi-homed:
“www.cs.huji.ac.il” and “www.math.huji.ac.il” can
live on the same server
These are called virtual hosts
Without this mechanism, we have to use 2
different IP addresses
It is like several people sharing one phone
An HTTP request must specify the host
name (and possibly port) for which the
request is intended (this is done using the
Host header)
51
Virtual Hosting (cont.)
Virtual hosting
reduces hardware expenditures
extends the ability to support additional
servers
makes load balancing and capacity planning
much easier
Without it
each host name requires a unique IP address,
and we are quickly running out of IP
addresses with the explosion of new domains
52
Caching
53
Modelo de expiración
Los servidores pueden proveer un expiration
time utilizando un encabezado Expires
Chequeando el tiempo de expiración, el cache
puede retornar un fresh response sin contactar
el servidor
If el tiempo de expiración no es especificado,
el cache puede heuristicamente estimar el
tiempo de expiración (e.g., usando valores de
encabezado como Last-Modified)
54
Autenticación…
Habrá observado que algunos sitios obligan
a los usuarios a proporcionar una palabra
clave para acceder a los documentos del
servidor.
GET ~dbi/getGrade.jsp
server
client
Authorization Required www.cs.huji.ac.il
GET ~dbi/getGrade.jsp
Authorization: user snoopy:passwordofsnoopy
Response
57
Cookies
58
Cookies
Ejemplo:
Un cliente contacta un web site por primera vez
El servidor responde incluyendo el encabezado
Set-cookie : 1678453
El cliente almacena el valor de la cookie y el
nombre del servidor en un archivo especial
“cookie file”
Por lo tanto, para cada petición futura al server
el cliente adicionara el siguiente encabezado:
Cookie : 1678453
59
Links
http://www.w3.org/Protocols/
http://www.w3.org/Protocols/Specs.html
http://www.jmarshall.com/easy/http/
http://wdvl.com/Internet/Protocols/HTTP/a
rticle.html
60
Actividad http1
Utilizando el programa ethereal,
realizar la decodificación del protocolo
http de la carga de una página web
desde un browser hacia un servidor.
La página debe contener diferentes
tipos de recursos.
61
Actividad http2
Realizar la instalación de un servidor http Apache.
Utilizar una plataforma de SO windows o linux
Probar las funcionalidades:
Opciones de configuración del directorio DocumentRoot
Seguridad respecto a:
Autenticación y autorización
Control de acceso por IP, dominio, directorio, etc)
Web Seguro (SSL). Qué se requiere para montar un servidor
http seguro(ssl)? Que son las autoridades de certificación?
Al menos 2 funcionalidades adicionales en un servidor
Apache.
62