Como todos sabemos, http2.0 ha agregado muchas características.
La característica más importante de HTTP 2.0: no cambiará la semántica de HTTP. Los conceptos centrales de los métodos HTTP, códigos de estado, URI y campos de encabezado, etc., siguen siendo los mismos que antes, pero así es. comprometido a superar los estándares de la generación anterior, mejorar el rendimiento de la transmisión, lograr una baja latencia y un alto rendimiento. La razón por la que se llama 2.0 es por la nueva capa de estructura binaria.
Dado que debemos asegurarnos de que los diversos verbos, métodos y encabezados de HTTP no se vean afectados, debemos agregar una división binaria entre la capa de aplicación (HTTP2.0) y la capa de transporte (TCP o UDP).
En la capa de marco binario, HTTP 2.0 dividirá toda la información transmitida en mensajes y marcos más pequeños y los codificará en formato binario, en el que la información del encabezado HTTP 1.x se encapsulará en el marco de encabezados. y nuestro cuerpo de solicitud se encapsula en el marco de datos.
La comunicación HTTP 2.0 se completa a través de una conexión, que puede transportar cualquier número de flujos de datos bidireccionales. En consecuencia, cada flujo de datos se envía en forma de mensaje, que consta de una o más tramas que pueden enviarse desordenadas y luego volver a ensamblarse en función del identificador de secuencia en el encabezado de cada trama.
Compresión de encabezados HTTP2.0
HTTP 2.0 utiliza "tablas de encabezados" en el cliente y el servidor para rastrear y almacenar pares clave-valor enviados previamente. Para los mismos datos, no. luego se envía con cada solicitud y respuesta; los pares clave-valor comunes (agente de usuario, tipos de medios aceptables, etc.) que rara vez cambian durante la comunicación solo deben enviarse una vez. De hecho, si la solicitud no contiene encabezados (como una solicitud de sondeo para el mismo recurso), entonces la sobrecarga del encabezado es cero bytes. En este momento, todos los encabezados utilizan automáticamente los encabezados enviados por la solicitud anterior.
Si el encabezado cambia, solo se deben enviar los datos modificados en el marco de encabezados, y el marco de encabezado nuevo o modificado se agregará a la "tabla de encabezados". La tabla de encabezado existe durante toda la conexión HTTP 2.0 y el cliente y el servidor la actualizan progresivamente simultáneamente.
Todas las solicitudes HTTP2.0 están en un enlace TCP
HTTP 2.0 reduce la unidad básica de comunicación del protocolo HTTP en marcos, y estos marcos corresponden al flujo lógico. Los mensajes se intercambian bidireccionalmente en la misma conexión TCP en paralelo. Es como, solicito una página. ¡Todas las solicitudes de recursos en la página se solicitan y responden a través de un TCP entre el cliente y el servidor!
Los estudiantes que presten atención al rendimiento de TCP sabrán que la clave para el cuello de botella en el rendimiento de HTTP es la baja latencia en lugar del gran ancho de banda. La mayoría de las conexiones HTTP son cortas y en ráfagas, pero TCP es más eficiente cuando las conexiones largas transfieren grandes cantidades de datos. HTTP 2.0 puede usar conexiones TCP de manera más eficiente al permitir que todos los flujos de datos usen la misma conexión, de modo que un ancho de banda elevado realmente pueda contribuir a mejorar el rendimiento de HTTP.
Al mismo tiempo, el enfoque de múltiples recursos de enlace único aporta beneficios al nivel de arriba hacia abajo:
1. Puede reducir la presión del enlace de servicio, reducir el uso de memoria y mejorar el rendimiento de la conexión. El volumen es enorme
2. La situación de congestión de la red mejora debido a la reducción de las conexiones TCP.
3. Se reduce el tiempo de inicio lento y la congestión y; La recuperación de pérdida de paquetes es más rápida.
En otras palabras, el método de optimización de "fusión de recursos para reducir solicitudes" es ineficaz para HTTP2.0 y solo aumentará la carga de trabajo inútil.
Solicitudes y respuestas para flujos de bytes bidireccionales paralelos
En HTTP 2.0, el cliente y el servidor pueden descomponer los mensajes HTTP en marcos que son independientes entre sí y luego enviarlos desordenados. Finalmente vuélvalos a juntar en el otro extremo. Tenga en cuenta que hay múltiples flujos de datos en diferentes direcciones transmitiéndose en el mismo enlace.
El cliente puede enviar la transmisión desordenada mientras recibe la respuesta del servidor, y el lado del servidor hace lo mismo.
Descomponer los mensajes HTTP en marcos independientes, intercalarlos y luego volver a ensamblarlos en el otro extremo es una de las mejoras más importantes de HTTP 2.0. De hecho, este mecanismo desencadenará una serie de reacciones en cadena en toda la pila de tecnología web, lo que generará enormes mejoras en el rendimiento, porque:
Las solicitudes se pueden enviar en paralelo y entrelazadas, sin afectarse entre sí; /p>
Las respuestas se pueden enviar en paralelo y entrelazadas sin interferir entre sí;
Se pueden enviar múltiples solicitudes y respuestas en paralelo utilizando una sola conexión.
Eliminar la inconsistencia; Retraso necesario, reduciendo así el tiempo de carga de la página;
En otras palabras, el método de optimización de "partición de nombres de dominio" es inútil para HTTP2.0, porque los recursos se envían en paralelo y escalonados, y no hay límite. No se requiere ninguna descarga paralela adicional de varios nombres de dominio.
Prioridad de solicitud HTTP2.0
Cada flujo HTTP2.0 tiene un valor de prioridad. Este valor de prioridad determina las diferentes prioridades que el cliente y el servidor tomarán al procesar políticas de diferentes niveles. , los flujos de alta prioridad deben enviarse primero, pero no del todo. El cumplimiento absoluto puede introducir el problema del bloqueo del primer equipo: las solicitudes de alta prioridad son lentas y provocan que se bloquee la entrega de otros recursos. Para asignar recursos de procesamiento y ancho de banda entre clientes y servidores, también es necesaria una combinación de diferentes prioridades.
Push del servidor HTTP2.0
Una nueva y poderosa característica agregada a HTTP 2.0 es que el servidor puede enviar múltiples respuestas a una solicitud de cliente. En otras palabras, el servidor puede enviar recursos adicionales al cliente además de responder a la solicitud inicial, sin que el cliente los solicite explícitamente.
Cuando el navegador solicita un html, el servidor probablemente sabe que usted va a solicitar recursos a continuación y no necesita esperar a que el navegador obtenga el html y analice la página antes de enviar una solicitud de recurso. Nuestras imágenes incrustadas de uso común también pueden entenderse como una inserción forzada del servidor: solicité HTML, pero se incrustó una imagen.
Con el servidor HTTP2.0, la optimización de los recursos integrados en la era HTTP1.x ha dejado de tener sentido. Además, es más eficiente utilizar recursos enviados por el servidor, porque el cliente también puede almacenarlos en caché e incluso compartirlos entre diferentes páginas (aún siguiendo la política del mismo origen). Por supuesto, el navegador puede rechazar los recursos enviados por el servidor.