Está en la página 1de 28

Tema 2:

La WWW. El protocolo HTTP

Sistemas Cliente / Servidor


(IG39, II39, IS39)
Curso 2004 – 2005
http://unoweb-s.uji.es/IX39/
Sistemas Cliente / Servidor. Tema 2

Índice

ƒ Un poco de historia
ƒ Internet vs. WWW
ƒ URI, URL, URN
ƒ El protocolo HTTP
ƒ Extensiones de la araña web

2
Sistemas Cliente / Servidor. Tema 2

Un poco de historia

ƒ (1989) Tim Berners-Lee en el CERN. Surge de la


necesidad de coordinar grupos investigadores
internacionales
ƒ (1991) primeros prototipos (basados en texto)
ƒ (1992) el CERN distribuye la librería wwwlib
ƒ (1993) Marc Andreessen. Mosaic, el primer
navegador con interfaz gráfica
ƒ (1994) se funda el WWW Consortium.
http://www.w3.org

3
Sistemas Cliente / Servidor. Tema 2

Internet vs. WWW


ƒ Internet != WWW
ƒ Internet:
ƒ Red de redes
ƒ Internet es un conjunto de redes y protocolos que ordenan el
tráfico de información por todo el mundo.

4
Sistemas Cliente / Servidor. Tema 2

Internet vs. WWW


ƒ World Wide Web (telaraña mundial):
ƒ Es un servicio sobre Internet
ƒ Conjunto de documentos de hipertexto accesibles desde Internet
ƒ Los enlaces de hipertexto referencian otros documentos mediante
URLs

HTTP
Cliente Servidor
TCP/IP
HTML

Internet

5
Sistemas Cliente / Servidor. Tema 2

Internet vs. WWW


ƒ World Wide Web :
ƒ Es una aplicación Cliente / Servidor
ƒ Cliente:
ƒ típicamente navegador web
ƒ petición HTTP: envía peticiones de documentos (recursos) al
servidor web
ƒ interpreta el documento que recibe para su visualización

ƒ Servidor:
ƒ respuesta HTTP: devuelve el documento (recurso) solicitado o
mensaje de error

ƒ Clientes y servidores se comunican utilizando HTTP

6
Sistemas Cliente / Servidor. Tema 2

URI, URL, URN


¿Cómo identificar un recurso en la Red?
ƒ Recurso:
Un objeto de datos o servicio accesible en la red que pueda ser
identificado por una URI.
Ejemplo: documentos HTML, imagen, buzón de correo …, servicio web, etc.

ƒ URI: Uniform Resource Identifiers


„ Son cadenas de caracteres que siguen un determinado formato y
que identifican recursos especificando su localización, nombre o
cualquier otra característica.
„ Direcciones WWW, Universal Document Identifiers, Universal
Resource Identifiers, URLs ∪ URNs
„ Variedad de esquemas de nombres y métodos de acceso (HTTP,
FTP, Internet mail, etc.)
„ Tecnología extensible 7
Sistemas Cliente / Servidor. Tema 2

URI, URL, URN


ƒ URL: Uniform Resource Locator
„ Son cadenas de caracteres que siguen un determinado
formato y que identifican recursos especificando su
localización
„ Ejemplos:
Š http://anubis.uji.es/index.html
Š ftp://al007@anubis.uji.es/un/ejemplo.txt

ƒ URN: Uniform Resource Name


„ Son cadenas de caracteres que siguen un determinado
formato y que identifican recursos asignándoles un nombre
único
„ Independiente de la localización de recurso
„ Ejemplo: urn:isbn:90-365-17273

8
Sistemas Cliente / Servidor. Tema 2

URI (Uniform Resource Identifiers)


ƒ URIs = URLs ∪ URNs
ƒ Define una sintaxis común para URLs y URNs,
caracteres reservados, etc.
<esquema>:<sección_específica_al_esquema>
ƒ Algunos esquemas
„ ftp: File Transfer Protocol
„ http: Hypertext Transfer Protocol
„ mailto: Electronic mail address
„ file: Host-specific file names
„ urn: URNs
„ …
9
Sistemas Cliente / Servidor. Tema 2

