4. Protocolo http 1.1 - PowerPoint PPT Presentation

1 / 49
About This Presentation
Title:

4. Protocolo http 1.1

Description:

Conjunto abierto de m todos y cabeceras que indiquen el prop sito de la petici n, ... Footers (opcionales). L nea en blanco. 12/21/09. Internet HTTP 1.1. 20 ... – PowerPoint PPT presentation

Number of Views:321
Avg rating:3.0/5.0
Slides: 50
Provided by: justonhid
Category:

less

Transcript and Presenter's Notes

Title: 4. Protocolo http 1.1


1
4. Protocolo http 1.1
  • Gestión de Sistemas en Internet
  • Universidad Antonio de Nebrija, 2003/04
  • Justo N. Hidalgo Sanz

2
Contenidos
  • Introducción
  • HTTP1.0
  • HTTP1.1
  • Anexo
  • Cabeceras HTTP 1.1
  • Utilización de Telnet

3
Introducción
  • Protocolo de nivel de aplicación para sistemas de
    información hipermedia, colaborativos y
    distribuidos.
  • Genérico, sin estado.
  • Desde 1990 (Tim Berners-Lee).
  • RFC 2616 (2068 obsoleto).

4
Características básicas
  • Conjunto abierto de métodos y cabeceras que
    indiquen el propósito de la petición, a partir de
    un URI, que se refiere a un URL u URN, y que
    indica el recurso sobre el cual un método puede
    ser aplicado.
  • Mensajes en formato MIME.
  • URI Uniform Resource Identifier.
  • URL Uniform Resource Location.
  • URN Uniform Resource Name.
  • MIME Multipurpose Internet Mail Exchange).

5
Terminología
  • Conexión
  • Mensaje
  • Petición
  • Respuesta
  • Recurso
  • Entidad
  • Negociación de contenido
  • User Agent
  • Proxy
  • Gateway
  • Cachè
  • Age
  • Stale

6
Operativa
  • HTTP es un protocolo de petición/respuesta
  • Cliente envío de una petición al servidor.
  • Servidor devuelve una respuesta.
  • Entre media pueden existir intermediarios.
  • HTTP utiliza TCP/IP
  • Puerto 80 por defecto.
  • HTTP 1.0 nueva conexión para cada intercambio.
  • HTTP 1.1 NO!

7
Sintaxis (I)
  • Gramática completa en la RFC.
  • http_URLhttp // host port abs_path
    ? query
  • Los mensajes enviados consisten de
  • Una línea inicial.
  • Cero o más líneas de cabecera.
  • Una línea en blanco (i.e. CRLF).
  • Un cuerpo de mensaje opcional (un fichero, datos
    de consulta, resultado, ...)
  • No existe límite existe el 414 (request URI too
    long)

8
Sintaxis (II) línea inicial de petición
  • Tres partes separadas por espacios
  • Nombre del método.
  • Path local del recurso pedido (parte de la URL
    tras el hostnamerequest URI).
  • Versión del protocolo HTTP utilizado.

9
Sintaxis (III) línea inicial de respuesta
  • Tres partes, separadas por espacios
  • Versión http.
  • Código de respuesta de estados.
  • 1xx mensaje de información.
  • 2xx éxito de algún tipo.
  • 3xx redirección a alguna otra URL.
  • 4xx error en la parte cliente.
  • 5xx error en la parte servidora.
  • Reason phrase en inglés. Describe el código de
    estado.

10
Sintaxis (IV) códigos
  • 200 OK La petición fue exitosa, y el recurso
    resultado se devuelve en el cuerpo del mensaje.
  • 404 Not Found El recurso pedido no existe.
  • 301 Moved Permanently
  • 302 Moved Temporarily
  • 303 See Other (HTTP 1.1 only) El recurso se ha
    llevado a otra URL (dada por la cabecera de
    respuesta Location), y debería de ser obtenido
    por el cliente automáticamente.
  • 500 Server Error Error de servidor inesperado.
    Script que falla, sintaxis erronea, no se puede
    ejecutar, etc.

