Está en la página 1de 62

HTTP – Protocolo de

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.

 La especificación completa del protocolo HTTP 1.0


está recogida en el RFC 1945. Fue propuesto por
Tim Berners-Lee, atendiendo a las necesidades de
un sistema global de distribución de información
como el World Wide Web.

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.

 Permite la transferencia de objetos multimedia. El contenido


de cada objeto intercambiado está identificado por su
clasificación MIME.

 Existen tres verbos básicos (hay más, pero por lo general no


se utilizan) que un cliente puede utilizar para dialogar con el
servidor: GET, para obtener un objeto, POST, para enviar
información al servidor y HEAD, para solicitar las
características de un objeto (por ejemplo, la fecha de
modificación de un documento HTML).

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.

 No mantiene estado (statless). Cada petición de un cliente a


un servidor no es influida por las transacciones anteriores. El
servidor trata cada petición como una operación totalmente
independiente del resto.

 Cada objeto al que se aplican los verbos del protocolo está


identificado a través de la información de situación del final de
la URL.

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

HTTP Proxy Server


Request HTTP
Response
HTTP Response
http://www.cs.huji.ac.il/~db
http://www.cs.huji.ac.il/~dbi

Web Server www.cs.huji.ac.il:80

File System
16
Recursos…
 Un recurso es un pedazo de informacion que puede ser identificado
por un URL (Universal Resource Locator)

 Un recurso puede ser


 Un archivo
 Un pagina creada dinamicamente

 Las URL se utilizarán para definir el documento de destino de los


hiperenlaces, para referenciar los gráficos y cualquier otro fichero que
se desee incluir dentro de un documento HTML.

 Lo que podemos observar en el browser pueden ser una combinacion


de recursos.

 Cada elemento de internet tendrá una URL que lo defina, ya se


encuentre en un servidor de la WWW, FTP, gopher o las News

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

 There are other types of URL’s


 mailto:<account@site>
 news:<newsgroup-name>
18
URL…
 Los espacios son representados por un
signo “+”
 Caracteres como &,+,% son codificados
de la forma “%xx” donde xx es el valor
ascii en formato hexadecimal
 Las entradas a los parámetros son
dadas como lista de pares y valores
var1=value1&var2=value2&var3=value3

19
war&peace Tolstoy

20
tp://www.google.com/search?hl=en&q=war%26peace+Tolst

21
Nesting in Page
Index.html

Left frame Right frame

Jumping fish Fairy icon HUJI icon

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

 Cuáles son las dificultades de trabajar con


un protocolo sin estados?

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.

Note: CRLF = “\r\n”


(usually ASCII 13 followed by ASCII 10)
26
Format
Format of
of Request
Request

method sp URL sp version cr lf


header : value cr lf
headers
line
header : value cr lf
cr lf

Línea de Petición
Entity Body

27
Ejemplo de Request…

GET /index.html HTTP/1.1 [CRLF]


Host: www.cs.huji.ac.il:80 [CRLF]
Connection: Close [CRLF]
Accept: image/gif, image/jpeg [CRLF]
User-Agent: Mozilla/4.0 [CRLF]
[CRLF]

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

Why would we like to use these headers? 37


Another Header Example
 Last-Modified:
 Gives the modification date of the
resource that is being returned
 It's used in caching and other bandwidth-
saving activities
 Greenwich Mean Time should be used
and the format is
Last-Modified: Fri, 31 Dec 1999 23:59:59 GMT

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

version sp status code sp phrase cr lf status


line
header : value cr lf

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

 the client issues a new request only after the


previous response has arrived
 with pipelining
 client sends the request as soon as it
encounters a reference
 multiple requests/responses
 on the same IP packet, or
 on back-to-back packets

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

Caching improves performance


 Eliminates the need to send requests in
many cases (reduces network round-trips),
using an expiration mechanism
 Eliminates the need to send full responses
in other cases (reduces network
bandwidth), using a validation
mechanism

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.

 Éste requerimiento provee un mecanismo


para mantener un seguimiento de los
usuarios (no solo es un mecanismo de
seguridad..)
55
Autenticación…
 El cliente envia un requerimiento ordinario de
petición
 El Server responde con:
 Código de estatus: 401 Authorization
Required
 WWW-Authenticate El header indica los
detalles de como realizar el proceso de
autenticación.
 El Cliente reenvia la petición de request pero esta
vez incluyendo la cabecera Authorization que
incluye el nombre del usuario y el password
 El Cliente continua adicionando este header para
todas las peticiones que haga al server.
56
Autenticación…

GET ~dbi/getGrade.jsp
server
client
Authorization Required www.cs.huji.ac.il

GET ~dbi/getGrade.jsp
Authorization: user snoopy:passwordofsnoopy

Response

57
Cookies

 Mecanismo alternativo que utilizan los sitios


para hacer un seguimiento de los usuarios

 Las cookies son esencialmente pequeños


archivos o cadenas , no programas ejecutables.

 Una cookie puede almacenar información sobre


el cliente y asi almacenar información que un
momento determinado ayude a reconocer al
cliente y obtener información acerca de éste.

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

También podría gustarte