[Red informática] Protocolo HTTP y características de su versión


1. Protocolo HTTP

        El protocolo HTTP (Protocolo de transferencia de hipertexto, Protocolo de transferencia de hipertexto ) es un protocolo simple de solicitud y respuesta que generalmente se ejecuta sobre TCP y es el protocolo de red más utilizado en Internet. El protocolo HTTP define cómo un navegador solicita un documento de la World Wide Web de un servidor de la World Wide Web y cómo el servidor envía el documento al navegador. Desde un punto de vista jerárquico, el protocolo HTTP es un protocolo de capa de aplicación orientado a transacciones , que es la base para el intercambio fiable de archivos en la World Wide Web.

2. Versiones comunes del protocolo HTTP

        Hay cuatro versiones más comunes del protocolo HTTP, a saber, HTTP1.0, HTTP1.1, HTTP2 y HTTP3. Las diferentes versiones del protocolo http tienen esto muy diferente.

2.1 HTTP1.0

Características:

  • Cada vez que el navegador envíe una solicitud, establecerá una solicitud TCP con el servidor y la conexión TCP se desconectará cuando finalice la solicitud. ( sin conexión )
  • El servidor no realiza un seguimiento de cada cliente ni registra solicitudes anteriores. ( sin estado )
  • En la versión de HTTP0.9, solo se admite el método GET.En la versión de HTTP1.0, se agregaron dos métodos de solicitud, HEAD y POST.
  • Se agregaron códigos de estado de respuesta para marcar posibles causas de error.
  • Se introduce el concepto de número de versión de protocolo.
  • El concepto de encabezado HTTP se introduce para hacer que las solicitudes y respuestas de procesamiento HTTP sean más flexibles.
  • Los datos a transferir ya no se limitan a texto, sino que también se pueden transferir archivos como imágenes y música.

        La principal desventaja de HTTP 1.0 es la misma que la de HTTP 0.9. Cada vez que el navegador envía una solicitud, necesita crear una conexión TCP, y la conexión TCP se desconectará una vez que finalice la solicitud. La creación y desconexión frecuente de conexiones TCP sin duda aumentará la sobrecarga del servidor, y la velocidad de envío de datos al comienzo de la conexión TCP es relativamente lenta, y hay una fase de inicio lento y evitación de congestión.

2.2 HTTP1.1

Características:

  • Conexión: cerrar se usa de forma predeterminada en HTTP1.0. Conexión: Keep-alive se ha utilizado de forma predeterminada en HTTP1.1, lo que evita la sobrecarga del establecimiento y liberación de la conexión. Un TCP no está cerrado por defecto y puede ser multiplexado por múltiples solicitudes. Sólo cuando haya transcurrido el tiempo establecido se desconectará la conexión. ( conexión larga )
  • Se introduce el mecanismo de canalización y una conexión TCP puede enviar varias solicitudes al mismo tiempo.
  • Una solicitud de un nombre de dominio permite que se asignen varias conexiones de larga duración (lo que alivia el problema del bloqueo de cabeza en las conexiones de larga duración).
  • Se agregaron algunos campos en caché (If-Modified-Since, If-None-Match).
  • El campo de rango se introduce en el encabezado de la solicitud para admitir cargas reanudables.
  • El encabezado Host es obligatorio para hacer posible el alojamiento en Internet.
  • Se han agregado nuevos métodos como PUT, DELETE, OPTIONS y PATCH.

        El mecanismo de canalización HTTP significa que en una conexión TCP, se pueden realizar varias solicitudes HTTP en paralelo, y el cliente puede emitir la siguiente solicitud sin esperar a que regrese el resultado de la solicitud anterior, pero el servidor debe devolver las respuestas en el orden en cual el cliente solicita el resultado recibido.
        Aunque HTTP1.1 reduce el proceso de creación de una gran cantidad de TCP a través de conexiones largas, otras solicitudes solo se pueden bloquear si la solicitud anterior no se completa.

2.3 HTTP2

Características:

  • Protocolo binario : la información del encabezado en la versión HTTP1.1 es texto y la parte de datos puede ser texto o binario. En la versión HTTP2, tanto el encabezado como la parte de datos son binarios y se denominan colectivamente marcos.
  • Multiplexación : Se descarta el pipeline en HTTP 1.1.En la misma conexión TCP, el cliente y el servidor pueden enviar múltiples solicitudes y múltiples respuestas al mismo tiempo, y no necesitan seguir el orden, evitando así el problema de cola de cabeza bloqueo
  • Compresión de información de encabezado : use un algoritmo especial para comprimir el encabezado y reducir la cantidad de transmisión de datos, principalmente a través del servidor y el cliente para mantener conjuntamente una tabla de información de encabezado, toda la información de encabezado tendrá registros correspondientes en la tabla, y habrá Un número de índice, de modo que solo sea necesario enviar el número de índice más adelante.
  • Inserción activa del servidor : permite que el servidor envíe activamente datos al cliente.
  • Flujo de datos : todos los paquetes de datos de cada solicitud o respuesta en HTTP2 se convierten en un flujo de datos, y cada flujo de datos tiene una ID única. La ID del flujo de datos de la solicitud es un número impar y la ID del flujo de datos de la respuesta es un número par. número. Cada paquete de datos se envía con el ID del flujo de datos correspondiente, para que el servidor y el cliente puedan particionar a qué flujo de datos pertenece.
            Si bien HTTP2 resuelve muchos problemas, todavía existe un problema similar de encabezado de línea a nivel del protocolo TCP, que sigue siendo la base sobre la que se construye la Web. Cuando un paquete TCP se pierde en tránsito, el receptor no puede acusar recibo del paquete entrante hasta que el servidor reenvía el paquete perdido. Dado que TCP no está diseñado para seguir protocolos de nivel superior como HTTP, un solo paquete perdido bloqueará el flujo de todas las solicitudes HTTP en curso hasta que se reenvíen los datos perdidos.