11
Sintaxis (V) línea de cabecera
  • Una por cabecera, del tipo
  • Header-Name value, terminado en CRLF.
  • HTTP 1.0 16 cabeceras opcionales.
  • HTTP 1.1 46 cabeceras, donde
  • Peticiones
  • Host es obligatoria en las peticiones
  • From y UserAgent son recomendables.
  • Respuestas
  • Server
  • Last-modified.

12
Sintaxis (y VI) cuerpo del mensaje
  • Si un mensaje http incluye un cuerpo
  • Content-Type tipo MIME.
  • Content-Length bytes del cuerpo.

13
Métodos (I)
  • Ya hemos visto el GET.
  • HEAD como GET, pero sólo se piden las cabeceras
    de respuesta, no el recurso real.
  • POST
  • Se envían datos al servidor para su posterior
    tratamiento (p.e. CGI).

14
Métodos (y II)
  • Diferencias entre GET y POST
  • El POST envía info en la petición.
  • El request URI no suele ser un recurso a obtener,
    sino un programa que maneja info que se le está
    enviando.
  • La respuesta suele ser la salida de un programa,
    no un fichero estático.
  • Resulta que el GET también se usa para eso.
  • Hay más DELETE, TRACE, OPTIONS.

15
Proxies
  • La única diferencia con respecto a la invocación
    a un servidor normal es que la primera línea
    incluye la URL completa del servidor destino, en
    vez de sólo el path, para que el proxy sepa a
    quién ha de enviarlo (esto para proxies no
    transparentes).

16
Problemas de HTTP 1.0
  • Proxies jerárquicos.
  • Caching.
  • Necesidad de conexiones persistentes.
  • Hosts virtuales.
  • Demasiados http 1.0-compliant.

17
Clientes HTTP 1.1 (I)
  • Requisitos
  • Incluir la cabecera Host en cada petición.
  • Aceptar respuestas con datos chunked.
  • Una de dos
  • Soportar conexiones persistentes.
  • Incluir la cabecera Connectionclose en cada
    petición.
  • Manejar la respuesta 100 Continue.

18
Clientes HTTP 1.1 (II) Cabecera Host
  • Una IP puede ser multihomed
  • www.host1.com
  • www.host2.com
  • Muy necesario, debido a la proliferación de web
    sites.

19
Clientes HTTP 1.1 (III) Chunked transfer encoding
  • Envío de respuestas antes de conocer su longitud
    total.
  • Cuerpo chunk
  • Serie de pedazos. Cada chunk
  • Línea con el tamaño en hexadecimal ltinfogt
    CRLF
  • Datos más CRLF.
  • Seguido de una línea con 0s.
  • Footers (opcionales).
  • Línea en blanco.

20
Clientes HTTP 1.1 (IV) Persistencia
  • La apertura y cierre de conexiones TCP/IP son muy
    costosas.
  • Pipelining de peticiones, recibiendo las
    respuestas.
  • Si no se admite Connectionclose en todas las
    peticiones, o si se sabe que es la última.

21
Clientes HTTP 1.1 (y V) 100 Continue
  • Útil para conexiones lentas, o procesamientos muy
    cargados.
  • El cliente, generalmente, lo único que tiene que
    hacer es ignorarlo (pero quizá actualizando sus
    contadores de timeout).

22
Servidores HTTP 1.1 (I)
  • Requisitos
  • Cabecera Host
  • URLs absolutas.
  • Chunked transfer-encoding.
  • Conexiones persistentes o Connectionclose.
  • Respuesta 100 Continue.
  • Cabecera Date
  • Cabeceras If-Modified-Since y
    If-Unmodified-Since
  • Métodos GET, HEAD
  • Peticiones HTTP 1.0

