fbpx
Wikipedia

Compresión HTTP

La Compresión HTTP es una capacidad que se puede construir en los servidores web y clientes de Internet para mejorar la velocidad de transferencia y la utilización de ancho de banda.[1]

Los datos HTTP se comprimen antes de ser enviados desde el servidor: los navegadores compatibles anunciarán qué métodos son compatibles al servidor antes de descargar el formato correcto; los navegadores que no soportan el método de compresión compatible descargarán los datos sin comprimir. Los esquemas de compresión más comunes incluyen gzip y Deflate, sin embargo, una lista completa de los sistemas disponibles es mantenida por la IANA.[2]​ Además, terceros también desarrollan nuevos métodos y los incluyen en sus productos, por ejemplo, el esquema de Diccionario de Google compartido de compresión a través de HTTP (SDCH) implementado en el navegador Google Chrome y se utiliza en los servidores de Google.

Hay dos formas diferentes en que la compresión se puede hacer en HTTP. En un nivel inferior, un campo de encabezado Transfer-Encoding puede indicar que la carga útil de un mensaje HTTP está comprimida. En un nivel superior, un campo de cabecera Content-Encoding puede indicar que un recurso que se transfiere, almacena, o referencia está comprimido. La compresión usando Content-Encoding está soportada más ampliamente que Transfer-Encoding, y algunos navegadores no publicitan para la compresión Transfer-Encoding para evitar desencadenar errores en los servidores.[3]

Esquema de negociación de Compresión

En la mayoría de los casos, excluyendo SDCH, la negociación se hace en dos etapas, como se describe en RFC 2616:

1. El cliente web anuncia qué esquemas de compresión soporta incluyendo una lista de tokens en el HTTP request. Para Content-Encoding, la lista en un campo llamado Accept-Encoding; para Transfer-Encoding, el campo se llama TE.

GET /encrypted-area HTTP/1.1 Host: www.example.com Accept-Encoding: gzip, deflate 

2. Si el servidor soporta uno o más esquemas de compresión, los datos salientes pueden ir comprimidos de una o más formas soportados por ambas partes. Si este es el caso, el servidor agregará un campo Content-Encoding o Transfer-Encoding en la respuesta HTTP con los esquemas usados, separados por comas.

HTTP/1.1 200 OK Date: mon, 17 mar 2022 22:38:34 GMT Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux) Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT Accept-Ranges: bytes Content-Length: 438 Connection: close Content-Type: text/html; charset=UTF-8 Content-Encoding: gzip 

El servidor web no está para nada obligado a usar algún método de compresión - esto depende de la configuración del servidor web y también puede depender en la arquitectura interna del sitio web en cuestión.

En el caso de SDCH, se requiere una negociación de diccionario adicional, lo que puede involucrar pasos adicionales, como descargar un diccionario apropiado desde el servidor externo.

Tokens de Content-Encoding

La lista oficial de tokens disponible para servidores y clientes es mantenida por IANA,[4]​ e incluye:

  • compress - método del programa UNIX "compress" (histórico; obsoleto en la mayoría de aplicaciones y sustituido por gzip o deflate)
  • deflate - compresión basada en el algoritmo deflate (descrito en RFC 1951), envuelto en el interior del formato de datos zlib (RFC 1950);
  • exi - Intercambio Eficiente de XML de W3C
  • gzip - formato zip GNU (que se describe en el RFC 1952). Este método es el de más amplio soporte a marzo de 2011.[5]
  • identity - No se utiliza ninguna transformación. Este es el valor predeterminado para la codificación de contenido.
  • pack200-gzip - Formato de Transferencia de Red para Archivos Java[6]

Además de éstos, un número de tokens no oficiales o no normalizados se utilizan libremente tanto por servidores o clientes:

  • bzip2 - compresión basada en el formato libre bzip2, soportado por [lighttpd][7]
  • LZMA - compresión basada en (cruda) LZMA está disponible en Opera 20, y en elinks a través de una opción en tiempo de compilación[8]
  • peerdist[9]​ - caché y Recuperación de contenido entre pares de Microsoft
  • SDCH[10][11]​ - Google compresión de HTTP por diccionario compartido, basado en VCDIFF (RFC 3284); soportado en forma nativa en las últimas versiones de Google Chrome, Chromium y Android, así como en los sitios web de Google.
  • xz - compresión basada en LZMA2 contenido, soportada con un parche no oficial de Firefox;[12]​ y aplicado plenamente en mget desde 2013-12-31.[13]