2.4 HTTP3

        El propósito de HTTP3 es resolver el problema de transmisión de HTTP2. Proporciona conexiones web rápidas, confiables y seguras en todo tipo de dispositivos. Para hacer esto, utiliza un protocolo de red de capa de transporte diferente llamado QUIC .
Características:

  • La capa inferior de HTTP3 se implementa en base a UDP , y UDP no necesita el proceso de protocolo de enlace de tres y cuatro vías, por lo que es intrínsecamente más rápido que TCP.
  • QUIC ya no se identifica por un cuádruple, sino por un número aleatorio de 64 bits como ID, y UDP no tiene conexión, por lo que cuando cambia la IP o el puerto, siempre que la ID siga siendo la misma, no hay necesidad de re- establecer la conexión.
  • El control de flujo de QUIC también usa window_update para decirle al par la cantidad de bytes que puede aceptar. Pero la ventana de QUIC está adaptada a su propio mecanismo de multiplexación, no solo controla la ventana en una conexión, sino que también controla la ventana para cada flujo en una conexión.
  • Función de encriptación TLS integrada. QUIC no se reanuda sobre TLS, pero contiene TLS internamente. Utiliza su propio marco para hacerse cargo de los registros en TLS. Los mensajes de protocolo de enlace y los mensajes de alarma no usan registros TLS y se encapsulan directamente en marcos QUIC para su transmisión, lo que ahorra una sobrecarga única.
  • HTTP3 no especifica un número de puerto predeterminado, lo que significa que no es necesario proporcionar servicios HTTP/3 en UDP 80 o 443.
  • Para lograr confiabilidad, QUIC también tiene un número de serie, que se incrementa. Cualquier paquete con un número de serie se envía solo una vez y se incrementará en uno la próxima vez. Incluso si el paquete se pierde y se retransmite, el número de secuencia se incrementará en uno y QUIC define un concepto de desplazamiento. Dado que QUIC está orientado a la conexión, al igual que TCP, es un flujo de datos. Los datos enviados tienen un desplazamiento compensado en este flujo de datos. Puede verificar dónde se envían los datos a través del desplazamiento, siempre que el paquete de este desplazamiento no no viene, será reenviado; si viene, el empalme de acuerdo con el desplazamiento aún se puede empalmar en una corriente.

3. Comparación de versiones de HTTP

versión del protocolo problema central a resolver solución
0.9 Transferencia de archivos HTML Estableció el proceso de comunicación de la solicitud del cliente y la respuesta del servidor.
1.0 Diferentes tipos de transferencias de archivos. establecer campo de encabezado
1.1 Crear/desconectar conexiones TCP es costoso Establecer una conexión larga para multiplexar
2 La concurrencia es limitada encuadre binario
3 Bloqueo de pérdida de paquetes TCP Usando el protocolo UDP

4. La diferencia entre HTTP y HTTPS

        Dado que el protocolo HTTP utiliza la transmisión de texto claro, existen los siguientes tres riesgos en términos de seguridad:

  • Riesgo de espionaje : por ejemplo, el contenido de la comunicación se puede obtener en el enlace de comunicación y el número de usuario se pierde fácilmente.
  • Riesgo de manipulación : como la colocación forzada de anuncios de spam, la contaminación visual y los ojos de los usuarios son propensos a la ceguera.
  • Riesgo de suplantación de identidad : como hacerse pasar por el sitio web de Taobao, etc.
    inserte la descripción de la imagen aquí
            Como se muestra en la figura anterior (el protocolo HTTP está a la izquierda y el protocolo HTTPS está a la derecha), para resolver el problema de seguridad de HTTP, HTTPS agrega el protocolo SSL/TLS entre las capas HTTP y TCP, que bien puede resolver los riesgos anteriores.
    ¿Cómo resuelve HTTPS los tres riesgos anteriores?
  • HTTPS utiliza un método de cifrado híbrido que combina el cifrado simétrico y el cifrado asimétrico . El cifrado asimétrico se usa para intercambiar claves de sesión antes de que se establezca la comunicación, y el cifrado asimétrico ya no se usa posteriormente. Todos los datos de texto sin formato se cifran mediante una clave de sesión cifrada simétrica durante el proceso de comunicación.
  • El algoritmo de resumen se usa para lograr la integridad, que puede generar una huella digital única para los datos, que se usa para verificar la integridad de los datos y resolver el riesgo de manipulación.
  • La identidad de la clave pública del servidor se garantiza mediante certificados digitales para solucionar el riesgo de suplantación de identidad.

la diferencia:

  • El protocolo https debe solicitar un certificado de una CA. Generalmente, hay pocos enteros gratuitos, por lo que se requiere una determinada tarifa.
  • http es un protocolo de transferencia de hipertexto y la información se transmite en texto sin formato, mientras que HTTPS es un protocolo seguro de transferencia cifrada SSL/TLS.
  • http y https usan métodos de conexión completamente diferentes y puertos diferentes, el primero es el 80 y el segundo el 443.
  • La conexión http es muy simple y sin estado; el protocolo https es un protocolo de red construido por el protocolo SSL/TLS+HTTP que puede realizar transmisiones cifradas y autenticación de identidad, que es más seguro que el protocolo http.

Supongo que te gusta

Origin blog.csdn.net/m0_73845616/article/details/127351636
Recomendado
Clasificación