23
Servidores HTTP 1.1 (II) Cabecera Host
  • Los servidores no pueden aceptar peticiones http
    1.1 sin esta cabecera

24
Servidores HTTP 1.1 (III)URLs absolutas
  • En futuras versiones HTTP las peticiones
    utilizarán URLs absolutas.
  • Para permitir la transición, http 1.1 ha de
    aceptarlo, aunque los clientes no tienen por qué
    enviarlo así.

25
Servidores HTTP 1.1 (IV)Chunked Transfer-encoding
  • Deben poder ACEPTARLOS (no muy corriente).
  • Están obligados a poder enviarlos.

26
Servidores HTTP 1.1 (V) Persistencia
  • El servidor puede cortar una conexión ociosa
    (p.e. 10 s.).
  • Si el servidor no quiere soportar persistencia,
    Connectionclose en su respuesta.

27
Servidores HTTP 1.1 (VI)100 Continue
  • Igual que en el cliente.

28
Servidores HTTP 1.1 (VII)Cabecera Date
  • Los servidores deben marcar (timestamp) toda
    respuesta (menos la 100 Continue) con esta
    cabecera.
  • GMT (Greenwich Mean Time).

29
Servidores HTTP 1.1 (VIII)If-Modified-Since,
If-Unmodified-Since
  • Envíame este recurso sólo si no ha cambiado
    desde.
  • No es obligatorio para clientes, sí para
    servidores.
  • Si, sin la cabecera, el resultado fuera erroneo
    (200), se debe ignorar esa cabecera, y enviar el
    código de error.
  • If-Modified-Since
  • Utilizado con GET.
  • Si se ha modificado, se envía el recurso.
  • Si no se ha modificado 304 Not modified.
  • If-Unmodified-Since
  • Cualquier método.
  • Si se ha modificado 412 Precondition failed.

30
Servidores HTTP 1.1 (IX)Métodos
  • GET y HEAD han de estar implementados.
  • POST suele estarlo.
  • Si algún otro no lo está 501 Not Implemented.

31
Servidores HTTP 1.1 (y X)Peticiones HTTP 1.0
  • Han de soportarse.

32
Anexo elementos de cabeceras
33
Cabeceras de Petición (I)
  • Gramática
  • Request Request-Line
  • (( general-header
  • request-header
  • entity-header ) CRLF)
  • CRLF
  • message-body

34
Cabeceras de Petición (II). Métodos
  • Línea de petición
  • Request-Line Method SP Request-URI SP
    HTTP-Version CRLF
  • Métodos OPTIONS, GET, HEAD, POST, PUT, DELETE,
    TRACE, CONNECT

35
Cabeceras de Petición (III). Request URI
  • Request-URI "" absoluteURI abs_path
    authority
  • la petición es sobre el propio servidor
  • OPTIONS HTTP/1.1
  • absoluteURI obligatorio cuando se accede a un
    proxy.
  • GET http//www.w3.org/pub/WWW/TheProject.html
    HTTP/1.1

36
Cabeceras de Petición (IV). Campos de cabecera
  • ACCEPT tipos aceptables como respuesta del
    servidor web (en formato MIME).
  • Accept-Charset.
  • ACCEPT-ENCODING métodos de codificación
    soportados por el browser
  • Accept-Encoding compress, gzip
  • Accept-Encoding
  • Accept-Encoding
  • Accept-Encoding compressq0.5, gzipq1.0
  • Accept-Encoding gzipq1.0, identity q0.5,
    q0

37
Cabeceras de Petición (V). Campos de cabecera
  • ACCEPT-LANGUAGE
  • AUTHORIZATION credenciales con la información de
    autentificación del user agent.
  • Expect comportamiento del servidor esperado por
    el usuario.
  • FROM e-mail.
  • Host host y puerto
  • If-Match
  • IF-MODIFIED-SINCE
  • If-Modified-Since Sat, 29 Oct 1994 194331 GMT