Servidores que soportan compresión HTTP

  • SAP NetWeaver
  • Microsoft IIS: incorporado o utilizando un módulo de terceros.
  • Apache HTTP Server, vía mod_deflate (a pesar de su nombre, solo soporta gzip[14]​)
  • Hiawatha HTTP server: entrega archivos pre-comprimidos[15]
  • Cherokee HTTP server, comprime gzip y deflate en línea
  • Oracle iPlanet Web Server
  • Zeus Web Server
  • lighttpd, via mod_compress y el más nuevo mod_deflate (1.5.x)
  • nginx – incorporado
  • Las aplicaciones basadas en Tornado, si se fija "compress_response" en Verdadero (True) en la configuración (para versiones previas a 4.0, poner "gzip" en verdadero)
  • Jetty Server – incorporado en proveerr contenido estático por omisión y disponible vía configuraciones de filtros de servlets
  • GeoServer
  • Apache Tomcat
  • IBM Websphere
  • AOLserver
  • Ruby Rack, a través del middleware Rack::Deflater

La compresión en HTTP puede lograrse también usando la funcionalidad de lenguajes de Script del lado del servidor como PHP, o lenguajes de programación como Java.

Problemas que impiden el uso de compresión HTTP

Un artículo de 2009 por Arvind Jain y Jason Glasgow, ingenieros de Google, afirma que más de 99 personas-año se desperdician[16]​ diariamente debido al mayor tiempo de carga de las páginas cuando los usuarios no reciben contenido comprimido. Esto ocurre cuando el software anti-virus interfiere con conexiones para obligarlas a ir sin compresión, donde se usan proxies (con navegadores demasiado reticentes), donde los servidores están mal configurados, y donde los errores del navegador impiden usar compresión. Internet Explorer 6, que cae a HTTP 1.0 (sin funciones como la compresión o la canalización) cuando está detrás de un proxy - una configuración común en entornos corporativos - era el navegador dominante más propensos a bajar a HTTP sin comprimir.[16]

Otro problema encontrado durante la implementación de la compresión HTTP en gran escala es debido a la definición de codificación de deflate: mientras HTTP 1.1 define la codificación de deflate como datos comprimidos con deflate (RFC 1951) dentro de una corriente de zlib formateado (RFC 1950), los productos de servidor y cliente de Microsoft históricamente lo implementaron como una corriente desinflado "en bruto",[17]​ lo que hace su implementación no fiable.[18][19]​ Por esta razón, algunos programas, incluyendo el Apache HTTP Server, sólo implementan la codificación gzip.

Implicaciones de seguridad

En 2012, se anunció un ataque general contra el uso de la compresión de datos, llamado CRIME. Si bien el ataque CRIME podría trabajar eficazmente contra un gran número de protocolos, incluyendo pero no limitado a TLS, y protocolos de capa de aplicación, tales como SPDY o HTTP, sólo exploits contra TLS y SPDY fueron demostrados y en gran medida mitigados en los navegadores y servidores. El exploit CRIME contra la compresión HTTP no se ha mitigado en absoluto, a pesar de que los autores de CRIME han advertido que esta vulnerabilidad podría ser aún más extendida que la compresión combinada de SPDY y TLS.

En 2013, fue publicado una nueva instancia del ataque CRIME contra la compresión HTTP, llamado BREACH. Un ataque BREACH puede extraer tokens de acceso, direcciones de correo electrónico u otra información sensible desde tráfico web encriptado con TLS en tan sólo 30 segundos (dependiendo del número de bytes a ser extraídos), siempre que el atacante engañe a la víctima para que visite un enlace web malicioso.[20]​ Todas las versiones de TLS y SSL están en riesgo de BREACH independientemente del algoritmo de encriptación o cifrado utilizado.[21]​ A diferencia de los casos anteriores de CRIME, que se pueden defender con éxito apagando la compresión TLS o compresión de cabecera SPDY, los BREACH explotan la compresión HTTP la cual no puede ser apagada realmente, ya que prácticamente todos los servidores web se basan en ella para mejorar las velocidades de transmisión de datos para los usuarios.[20]

