La diferencia entre Http2 y Http1.X

 

 

1. La diferencia entre http 1 y http 2

(1) HTTP2 usa transmisión binaria y HTTP1.X usa transmisión de texto (cadena).

Las unidades de transmisión binaria son tramas y flujos. Los fotogramas forman una secuencia y la secuencia también tiene una marca de identificación de secuencia

(2) HTTP2 admite multiplexación

Debido a que existe una ID de secuencia, es posible implementar múltiples transmisiones de solicitudes http a través de la misma solicitud http. La ID de secuencia se puede usar para marcar qué secuencia es para localizar qué solicitud http.

(3). Compresión de encabezado HTTP2

HTTP2 comprime el encabezado a través de gzip y comprime y luego lo envía. Al mismo tiempo, el cliente y el servidor mantienen una tabla de información de encabezado. Todos los campos se registran en esta tabla, por lo que cada transmisión subsiguiente solo necesita transmitir el ID de índice en la tabla. Valor del encabezado de la tabla de consulta de ID de índice

(4) HTTP2 admite la inserción del servidor

HTTP2 admite el envío activo de contenido al cliente sin el permiso del cliente

 

En segundo lugar, la historia de HTTP

Ya cuando se estableció HTTP, fue principalmente para transmitir documentos en lenguaje de marcado de hipertexto (HTML) desde el servidor web al navegador del cliente. También significa que para el front-end, la página HTML que escribimos se colocará en nuestro servidor web, y el lado del usuario accede a la dirección URL a través del navegador para obtener el contenido mostrado de la página web, pero desde WEB2.0, nuestra página se ha complicado. No se trata solo de texto e imágenes simples. Al mismo tiempo, nuestra página HTML tiene CSS y Javascript para enriquecer la visualización de nuestra página. Con la llegada de Ajax, tenemos otra forma de obtener datos del servidor. En realidad, se basan en el protocolo HTTP. También en la era de Internet móvil, nuestras páginas pueden ejecutarse en navegadores móviles, pero en comparación con las PC, las condiciones de la red móvil son más complicadas, lo que hace que tengamos que entender HTTP y seguir optimizando.

 

Tres, la optimización básica de HTTP

Hay dos factores principales que afectan una solicitud de red HTTP: ancho de banda y latencia.

  • Ancho de banda: si todavía estamos en la etapa de acceso telefónico a Internet, el ancho de banda puede convertirse en un problema grave que afecte las solicitudes, pero ahora que la infraestructura de la red ha mejorado mucho el ancho de banda, ya no tenemos que preocuparnos por el ancho de banda que afecta la velocidad de la red. Entonces solo hay demora.

  • retrasar:

    • Bloqueo del navegador (bloqueo HOL): el navegador bloqueará la solicitud por algunas razones. El navegador solo puede tener 4 conexiones para el mismo nombre de dominio al mismo tiempo (esto puede variar según el kernel del navegador) Si se excede el número máximo de conexiones del navegador, las solicitudes posteriores serán bloqueadas.

    • Búsqueda de DNS: el navegador necesita conocer la IP del servidor de destino para establecer una conexión. El sistema que resuelve los nombres de dominio a IP es DNS. Esto generalmente puede usar los resultados de la caché de DNS para lograr el propósito de reducir este tiempo.

    • Establecer conexión (conexión inicial): HTTP se basa en el protocolo TCP, y el navegador solo puede incorporar paquetes de solicitud HTTP durante el tercer protocolo de enlace para lograr un establecimiento de conexión real, pero la imposibilidad de reutilizar estas conexiones provocará cada solicitud Ambos experimentaron un apretón de manos de tres vías y un inicio lento. El protocolo de enlace de tres vías tiene un impacto significativo en escenarios de alta latencia, mientras que el inicio lento tiene un mayor impacto en las solicitudes de archivos grandes.

 

 

Cuarto, algunas diferencias entre HTTP1.0 y HTTP1.1

 