URL (Uniform Resource Locator)


ƒ Parte específica al esquema de los sistemas basados
en IP: (//)
<esquema>://<user>:<password>@<host>:<port>/<url-path>

ƒ URLs HTTP:
http://host[:port][abs_path]

Ejercicio: Diseña un algoritmo para “parsear” una URL http. El


algoritmo debe asignar los valores correctos a las variables host,
port, base_path y file. Ten en cuenta que abs_path es opcional y
éste puede hacer referencia tanto a un directorio como a un fichero.
¿Qué sucede cuando no se especifica abs_path? ¿y cuando hace
referencia a un directorio?
10
Sistemas Cliente / Servidor. Tema 2

URL (Uniform Resource Locator)


Caracteres especiales:
ƒ / : jerarquización
ƒ # : identificador de fragmento (resuelto en el cliente)
http://esto.es/un.html#ejemplo

ƒ ? : prefijo de consulta
http://esto.es/un/ejemplo.cgi?arg1=valor&arg2=otro+valor

ƒ = , + y & son también caracteres especiales


ƒ @, :, …
ƒ % HEX HEX: permite escapar caracteres especiales

11
Sistemas Cliente / Servidor. Tema 2

El protocolo HTTP
ƒ HTTP (HyperText Transfer Protocol) es un protocolo
de aplicación diseñado para la transmisión de
documentos sobre Internet

12
Sistemas Cliente / Servidor. Tema 2

El Protocolo HTTP
ƒ La primera versión fue la HTTP/1.0, RFC 1945
ƒ En 1998 comenzó a utilizarse la versión 1.1, RFC 2616
ƒ HTTP/1.1 es compatible con HTTP/1.0
ƒ Utiliza TCP como protocolo de transporte
ƒ Comunicación Cliente / Servidor:
„ El cliente envía un mensaje (petición HTTP) al servidor solicitando un
recurso
„ El servidor recibe el mensaje, lo procesa y responde con un mensaje
de respuesta HTTP que contiene el recurso solicitado
ƒ Se trata de un protocolo sin estado (sin sesión)
„ Carece de medios para relacionar información concerniente a una
petición anterior
„ Solución: cookies
13
Sistemas Cliente / Servidor. Tema 2

El Protocolo HTTP
ƒ HTTP/1.0 utiliza conexiones no persistentes
ƒ Cada conexión TCP se cierra una vez el servidor ha enviado el recurso

Ejemplo: http://www.uji.es/index.html
ƒ El cliente inicia una conexión TCP en el puerto 80 de la máquina www.uji.es
ƒ El cliente envía un mensaje de petición HTTP al servidor, incluyendo el
recurso solicitado /index.html
ƒ El servidor recibe la petición, recupera el objeto /index.html y lo encapsula
en el mensaje HTTP de respuesta
ƒ El servidor cierra la conexión
ƒ El cliente recibe el mensaje de respuesta, extrae el documento HTML y
encuentra referencias a imágenes
ƒ El cliente repite los pasos anteriores por cada imagen referenciada

14
Sistemas Cliente / Servidor. Tema 2

El Protocolo HTTP
ƒ HTTP/1.0 utiliza conexiones no persistentes
ƒ Sobrecarga al servidor debido a la reserva de recursos para cada petición
ƒ HTTP/1.1 permite utilizar conexiones persistentes
ƒ El servidor mantiene abierta la conexión después de enviar la respuesta
ƒ Varias peticiones/respuestas pueden ser enviadas por la misma conexión
ƒ El servidor cierra las conexiones cuando no se utilizan (time-out)
ƒ Comunicación con y sin pipelining :
ƒ Sin pipelining :
ƒ El cliente envía una nueva petición sólo cuando ha llegado la respuesta anterior
ƒ La conexión está inactiva durante cierto tiempo, consumiendo recursos en el
servidor
ƒ Con pipelining :
ƒ El cliente envía nuevas peticiones tan pronto encuentra referencias en los objetos
previamente recibidos

15
Sistemas Cliente / Servidor. Tema 2

El Protocolo HTTP
ƒ Formato de una petición HTTP

GET /un/ejemplo.html HTTP/1.0 CRLF


User Agent: Mozilla CRLF
Referer: http://anubis.uji.es/index.html CRLF
(...)
CRLF

16
Sistemas Cliente / Servidor. Tema 2

El Protocolo HTTP
ƒ Formato de una respuesta HTTP
HTTP/1.1 200 OK CRLF
Date: Mon, 27 Sep 1999 21:23:20 GMT CRLF
Server: Apache/1.3.3 (Unix) CRLF
Last-Modified: Sun, 26 Sep 1999 ... CRLF
Content-Length: 5654 CRLF
(...)
Content-Type: text/html CRLF
CRLF
<PAGE HTML>
[cierre de la conexión]

¿Cómo averigua el cliente el final del mensaje de


respuesta en HTTP/1.1?
17
Sistemas Cliente / Servidor. Tema 2

Mensaje de petición HTTP


ƒ Consta de tres partes
ƒ 1ª parte: Línea de petición
Method SP Request-URI SP HTTP-version CRLF
ƒ Method indica la acción a realizar en el recurso identificado por
Request-URI
HTTP-version = HTTP/1.0 | HTTP/1.1
ƒ 2ª parte: Líneas de cabecera de la petición
HTTP-header = field-name “:” [field-value] CRLF
ƒ Proporcionan información al servidor sobre el cliente y lo que solicita
ƒ 3ª parte: Cuerpo de la petición
ƒ Depende del método indicado

18
Sistemas Cliente / Servidor. Tema 2

Mensaje de petición HTTP


Method = GET | HEAD | POST | PUT | DELETE | …
ƒ GET recuperar la información identificada por Request-URI
ƒ HEAD únicamente recupera las cabeceras HTTP de respuesta
Utilizada para obtener meta-información sobre el recurso o
Comprobar la validez de hiperenlaces, accesibilidad, actualización,
etc.
ƒ POST solicita al servidor que realice la acción Request-URI
con la información incluida en el cuerpo de la petición
ƒ Envío de un mensaje a un grupo de noticias o lista de correo
ƒ Insertar un nuevo registro en una base de datos
ƒ Formularios
¿Cómo averigua el servidor web el final del mensaje de petición
HTTP?
19
Sistemas Cliente / Servidor. Tema 2

Mensaje de petición HTTP


Method = GET | HEAD | POST | PUT | DELETE | …
ƒ PUT (HTTP/1.1) solicita que la información contenida en el
cuerpo de la petición se almacene en el servidor bajo el
recurso identificado por Request-URI
ƒ DELETE (HTTP/1.1) elimina en el servidor el recurso
identificado por Request-URI
ƒ POST vs. PUT:
ƒ En el método POST Request-URI hace referencia al recuerso
encargado de manipular la entidad incluida en el cuerpo de la
petición
ƒ En el método PUT Request-URI hace referencia a la entidad
incluida en el cuerpo de la petición

20
Sistemas Cliente / Servidor. Tema 2

Mensaje de petición HTTP


ƒ (algunas) Líneas de cabecera de la petición
ƒ Cabeceras generales:
ƒ Date

ƒ Cabeceras de la petición:
ƒ Host (HTTP/1.1 Obligatoria!!!)
ƒ Referer
ƒ User-Agent
ƒ From
ƒ If-Modified-Since (GET)
ƒ Connection (HTTP/1.1)

ƒ Cabeceras del cuerpo (entidad) de la petición:


ƒ Content-Length (POST, PUT)
21
Sistemas Cliente / Servidor. Tema 2

Mensaje de respuesta HTTP


ƒ Consta de tres partes
ƒ 1ª parte: Línea de estado
HTTP-Version SP Status-Code SP Reason-Phrase CRLF
ƒ Status-Code código numérico que indica si la petición se realizó con
éxito
ƒ Reason-Phrase descripción textual del código de estado
HTTP-Version = HTTP/1.0 | HTTP/1.1
ƒ 2ª parte: Líneas de cabecera de respuesta
HTTP-header = field-name “:” [field-value] CRLF
ƒ Proporcionan información al cliente sobre el servidor y lo que solicita
ƒ 3ª parte: Cuerpo de la respuesta
ƒ Información del recurso solicitado (entidad)
22
Sistemas Cliente / Servidor. Tema 2

Mensaje de respuesta HTTP


ƒ Códigos de estado
ƒ 2xx: la petición se realizó con éxito
200 OK
ƒ 3xx: redirecciones (el recurso solicitado ha cambiado su ubicación)
301 Moved Permanently
302 Moved Temporarily
ƒ 4xx: error del cliente
400 Bad Request
403 Forbidden
404 Not Found
ƒ 5xx: error del servidor
500 Internal Server Error
501 Not Implemented
23
Sistemas Cliente / Servidor. Tema 2

Mensaje de respuesta HTTP


ƒ (algunas) Líneas de cabecera de la respuesta
ƒ Cabeceras generales:
ƒ Date

ƒ Cabeceras de la respuesta:
ƒ Server
ƒ Location (redirecciones)
ƒ Connection (HTTP/1.1)

ƒ Cabeceras del cuerpo (entidad) de la respuesta:


ƒ Content-Length
ƒ Content-Type
ƒ Content-Encoding
ƒ Last-Modified
24
Sistemas Cliente / Servidor. Tema 2

El protocolo HTTP
¿Cómo gestiona las peticiones el servidor web?
ƒ Si el recurso es un fichero, lo envía como respuesta
ƒ Si el recurso es un programa, lo ejecuta
ƒ La manera en la que servidor web y programa se
comunican se rige por el CGI (Common Gateway
Interface)

25
Sistemas Cliente / Servidor. Tema 2

Extensiones de la araña web


ƒ Reglas de cortesía
ƒ Protocolo de exclusión de robots
ƒ Soporte de otros tipos de documentos, imágenes, pdfs, etc.
ƒ Protocolo HTTP 1.1
ƒ Transformar direcciones absolutas en relativas
ƒ Filtros
ƒ Evitar ciclos
ƒ Re-direccionamiento automático al variar la ubicación de un recurso
ƒ versión actualizada de un documento previamente descargado?
ƒ …

26
Sistemas Cliente / Servidor. Tema 2

Bibliografía
ƒ Un poco de historia
ƒ World Wide Web Consortium. A Little History of the World Wide Web.
http://www.w3.org/History.html
ƒ Fah-Chung Cheong. Internet Agents: Spiders, Wanderers, Brokers, and
Bots. New Riders Publishing, 1996.
ƒ P. Denning. The ARPANET after twenty years. American Scientist. Nov-Dec,
1989, pp. 530 – 534.
ƒ URI, URL, URN
ƒ T. Berners-Lee, R. Fielding and L. Masinter. Uniform Resource Identifiers
(URI): Generic Syntax and Semantics. RFC2396, Agosto 1998.
http://www.faqs.org/rfcs/rfc2396.html
ƒ World Wide Web Consortium. Naming and Addressing: URIs, URLs, ...
http://w3c.org/Addressing/

27
Sistemas Cliente / Servidor. Tema 2

Bibliografía
ƒ World Wide Web Consortium. HTTP – Hypertext Transfer
Protocol. http://w3c.org/Protocols
ƒ HTTP 1.0 (RCF 1945). http://www.w3.org/Protocols/rfc1945/rfc1945
ƒ HTTP 1.1 (RFC 2616). ftp://ftp.isi.edu/in-notes/rfc2616.txt

28

También podría gustarte