38
Cabeceras de Petición (y VI). Campos de cabecera
  • If-None-Match
  • If-Range
  • IF-UNMODIFIED-SINCE
  • Max-Forwards para TRACE y OPTIONS
  • Proxy-Authorization
  • Range
  • REFERER importante URI del recurso de donde se
    obtuvo este Request-URI (es decir URI del
    documento donde el usuario cliqueó.
  • TE
  • USER-AGENT browser
  • Mozilla/4.01 en (Win95 I).

39
Cabeceras de Respuesta (I)
  • Gramática
  • Request Status-Line
  • (( general-header
  • response-header
  • entity-header ) CRLF)
  • CRLF
  • message-body

40
Cabeceras de Respuesta (II). Línea de Estado
  • Línea de estado
  • 1xx informacional, se continúa el proceso
  • 100 Continue
  • 101 Switching protocols

41
Cabeceras de Respuesta (III) . Línea de Estado
  • 2xx recepción exitosa
  • 200 OK
  • 201 Created
  • 202 Accepted
  • 203 Non-Authoritative Information
  • 204 No Content
  • 205 Reset Content
  • 206 Partial Content

42
Cabeceras de Respuesta (IV) . Línea de Estado
  • 3xx es necesaria alguna acción más
  • 300 Multiple Choices
  • 301 Moved Permanently
  • 302 Found
  • 303 See Other
  • 304 Not Modified
  • 305 Use Proxy
  • 307 Temporary Redirect

43
Cabeceras de Respuesta (V) . Línea de Estado
  • 4xx Error en cliente
  • 400 - Bad Request
  • 401 - Unauthorized
  • 402 - Payment Required
  • 403 - Forbidden
  • 404 - Not Found
  • 405 - Method Not Allowed
  • 406 - Not Acceptable
  • 407 - Proxy Authentication Required
  • 408 - Request Time-out
  • 409 - Conflict
  • 410 - Gone
  • 411 - Length Required
  • 412 - Precondition Failed
  • 413 - Request Entity Too Large
  • 414 - Request-URI Too Large
  • 415 - Unsupported Media Type
  • 416 - Requested range not satisfiable
  • 417 - Expectation Failed

44
Cabeceras de Respuesta (VI) . Línea de Estado
  • 5xx Error en Servidor
  • 500 Internal Server Error
  • 501 Not Implemented
  • 502 Bad Gateway
  • 503 Service Unavailable
  • 504 Gateway Time-out
  • 505 HTTP Version not supported

45
Cabeceras de Respuesta (VII) . Campos de cabecera
  • Accept-Ranges
  • Age
  • Etag
  • Location para redirección.
  • Proxy-Authenticate
  • Retry-After
  • Server sw utilizado por servidor para manejar la
    petición.
  • Vary
  • WWW-Authenticate

46
Cabeceras de Respuesta (VIII) . Cabeceras de
Entidad
  • ALLOW métodos permitidos por el servidor.
  • CONTENT-ENCODING codificación del documento
    retornado
  • Content-Encoding gzip
  • CONTENT-LANGUAGE
  • CONTENT-LENGTH número decimal de octetos
    (bytes).
  • CONTENT-LOCATION
  • Content-MD5

47
Cabeceras de Respuesta (y IX) . Cabeceras de
Entidad
  • CONTENT-TYPE de qué tipo MIME es el documento
  • Content-Type text/html charsetISO-8859-4
  • CONTENT-RANGE
  • DATE
  • EXPIRES
  • LAST-MODIFIED

48
Acceso Telnet
  • telnet www.host.com
  • GET /path/file.html HTTP/1.0
  • cabeceras, si necesarias
  • línea en blanco

49
Bibliografía
  • RFC 2616
  • RFC 2068 (obsoleto)
  • RFC 1945 (más obsoleto todavía)
Write a Comment
User Comments (0)
About PowerShow.com