HTTP1.0 se usó por primera vez en páginas web en 1996. En ese momento, solo se usaba en algunas páginas web y solicitudes de red relativamente simples. Sin embargo, HTTP 1.1 solo se usó ampliamente en las principales solicitudes de red de navegadores actuales en 1999. Al mismo tiempo, HTTP 1.1 es actualmente el protocolo HTTP más utilizado. Las principales diferencias se reflejan principalmente en:

  1. El procesamiento de caché , en HTTP1.0, If-Modified-Since y Expires en el encabezado se utilizan principalmente como criterios para el juicio de caché, HTTP1.1 introduce más estrategias de control de caché como la etiqueta de entidad, If-Unmodified-Since, If-Match, If-None-Match y más encabezados de caché opcionales están disponibles para controlar la estrategia de caché.

  2. Optimización del ancho de banda y uso de conexiones de red . En HTTP1.0, hay algunos fenómenos de desperdicio de ancho de banda. Por ejemplo, el cliente solo necesita una parte de un determinado objeto, pero el servidor envía el objeto completo y no admite la función de transmisión reanudable. HTTP1.1 introduce el campo de encabezado de rango en el encabezado de la solicitud, que permite que solo se solicite una cierta parte del recurso, es decir, el código de retorno es 206 (Contenido parcial), lo que facilita la libre elección de los desarrolladores para hacer un uso completo del ancho de banda y las conexiones.

  3. Para la gestión de notificaciones de errores, se han agregado 24 códigos de respuesta de estado de error a HTTP 1.1. Por ejemplo, 409 (Conflicto) indica que el recurso solicitado entra en conflicto con el estado actual del recurso; 410 (Desaparecido) indica que un determinado recurso en el servidor es permanente Deleción sexual.

  4. Procesamiento del encabezado del host . En HTTP1.0, se considera que cada servidor está vinculado a una dirección IP única. Por lo tanto, la URL en el mensaje de solicitud no transmite el nombre del host. Pero con el desarrollo de la tecnología de host virtual, puede haber varios hosts virtuales (Servidores Web Multi-homed) en un servidor físico y comparten una dirección IP. Tanto el mensaje de solicitud HTTP1.1 como el mensaje de respuesta deben admitir el campo de encabezado de Host, y si no hay un campo de encabezado de Host en el mensaje de solicitud, se informará un error (400 Bad Request).

  5. Conexión persistente, HTTP 1.1 admite PersistentConnection y procesamiento de solicitudes por canalización. Se pueden transmitir múltiples solicitudes y respuestas HTTP en una conexión TCP, lo que reduce el consumo y la demora en el establecimiento y cierre de conexiones. En HTTP1.1 De forma predeterminada, Connection: keep-alive está habilitado, lo que hasta cierto punto compensa las deficiencias de HTTP1.0 de que se debe crear una conexión para cada solicitud.

     

Cinco, algunas diferencias entre HTTPS y HTTP

 

  • El protocolo HTTPS requiere una CA para solicitar un certificado. Generalmente, hay pocos certificados gratuitos y se requiere una tarifa.

  • El protocolo HTTP se ejecuta en TCP, todo el contenido transmitido es texto sin formato, HTTPS se ejecuta en SSL / TLS y SSL / TLS se ejecuta en TCP, y todo el contenido transmitido está encriptado.

  • HTTP y HTTPS usan métodos de conexión completamente diferentes y usan puertos diferentes. El primero es 80 y el segundo es 443.

  • HTTPS puede prevenir eficazmente el secuestro del operador y resolver un gran problema de anti-secuestro.

 

6. SPDY: Optimización de HTTP1.x

En 2012, Google presentó la solución SPDY, que optimizó el retardo de solicitud de HTTP1.X y resolvió la seguridad de HTTP1.X, de la siguiente manera:

  1. Para reducir la latencia , SPDY adopta elegantemente la multiplexación (multiplexación) en respuesta a la alta latencia de HTTP. La multiplexación resuelve el problema del bloqueo HOL al compartir una conexión tcp con múltiples flujos de solicitudes, reduce la latencia y mejora la utilización del ancho de banda.

  2. Solicitar prioridad (solicitar prioridad). La multiplexación trae un nuevo problema y es que, sobre la base de la conexión compartida, puede causar el bloqueo de solicitudes críticas. SPDY permite establecer la prioridad para cada solicitud de modo que las solicitudes importantes se respondan primero. Por ejemplo, cuando el navegador carga la página de inicio, primero se debe mostrar el contenido html de la página de inicio, y luego se cargan varios archivos de recursos estáticos, archivos de script, etc., para que los usuarios puedan ver el contenido de la página web la primera vez.

  3. compresión de encabezado. Como se mencionó anteriormente, los encabezados HTTP1.x suelen ser redundantes. La elección de un algoritmo de compresión adecuado puede reducir el tamaño y la cantidad de paquetes.

  4. La transmisión del protocolo de cifrado basado en HTTPS mejora en gran medida la fiabilidad de la transmisión de datos.

  5. La inserción del servidor ( inserción del servidor) utiliza páginas web SPDY. Por ejemplo, mi página web tiene una solicitud para sytle.css. Cuando el cliente recibe datos de sytle.css, el servidor enviará el archivo sytle.js al cliente. Por otro lado, cuando el cliente intenta obtener sytle.js nuevamente, puede obtenerlo directamente del caché sin enviar más solicitudes. Diagrama de composición SPDY:

