¿Podría alguien darme una breve descripción de las diferencias entre HTTP 1.0 y HTTP 1.1? He pasado algún tiempo con ambos RFC, pero no he podido sacar mucha diferencia entre ellos. Wikipedia dice esto:
HTTP / 1.1 (1997-1999)
Versión actual; las conexiones persistentes están habilitadas de manera predeterminada y funcionan bien con servidores proxy. También admite la canalización de solicitudes, lo que permite el envío de 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, así 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 un servidor HTTP o una aplicación. Principalmente estoy buscando un empujón en la dirección correcta para poder resolverlo por mi cuenta.
Respuestas:
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 de Host, pero no está de más agregar uno, y muchas aplicaciones (proxies) esperan ver el encabezado de Host independientemente de la versión del protocolo.
Ejemplo:
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 tiene blahblahlbah.com y helohelohelo.com, ambos apuntan a la misma IP. Su servidor web puede usar el campo Host para distinguir qué sitio quiere 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ía 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 algunos grandes problemas de eficiencia debido a TCP Slow Start .
Método de opciones:
HTTP / 1.1 introduce el método OPTIONS. Un cliente HTTP puede usar este método para determinar las capacidades del servidor HTTP. Se usa principalmente para compartir recursos de origen cruzado en aplicaciones web.
Almacenamiento en caché:
HTTP 1.0 tenía soporte para el almacenamiento en caché a través del encabezado: If-Modified-Since.
HTTP 1.1 se expande mucho en 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 más 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 solo los encabezados y el servidor le dirá al cliente 100 Continuar, continúe con el cuerpo.
Mucho más:
fuente
HTTP 1.0 (1994)
HTTP 1.1 (1996-2015)
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 que se sirvan múltiples dominios desde una sola 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.
fuente
Para aplicaciones triviales (por ejemplo, recuperar esporádicamente un valor de temperatura de un termómetro habilitado para web) HTTP 1.0 está bien tanto para un cliente como para un servidor. Puede escribir un cliente o servidor HTTP 1.0 básico basado en sockets en aproximadamente 20 líneas de código.
Para escenarios más complicados, HTTP 1.1 es el camino a seguir. Espere un aumento de 3 a 5 veces en el tamaño del código para lidiar con las complejidades del protocolo HTTP 1.1 más complejo. La complejidad se debe principalmente a que, en HTTP 1.1, deberá crear, analizar y responder a varios encabezados. Puede proteger su aplicación de esta complejidad haciendo que un cliente use una biblioteca HTTP o un servidor use un servidor de aplicaciones web.
fuente
Un problema clave de compatibilidad es el soporte para conexiones persistentes . Recientemente trabajé en un servidor que "soportaba" HTTP / 1.1, pero no pude cerrar la conexión cuando un cliente envió una solicitud HTTP / 1.0. Al escribir un servidor que admita HTTP / 1.1, asegúrese de que también funcione bien con clientes HTTP / 1.0 únicamente.
fuente
Una de las primeras diferencias que puedo recordar desde la parte superior de mi cabeza son los múltiples dominios que se ejecutan en el mismo servidor, la recuperación parcial de recursos, esto le permite recuperar y acelerar la descarga de un recurso (es lo que hacen casi todos los aceleradores de descarga).
Si desea desarrollar una aplicación como un sitio web o similar, no necesita preocuparse demasiado por las diferencias, pero debe saber la diferencia entre
GET
yPOST
verbos.Ahora, si desea desarrollar un navegador, sí, tendrá que conocer el protocolo completo, así como si está tratando de desarrollar un servidor HTTP.
Si solo está interesado en conocer el protocolo HTTP, le recomendaría comenzar con HTTP / 1.1 en lugar de 1.0.
fuente
HTTP 1.1 es la última versión del Protocolo de transferencia de hipertexto, el protocolo de aplicación World Wide Web que se ejecuta sobre el conjunto de protocolos TCP / IP de Internet. en comparación con HTTP 1.0, HTTP 1.1 proporciona una entrega más rápida de páginas web que el HTTP original y reduce el tráfico web.
Tráfico web Ejemplo: por ejemplo, si está accediendo a un servidor. Al mismo tiempo, tantos usuarios están accediendo al servidor para obtener los datos. Entonces existe la posibilidad de colgar el servidor. Este es el tráfico web.
fuente
HTTP 1.1 viene con el encabezado de host en su especificación, mientras que HTTP 1.0 no tiene oficialmente un encabezado de host, pero no se niega a agregar uno.
El encabezado del host es útil porque permite al cliente enrutar un mensaje a través del servidor proxy, y la principal diferencia entre las versiones 1.0 y 1.1 HTTP son:
fuente
En comparación con 1.0, 1.1 reduce el tráfico web
fuente