Referencias

  1. «Using HTTP Compression (IIS 6.0)». Microsoft Corporation. Consultado el 9 de febrero de 2010. 
  2. RFC 2616, Section 3.5: "The Internet Assigned Numbers Authority (IANA) actúa como registro para los valores de los tokens para codificación de contenido."
  3. 'RFC2616 "Transfer-Encoding: gzip, chunked" not handled properly', Chromium Issue 94730
  4. «Hypertext Transfer Protocol Parameters - HTTP Content Coding Registry». IANA. Consultado el 18 de abril de 2014. 
  5. . Verve Studios, Co. Archivado desde el original el 21 de marzo de 2012. Consultado el 19 de julio de 2012. 
  6. «JSR 200: Network Transfer Format for Java Archives». The Java Community Process Program. 
  7. «ModCompress - Lighttpd». lighty labs. Consultado el 18 de abril de 2014. 
  8. elinks LZMA decompression
  9. «[MS-PCCRTP]: Peer Content Caching and Retrieval: Hypertext Transfer Protocol (HTTP) Extensions». Microsoft. Consultado el 19 de abril de 2014. 
  10. Butler, Jon; Wei-Hsin Lee; McQuade, Bryan; Mixter, Kenneth. «A Proposal for Shared Dictionary Compression Over HTTP». Google. 
  11. «SDCH Mailing List». Google Groups. 
  12. «LZMA2 Compression - MozillaWiki». Consultado el 18 de abril de 2014. 
  13. «Página GitHub del Proyecto mget». Consultado el Mayo de 2014. 
  14. . Mark S. Kolich. Archivado desde el original el 20 de agosto de 2011. Consultado el 23 de marzo de 2011. 
  15. «Extra part of Hiawatha webserver's manual». 
  16. «Use compression to make the web faster». Google Developers. Consultado el 22 de mayo de 2013. 
  17. «deflate - Why are major web sites using gzip?». Stack Overflow. Consultado el 18 de abril de 2014. 
  18. . Verve Studios. Archivado desde el original el 2 de enero de 2015. Consultado el 18 de abril de 2014. 
  19. «Lose the wait: HTTP Compression». Zoompf Web Performance. Consultado el 18 de abril de 2014. 
  20. Goodin, Dan (1 de agosto de 2013). «Gone in 30 seconds: New attack plucks secrets from HTTPS-protected pages». Ars Technica. Condé Nast. Consultado el 2 de agosto de 2013. 
  21. Leyden, John (2 de agosto de 2013). «Step into the BREACH: New attack developed to read encrypted web data». The Register. Consultado el 2 de agosto de 2013. 
  •   Datos: Q3495340