SPDY está ubicado bajo HTTP y sobre TCP y SSL, por lo que puede ser fácilmente compatible con la versión anterior del protocolo HTTP (el contenido de HTTP1.x está encapsulado en un nuevo formato de marco), y se pueden usar las funciones SSL existentes.

 

Siete, el rendimiento de HTTP2.0 es asombroso

HTTP / 2: el futuro de Internet  https://link.zhihu.com/?target=https://http2.akamai.com/demo es una demostración oficial creada por Akamai para ilustrar la fase de HTTP / 2 En comparación con el HTTP / 1.1 anterior, el rendimiento ha mejorado enormemente. Se solicitan 379 imágenes al mismo tiempo.De la comparación del tiempo de carga, podemos ver la ventaja de velocidad de HTTP / 2.

 

8. HTTP2.0: versión mejorada de SPDY

Se puede decir que HTTP2.0 es una versión mejorada de SPDY (de hecho, originalmente se diseñó en base a SPDY), pero aún existen diferencias entre HTTP2.0 y SPDY, como sigue:


La diferencia entre HTTP2.0 y SPDY:

  1. HTTP2.0 admite la transmisión HTTP de texto plano, mientras que SPDY fuerza el uso de HTTPS

  2. El algoritmo de compresión del encabezado del mensaje HTTP2.0 usa  HPACK  http://http2.github.io/http2-spec/compression.html en lugar de DEFLATE usado por SPDY   http://zh.wikipedia.org/wiki/DEFLATE

 

Nueve, las nuevas características de HTTP2.0 y HTTP1.X comparadas

  • El nuevo formato binario ( formato binario), el análisis de HTTP1.x se basa en texto. El análisis de formato basado en el protocolo de texto tiene defectos naturales y la expresión del texto está diversificada. Es probable que haya muchos escenarios para considerar la solidez. El sistema binario es diferente y solo se reconoce la combinación de 0 y 1. Con base en esta consideración, el análisis del protocolo de HTTP2.0 decidió adoptar el formato binario, que es conveniente y robusto.

  • Multiplexación (multiplexación), es decir, conexión compartida, es decir, cada solicitud se utiliza como un mecanismo de conexión compartida. Una solicitud corresponde a una identificación, por lo que puede haber múltiples solicitudes en una conexión, y las solicitudes de cada conexión se pueden mezclar al azar, y el receptor puede asignar las solicitudes a diferentes solicitudes del servidor de acuerdo con la identificación de la solicitud.

  • La compresión del encabezado , como se mencionó anteriormente, el encabezado de HTTP1.x mencionado anteriormente contiene mucha información y debe enviarse repetidamente cada vez. HTTP2.0 usa un codificador para reducir el tamaño del encabezado que debe transmitirse, y las partes de la comunicación almacenan en caché una copia La tabla de campos de encabezado no solo evita la transmisión de encabezados repetidos, sino que también reduce el tamaño que debe transmitirse.

  • Servidor push (servidor push), al igual que SPDY, HTTP2.0 también tiene capacidades de servidor push.

     

10. Actualización y transformación de HTTP2.0

  • El artículo anterior decía que HTTP2.0 en realidad puede admitir no HTTPS, pero ahora los navegadores convencionales como Chrome, Firefox todavía solo admiten el protocolo HTTP2.0 implementado en base a TLS, por lo que si desea actualizar a HTTP2.0, primero debe actualizar HTTPS. .

  • Una vez que su sitio web se ha actualizado a HTTPS, es mucho más fácil actualizar a HTTP2.0. Si usa NGINX, simplemente inicie el protocolo correspondiente en el archivo de configuración. Puede consultar el documento técnico de NGINX, la guía oficial de NGINX para configurar HTTP2.0  https: //www.nginx.com/blog/nginx-1-9-5/.

  • Si usa HTTP2.0, ¿qué hacer con el HTTP1.x original? No se preocupe por este problema. HTTP2.0 es totalmente compatible con la semántica de HTTP1.x. Para los navegadores que no admiten HTTP2.0, NGINX será automáticamente compatible con versiones anteriores.

 

11. Notas

¿Cuál es la diferencia entre la multiplexación HTTP2.0 y la multiplexación de conexión larga en HTTP1.X?

  • HTTP / 1. * Una solicitud-respuesta, establece una conexión y ciérrala cuando se agote, cada solicitud debe establecer una conexión;

  • La solución de HTTP / 1.1 Pipeling es que varias solicitudes se ponen en cola para la serialización y el procesamiento de un solo subproceso. Las solicitudes posteriores esperan el retorno de la solicitud anterior para obtener la oportunidad de ejecución. Una vez que se agota el tiempo de espera de una solicitud, las solicitudes posteriores solo se pueden bloquear y no hay forma. También se denomina bloqueo al final del hilo;

  • Se pueden ejecutar varias solicitudes HTTP / 2 en paralelo en una conexión al mismo tiempo. Una determinada tarea de solicitud requiere mucho tiempo y no afectará la ejecución normal de otras conexiones; la
    figura específica es la siguiente:

  • ¿Qué es exactamente el servidor push?
    El servidor push puede enviar los recursos que necesita el cliente al cliente junto con index.html, eliminando la necesidad de que el cliente repita la solicitud. Debido a que no hay operaciones como iniciar una solicitud, establecer una conexión, etc., los recursos estáticos se pueden enviar a través del servidor para aumentar considerablemente la velocidad. detalles como sigue:

  • Proceso de solicitud de cliente ordinario:

Proceso de inserción del servidor

¿Por qué se necesita la compresión del encabezado?
Suponga que una página tiene 100 recursos para cargar (este número sigue siendo bastante conservador para la Web actual), y cada solicitud tiene un encabezado de mensaje de 1 kb (esto tampoco es infrecuente, debido a la existencia de cosas como cookies y referencias) ), debe consumir al menos 100 kb para obtener estos encabezados de mensaje. HTTP2.0 puede mantener un diccionario y actualizar los encabezados HTTP por diferencia, lo que reduce en gran medida el tráfico generado por la transmisión de encabezados. Referencia específica: Introducción a la tecnología de compresión de encabezados HTTP / 2

 

¿Qué tan buena es la multiplexación HTTP2.0?
La clave para la optimización del rendimiento HTTP no es un gran ancho de banda, sino una baja latencia. La conexión TCP se "sintonizará" sola con el tiempo, limitando inicialmente la velocidad máxima de la conexión. Si los datos se transmiten con éxito, la velocidad de transmisión aumentará con el tiempo. Este ajuste se denomina inicio lento de TCP. Por esta razón, la conexión HTTP a corto plazo y con ráfagas originalmente se vuelve muy ineficiente.
HTTP / 2 permite que todos los flujos de datos compartan la misma conexión, de modo que las conexiones TCP se puedan utilizar de forma más eficaz, de modo que un ancho de banda elevado realmente pueda mejorar el rendimiento de HTTP.

Tabla de contenido

 

1. La diferencia entre http 1 y http 2

En segundo lugar, la historia de HTTP

Tres, la optimización básica de HTTP

Cuarto, algunas diferencias entre HTTP1.0 y HTTP1.1

Cinco, algunas diferencias entre HTTPS y HTTP

6. SPDY: Optimización de HTTP1.x

Siete, el rendimiento de HTTP2.0 es asombroso

8. HTTP2.0: versión mejorada de SPDY

10. Actualización y transformación de HTTP2.0

11. Notas


Supongo que te gusta

Origin blog.csdn.net/weixin_46729085/article/details/108637750
Recomendado
Clasificación