HTTP 1.0 frente a 1.1
¿Alguien podría darme una breve descripción de las diferencias entre HTTP 1.0 y HTTP 1.1? Pasé algún tiempo con ambos RFC, pero no pude encontrar muchas diferencias entre ellos. Wikipedia dice esto:
HTTP/1.1 (1997-1999)
Versión actual; conexiones persistentes habilitadas de forma predeterminada y funciona bien con proxies. También admite la canalización de solicitudes, lo que permite enviar múltiples solicitudes al mismo tiempo, lo que permite que el servidor se prepare para la carga de trabajo y potencialmente transfiera los recursos solicitados más rápidamente al cliente.
Pero eso no significa mucho para mí. Me doy cuenta de que este es un tema algo complicado, por lo que no espero una respuesta completa, pero ¿alguien puede darme una breve descripción de las diferencias en un nivel un poco más bajo?
Con esto quiero decir que estoy buscando la información que necesitaría saber para implementar una aplicación o un servidor HTTP. Principalmente busco un empujón en la dirección correcta para poder resolverlo por mi cuenta.
Soporte de proxy y el campo Host:
HTTP 1.1 tiene un encabezado de host requerido por especificación.
HTTP 1.0 no requiere oficialmente un encabezado Host, pero no está de más agregar uno, y muchas aplicaciones (proxies) esperan ver el encabezado Host independientemente de la versión del protocolo.
Ejemplo:
GET / HTTP/1.1
Host: www.blahblahblahblah.com
Este encabezado es útil porque le permite enrutar un mensaje a través de servidores proxy y también porque su servidor web puede distinguir entre diferentes sitios en el mismo servidor.
Esto significa que si tienes blahblahlbah.com y helohelohelo.com, ambos apuntan a la misma IP. Su servidor web puede utilizar el campo Host para distinguir qué sitio desea la máquina cliente.
Conexiones persistentes:
HTTP 1.1 también le permite tener conexiones persistentes, lo que significa que puede tener más de una solicitud/respuesta en la misma conexión HTTP.
En HTTP 1.0 tenías que abrir una nueva conexión para cada par de solicitud/respuesta. Y después de cada respuesta la conexión se cerraría. Esto conduce a grandes problemas de eficiencia debido al inicio lento de TCP .
Método de OPCIONES:
HTTP/1.1 introduce el método OPCIONES. Un cliente HTTP puede utilizar este método para determinar las capacidades del servidor HTTP. Se utiliza principalmente para compartir recursos entre orígenes en aplicaciones web.
Almacenamiento en caché:
HTTP 1.0 tenía soporte para almacenamiento en caché a través del encabezado: If-Modified-Since.
HTTP 1.1 amplía mucho el soporte de almacenamiento en caché mediante el uso de algo llamado "etiqueta de entidad". Si 2 recursos son iguales, tendrán las mismas etiquetas de entidad.
HTTP 1.1 también agrega los encabezados condicionales If-Unmodified-Since, If-Match, If-None-Match.
También hay otras adiciones relacionadas con el almacenamiento en caché, como el encabezado Cache-Control.
100 Continuar estado:
Hay un nuevo código de retorno en HTTP/1.1 100 Continuar. Esto es para evitar que un cliente envíe una solicitud grande cuando ese cliente ni siquiera está seguro de si el servidor puede procesar la solicitud o si está autorizado para procesarla. En este caso, el cliente envía sólo los encabezados y el servidor le indicará al cliente 100 Continuar, siga adelante con el cuerpo.
Mucho más:
- Autenticación implícita y autenticación de proxy
- Códigos de estado nuevos adicionales
- Codificación de transferencia fragmentada
- Encabezado de conexión
- Soporte de compresión mejorado
- Mucho mucho mas.
HTTP 1.0 (1994)
- Todavía está en uso
- Puede ser utilizado por un cliente que no puede manejar respuestas fragmentadas (o comprimidas) del servidor.
HTTP 1.1 (1996-2015)
- Formaliza muchas extensiones a la versión 1.0
- Admite conexiones persistentes y canalizadas
- Admite transferencias fragmentadas, compresión/descompresión
- Admite alojamiento virtual (un servidor con una única dirección IP que aloja varios dominios)
- Soporta múltiples idiomas
- Admite transferencias de rango de bytes; útil para reanudar transferencias de datos interrumpidas
HTTP 1.1 es una mejora de HTTP 1.0. A continuación se enumeran las cuatro mejoras principales:
Uso eficiente de las direcciones IP, al permitir servir múltiples dominios desde una única dirección IP.
Respuesta más rápida, al permitir que un navegador web envíe múltiples solicitudes a través de una única conexión persistente.
- Respuesta más rápida para páginas generadas dinámicamente, gracias a la compatibilidad con codificación fragmentada, que permite enviar una respuesta antes de que se conozca su longitud total.
- Respuesta más rápida y grandes ahorros de ancho de banda al agregar soporte de caché.