compresión, http, capacidad, puede, construir, servidores, clientes, internet, para, mejorar, velocidad, transferencia, utilización, ancho, banda, datos, http, comprimen, antes, enviados, desde, servidor, navegadores, compatibles, anunciarán, qué, métodos, com. La Compresion HTTP es una capacidad que se puede construir en los servidores web y clientes de Internet para mejorar la velocidad de transferencia y la utilizacion de ancho de banda 1 Los datos HTTP se comprimen antes de ser enviados desde el servidor los navegadores compatibles anunciaran que metodos son compatibles al servidor antes de descargar el formato correcto los navegadores que no soportan el metodo de compresion compatible descargaran los datos sin comprimir Los esquemas de compresion mas comunes incluyen gzip y Deflate sin embargo una lista completa de los sistemas disponibles es mantenida por la IANA 2 Ademas terceros tambien desarrollan nuevos metodos y los incluyen en sus productos por ejemplo el esquema de Diccionario de Google compartido de compresion a traves de HTTP SDCH implementado en el navegador Google Chrome y se utiliza en los servidores de Google Hay dos formas diferentes en que la compresion se puede hacer en HTTP En un nivel inferior un campo de encabezado Transfer Encoding puede indicar que la carga util de un mensaje HTTP esta comprimida En un nivel superior un campo de cabecera Content Encoding puede indicar que un recurso que se transfiere almacena o referencia esta comprimido La compresion usando Content Encoding esta soportada mas ampliamente que Transfer Encoding y algunos navegadores no publicitan para la compresion Transfer Encoding para evitar desencadenar errores en los servidores 3 Indice 1 Esquema de negociacion de Compresion 2 Tokens de Content Encoding 3 Servidores que soportan compresion HTTP 4 Problemas que impiden el uso de compresion HTTP 5 Implicaciones de seguridad 6 ReferenciasEsquema de negociacion de Compresion EditarEn la mayoria de los casos excluyendo SDCH la negociacion se hace en dos etapas como se describe en RFC 2616 1 El cliente web anuncia que esquemas de compresion soporta incluyendo una lista de tokens en el HTTP request Para Content Encoding la lista en un campo llamado Accept Encoding para Transfer Encoding el campo se llama TE GET encrypted area HTTP 1 1 Host www example com Accept Encoding gzip deflate 2 Si el servidor soporta uno o mas esquemas de compresion los datos salientes pueden ir comprimidos de una o mas formas soportados por ambas partes Si este es el caso el servidor agregara un campo Content Encoding o Transfer Encoding en la respuesta HTTP con los esquemas usados separados por comas HTTP 1 1 200 OK Date mon 17 mar 2022 22 38 34 GMT Server Apache 1 3 3 7 Unix Red Hat Linux Last Modified Wed 08 Jan 2003 23 11 55 GMT Accept Ranges bytes Content Length 438 Connection close Content Type text html charset UTF 8 Content Encoding gzip El servidor web no esta para nada obligado a usar algun metodo de compresion esto depende de la configuracion del servidor web y tambien puede depender en la arquitectura interna del sitio web en cuestion En el caso de SDCH se requiere una negociacion de diccionario adicional lo que puede involucrar pasos adicionales como descargar un diccionario apropiado desde el servidor externo Tokens de Content Encoding EditarLa lista oficial de tokens disponible para servidores y clientes es mantenida por IANA 4 e incluye compress metodo del programa UNIX compress historico obsoleto en la mayoria de aplicaciones y sustituido por gzip o deflate deflate compresion basada en el algoritmo deflate descrito en RFC 1951 envuelto en el interior del formato de datos zlib RFC 1950 exi Intercambio Eficiente de XML de W3C gzip formato zip GNU que se describe en el RFC 1952 Este metodo es el de mas amplio soporte a marzo de 2011 5 identity No se utiliza ninguna transformacion Este es el valor predeterminado para la codificacion de contenido pack200 gzip Formato de Transferencia de Red para Archivos Java 6 Ademas de estos un numero de tokens no oficiales o no normalizados se utilizan libremente tanto por servidores o clientes bzip2 compresion basada en el formato libre bzip2 soportado por lighttpd 7 LZMA compresion basada en cruda LZMA esta disponible en Opera 20 y en elinks a traves de una opcion en tiempo de compilacion 8 peerdist 9 cache y Recuperacion de contenido entre pares de Microsoft SDCH 10 11 Google compresion de HTTP por diccionario compartido basado en VCDIFF RFC 3284 soportado en forma nativa en las ultimas versiones de Google Chrome Chromium y Android asi como en los sitios web de Google xz compresion basada en LZMA2 contenido soportada con un parche no oficial de Firefox 12 y aplicado plenamente en mget desde 2013 12 31 13 Servidores que soportan compresion HTTP EditarSAP NetWeaver Microsoft IIS incorporado o utilizando un modulo de terceros Apache HTTP Server via mod deflate a pesar de su nombre solo soporta gzip 14 Hiawatha HTTP server entrega archivos pre comprimidos 15 Cherokee HTTP server comprime gzip y deflate en linea Oracle iPlanet Web Server Zeus Web Server lighttpd via mod compress y el mas nuevo mod deflate 1 5 x nginx incorporado Las aplicaciones basadas en Tornado si se fija compress response en Verdadero True en la configuracion para versiones previas a 4 0 poner gzip en verdadero Jetty Server incorporado en proveerr contenido estatico por omision y disponible via configuraciones de filtros de servlets GeoServer Apache Tomcat IBM Websphere AOLserver Ruby Rack a traves del middleware Rack DeflaterLa compresion en HTTP puede lograrse tambien usando la funcionalidad de lenguajes de Script del lado del servidor como PHP o lenguajes de programacion como Java Problemas que impiden el uso de compresion HTTP EditarUn articulo de 2009 por Arvind Jain y Jason Glasgow ingenieros de Google afirma que mas de 99 personas ano se desperdician 16 diariamente debido al mayor tiempo de carga de las paginas cuando los usuarios no reciben contenido comprimido Esto ocurre cuando el software anti virus interfiere con conexiones para obligarlas a ir sin compresion donde se usan proxies con navegadores demasiado reticentes donde los servidores estan mal configurados y donde los errores del navegador impiden usar compresion Internet Explorer 6 que cae a HTTP 1 0 sin funciones como la compresion o la canalizacion cuando esta detras de un proxy una configuracion comun en entornos corporativos era el navegador dominante mas propensos a bajar a HTTP sin comprimir 16 Otro problema encontrado durante la implementacion de la compresion HTTP en gran escala es debido a la definicion de codificacion de deflate mientras HTTP 1 1 define la codificacion de deflate como datos comprimidos con deflate RFC 1951 dentro de una corriente de zlib formateado RFC 1950 los productos de servidor y cliente de Microsoft historicamente lo implementaron como una corriente desinflado en bruto 17 lo que hace su implementacion no fiable 18 19 Por esta razon algunos programas incluyendo el Apache HTTP Server solo implementan la codificacion gzip Implicaciones de seguridad EditarArticulo principal BREACH En 2012 se anuncio un ataque general contra el uso de la compresion de datos llamado CRIME Si bien el ataque CRIME podria trabajar eficazmente contra un gran numero de protocolos incluyendo pero no limitado a TLS y protocolos de capa de aplicacion tales como SPDY o HTTP solo exploits contra TLS y SPDY fueron demostrados y en gran medida mitigados en los navegadores y servidores El exploit CRIME contra la compresion HTTP no se ha mitigado en absoluto a pesar de que los autores de CRIME han advertido que esta vulnerabilidad podria ser aun mas extendida que la compresion combinada de SPDY y TLS En 2013 fue publicado una nueva instancia del ataque CRIME contra la compresion HTTP llamado BREACH Un ataque BREACH puede extraer tokens de acceso direcciones de correo electronico u otra informacion sensible desde trafico web encriptado con TLS en tan solo 30 segundos dependiendo del numero de bytes a ser extraidos siempre que el atacante engane a la victima para que visite un enlace web malicioso 20 Todas las versiones de TLS y SSL estan en riesgo de BREACH independientemente del algoritmo de encriptacion o cifrado utilizado 21 A diferencia de los casos anteriores de CRIME que se pueden defender con exito apagando la compresion TLS o compresion de cabecera SPDY los BREACH explotan la compresion HTTP la cual no puede ser apagada realmente ya que practicamente todos los servidores web se basan en ella para mejorar las velocidades de transmision de datos para los usuarios 20 Referencias Editar Using HTTP Compression IIS 6 0 Microsoft Corporation Consultado el 9 de febrero de 2010 RFC 2616 Section 3 5 The Internet Assigned Numbers Authority IANA actua como registro para los valores de los tokens para codificacion de contenido RFC2616 Transfer Encoding gzip chunked not handled properly Chromium Issue 94730 Hypertext Transfer Protocol Parameters HTTP Content Coding Registry IANA Consultado el 18 de abril de 2014 Compression Tests Results Verve Studios Co Archivado desde el original el 21 de marzo de 2012 Consultado el 19 de julio de 2012 JSR 200 Network Transfer Format for Java Archives The Java Community Process Program ModCompress Lighttpd lighty labs Consultado el 18 de abril de 2014 elinks LZMA decompression MS PCCRTP Peer Content Caching and Retrieval Hypertext Transfer Protocol HTTP Extensions Microsoft Consultado el 19 de abril de 2014 Butler Jon Wei Hsin Lee McQuade Bryan Mixter Kenneth A Proposal for Shared Dictionary Compression Over HTTP Google SDCH Mailing List Google Groups LZMA2 Compression MozillaWiki Consultado el 18 de abril de 2014 Pagina GitHub del Proyecto mget Consultado el Mayo de 2014 HOWTO Use Apache mod deflate To Compress Web Content Accept Encoding gzip Mark S Kolich Archivado desde el original el 20 de agosto de 2011 Consultado el 23 de marzo de 2011 Extra part of Hiawatha webserver s manual a b Use compression to make the web faster Google Developers Consultado el 22 de mayo de 2013 deflate Why are major web sites using gzip Stack Overflow Consultado el 18 de abril de 2014 Compression Tests About Verve Studios Archivado desde el original el 2 de enero de 2015 Consultado el 18 de abril de 2014 Lose the wait HTTP Compression Zoompf Web Performance Consultado el 18 de abril de 2014 a b Goodin Dan 1 de agosto de 2013 Gone in 30 seconds New attack plucks secrets from HTTPS protected pages Ars Technica Conde Nast Consultado el 2 de agosto de 2013 Leyden John 2 de agosto de 2013 Step into the BREACH New attack developed to read encrypted web data The Register Consultado el 2 de agosto de 2013 Datos Q3495340 Obtenido de https es wikipedia org w index php title Compresion HTTP amp oldid 140422908, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos