protocolo http
TRANSCRIPT
- 1. Dani Gutirrez Porset [email_address]
-
- protocolo http
-
2. ndice
- Introduccin
- Mensajes. Mtodos de peticin. Cdigos de estado
- Caractersticas
- Seguridad
- Gestin de sesiones
- WebDAV
- Configuraciones en Firefox v2.0
- URI / URL / URN
- Software: servidores y navegadores
- Licencia de uso
3. Introduccin
- Hypertext Transfer Protocol
- Desde 1994
- RFC 2616
- Sobre TCP.
- Puertos por defecto:
-
- No seguro: tcp 80
-
- Seguro (ssl/tls): 443
- Versiones: 0.9, 1.0, 1.1 (la ms usada), 1.2
- Protocolo stateless
4. Introduccin
- Elementos:
-
- Cliente=user agent: web browser, spider, wget, curl,...
-
- Servidor
-
- Intermediarios: Proxy, gateway, tnel
5. Mensajes
- Mensaje de peticin:
-
- Lnea de mtodo de peticin
-
- Lneas de cabecera de peticin (de tipo XXX:YYY)
-
- (Lnea en blanco)
-
- Cuerpo (opcional)
- Mensaje de respuesta:
-
- Lnea de cdigo de estado
-
- Lneas de cabecera de respuesta (de tipo XXX:YYY)
-
- (Lnea en blanco)
-
- Cuerpo (opcional)
- Todas las lneas acaban en
6. Mensaje de peticin
- Ej:
-
- GET / HTTP/1.1
-
- Host:
-
- User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080207 Ubuntu/7.10 (gutsy) Firefox/2.0.0.12 Paros/3.2.13
-
- Accept: text/xml,text/plain;q=0.8,image/png,*/*;q=0.5
-
- Accept-Language: es-es,en-us;q=0.7,en;q=0.3
-
- Accept-Charset: UTF-8,*
- Otras lneas de cabecera:
-
- Keep-Alive, Proxy-Connection, Referer, Cookie, Content-length,...
-
- Ref:http://en.wikipedia.org/wiki/List_of_HTTP_headers
7. Mtodos de peticin
- GET: solicita una peticin dentro de la URL.
- POST: enva datos en el cuerpo de la peticin
- PUT: upload
- HEAD: solicita una respuesta idntica a GET pero slo devuelve las cabeceras (no el cuerpo).
- DELETE: borrado
8. Mtodos de peticin
- TRACE: devuelve la peticin, para comprobar si algn equipo intermedio modifica la original
- OPTIONS: devuelve los mtodos soportados por el servidor
- CONNECT: empleado para tneles tcp/ip, tpicamente para hacer conexiones https a travs de un proxy http. Riesgo si en el proxy no se limitan los posibles destinos host:port
9. Mensaje de respuesta
- Ej:
-
- HTTP/1.1 200 OK
-
- Date: Thu, 27 Mar 2008 21:29:14 GMT
-
- Content-Type: text/html; charset=US-ASCII
-
- Server: AmazonS3
- Otras lneas de cabecera:
-
- ETag, Expires, Pragma, Vary, X-*
-
- Ref:http://en.wikipedia.org/wiki/List_of_HTTP_headers
10. Cdigos de estado
- Son los cdigos devueltos por el servidor.
- Se agrupan en:
-
- 1xx Informacin
-
- 2xx xito
-
- 3xx Redireccin
-
- 4xx Error de cliente
-
- 5xx Error de servidor
11. Caractersticas
- Negociacin de contenidos : mecanismo para devolver distintos recursos o documentos a partir de una URI solicitada. Ejs: Tipo imagen (gif, png), Idioma, text/html o text/*
-
- Cabeceras:
-
-
- De cliente. Ej.Accept-encoding: gzip, deflate
-
-
-
- De servidor. Ej:Content-encoding: gzip
-
-
- Tipos MIME (Multipurpose Internet Mail Extensions):
-
-
- Forma de describir el tipo de documento a transmitir.
-
-
-
- Sintaxis: major type/minor type. Ej: text/html, image/gif
-
-
-
- Basados en extensin o en anlisis (file ...)
-
12. Caractersticas
- Compresin.
- Chunked transfer encoding(v1.1): dividir todo el contenido en fragmentos y enviarlos.
-
- Ventajas:
-
-
- Transmisin streamed en lugar de buffered: Posibilidad de ir enviando contenidos desde el servidor antes de conocer el tamao total del fichero.
-
-
-
- Compresin
-
-
- Cabecera del servidor: Transfer-encoding: chunked
- Byte serving(v1.1): enviar slo la parte del fichero que el cliente indique.
13. Caractersticas
- Conexiones persistentes(HTTP keep-alive)(v1.1): hacer varias conexiones http con una sla conexin tcp.
-
- Ventajas:
-
-
- Menor carga de sistema operativo
-
-
-
- Menos congestin en la red (menos conexiones tcp) y menor latencia en solicitudes posteriores.
-
-
-
- Posibilidad de http pipelining
-
-
- Segn rfc2616 un cliente no debera establecer ms de 2 conexiones persistentes al mismo tiempo con un servidor, para evitar la congestin.
14. Caractersticas
- HTTP pipelining(v1.1): peticiones asncronas: enviar ms de una peticin http sin esperar las respuestas.
-
- Ventaja: como se pueden enviar varias peticiones en un nico paquete tcp, es posible reducir la carga de red.
15. Caractersticas
-
- Cundo puede usarse:
-
-
- Slo en conexiones keep-alive. En la primera conexin (an no se sabe si el servidor soporta v1.1).
-
-
-
- No en POST (es una solicitud no idempotente)
-
-
- Cuntas conexiones pipeline abrir:
-
-
- Si se abren muchas y se cierra la conexin, se pierden y hay que volver a enviarlas.
-
-
-
- Si las primeras peticiones tardan, produce sensacin de lentitud
-
16. Seguridad
- Mtodos de autenticacin propios de http:
-
- Basic access: invlido por ir no encriptado
-
- Digest: basado en md5 con salt.
-
-
- Considera usuario, password y realm (dominio o espacio).
-
-
-
- Vulnerable a ataque man-in-the-middle.
-
- Otros mtodos:
-
- URI https = http sobre ssl/tls. El mejor
-
- Cabecera http 1.1 Upgrade header. Apenas empleado
-
- s-http (Secure hypertext transfer protocol). Apenas empleado
17. Gestin de sesiones
- Protocolo stateless: no guarda informacin sobre los clientes
- Tcnicas para mantener la historia:
-
- Cookies (rfc 2109). Inconveniente: han de habilitarse en el browser
-
- URL rewriting (Ej.http://host/path;sessionid=12axY ) Inconvenientes:
-
-
- Todas las URLs han de llevar el id. Por tanto, hay que generar todas las pginas de forma dinmica
-
-
-
- Los bookmarks no valen
-
-
-
- (URLs poco estticas)
-
-
- Campos ocultos en formularios. Inviable a nivel general: no todo est en formularios
18. Gestin de sesiones
- Se suelen encapsular a ms alto nivel:
-
- APIs de php, java servlets,...
-
- Aplicacin
- Cada sesin incluye:
-
- Identificador de sesin a incluir en el trfico http
-
- Variables de sesin: pueden guardarse en ficheros de disco o ej. en base de datos
-
- Timeout
- Implicaciones de seguridad: secuestro de sesin, ej. con URL rewriting
19. Gestin de sesiones
- Alternativas de almacenamiento de informacin de sesiones:
-
- En el lado del servidor. Inconvenientes:
-
-
- Acceso a la informacin si hay varios servidores ejs. cluster, balance de carga. Soluciones:
-
-
-
-
- Replicacin entre servidores
-
-
-
-
-
- Comparticin: sockets, memoria, disco, BD
-
-
-
-
- (Limitacin en el n de clientes)
-
-
- En el lado del cliente: se usan cookies y criptografa. Inconvenientes:
-
-
- Limitacin de tamao de cookie
-
-
-
- Informacin del usuario no accesible fuera de la sesin
-
20. WebDAV
- Web-based Distributed Authoring and Versioning
- Extensiones al protocolo HTTP que permiten editar y gestionar ficheros en servidores web de forma colaborativa
21. Configuraciones en Firefox v2.0
- En about:config parmetros network.http.*
-
- accept-encoding (ej. gzip), accept.default (ej. text/xml)
-
- default-socket-type
-
- max-connections, max-connections-per-server
-
- keep-alive, proxy.keep-alive, keep-alive.timeout,request.max-start-delay, max-persistent-connections-per-server, max-persistent-connections-per-proxy,
-
- pipelining, proxy.pipelining,pipelining.maxrequests
-
- redirection-limit
-
- sendRefererHeader, sendSecureXSiteReferrer
-
- use-cache
-
- proxy.version, version
22. URI / URL / URN
- URI: Uniform Resource Identifier
- Sintaxis genrica de URIs: : [ ? ] [ # ]
-
- ej. http, mailto
-
- ej. //www.acme.com:8080/path/fichero;nombre=patxi
23. URI / URL / URN
- URL/URN: Uniform Resource Locator/Name:
-
- URL: dnde
-
- URN: qu/quin
- URL: URI que adems de identificar un recurso indica la forma de localizar el mismo.
-
- Ej: http://www.acme.com/fichero.html
- URN: URI que emplea el esquema urn.
-
- Ej: urn:isbn:0-395-36341-1
- URC: para incluir meta-informacin
24. Software Servidores web
- Clasificaciones segn S.O., funcionalidades, requisitos (ej. tinyXXX, embeddedXXX).
- Listados:
-
- Ranking uso: Netcraft. Apache, Microsoft IIS, Google GWS, Lighttpd,...
-
-
- http://news.netcraft.com
-
-
-
- http://survey.netcraft.com/Reports/200801/
-
-
- Paquetes de ubuntu: aolserver, apache, boa, cherokee, lighttpd, mini-httpd, roxen4,...
-
- http://en.wikipedia.org/wiki/Comparison_of_web_servers
-
- http://en.wikipedia.org/wiki/Comparison_of_lightweight_web_servers
- Chequeo: http://toolbar.netcraft.com/site_report?url=...
25. Software - Navegadores
- Grficos:
-
- Firefox, IE, Safari, Opera, Netscape, Konqueror, Maxthon (gratis, no libre, slo Windows),...
-
- Motores de renderizado: gecko (Firefox, Netscape), trident (IE, Maxthon), WebKit (Safari), Presto (Opera), khtml (Konqueror)
- De texto: lynx
- Curiosidades: spacetime, flock,...
- Referencias:
-
- http://en.wikipedia.org/wiki/List_of_web_browsers
-
- http://en.wikipedia.org/wiki/Comparison_of_web_browsers
-
- http://en.wikipedia.org/wiki/Usage_share_of_web_browsers
-
- http://en.wikipedia.org/wiki/List_of_layout_engines
26. Licencia de Uso
-
- http://creativecommons.org/licenses/by-sa/3.0/