HTTP Clase 12 - Ventajas y desventajas de HTTP

El alcance de la discusión se limita a HTTP/1.1, y las ventajas y desventajas mencionadas son solo para HTTP/1.1.

Simple, flexible y fácil de expandir

En primer lugar, las ventajas más importantes y destacadas de HTTP son "simple, flexible y fácil de expandir".
Cualquiera que entre en contacto con HTTP por primera vez pensará que el protocolo HTTP es muy "simple". El formato básico del mensaje es "encabezado+cuerpo". Mirando el documento RFC, puede adivinar que "noventa y nueve está cerca de diez" simplemente adivinando.
Bajo el concepto de diseño básico de "simple", el protocolo HTTP tiene las ventajas de "flexibilidad y fácil expansión".
"Flexible y fácil de expandir" son en realidad uno, son mutuos y se promueven entre sí, porque "flexible" es "fácil de expandir" y "fácil de expandir" a su vez hace que HTTP sea más flexible y tenga una expresividad más fuerte.
Cada componente central del protocolo HTTP, como el método de solicitud, URI, código de estado, frase de razón, campo de encabezado, etc., no está "codificado", lo que permite a los desarrolladores personalizar, expandir o interpretar a voluntad, dando a los navegadores y servidores La máxima confianza y libertad también están en línea con el espíritu de "libertad e igualdad" en Internet: si falta alguna función, simplemente agregue un campo o compense el código de error.
El campo de encabezado DNT (Do Not Track) utilizado por "Do Not Track" es un buen ejemplo. Mozilla lo propuso por primera vez para proteger la privacidad del usuario y evitar que los sitios web monitoreen y rastreen las preferencias del usuario. Pero es una pena que DNT tenga una historia de casi siete u ocho años desde su lanzamiento, pero muchos sitios web aún optan por "ignorar" a DNT. Aunque DNT básicamente ha fallado,
también muestra que el protocolo HTTP es "flexible y libre" y no será suprimido por fuerzas unilaterales.
La característica de "flexibilidad y fácil expansión" también se refleja en la definición de "transmisión confiable" por HTTP. No limita el protocolo subyacente específico, no solo TCP, UNIX Domain Socket, sino también SSL/TLS, o incluso UDP- basado en QUIC, la capa inferior puede cambiar a voluntad, mientras que la semántica de la capa superior permanece estable.

Amplia aplicación y entorno maduro.

Otra gran ventaja del protocolo HTTP es que es "ampliamente utilizado" y los entornos de software y hardware son muy maduros.
Con la popularidad de Internet, especialmente Internet móvil, los tentáculos de HTTP se han extendido a todos los rincones del mundo: desde páginas web simples hasta datos JSON y XML complejos, desde navegadores en computadoras de escritorio hasta varias aplicaciones en teléfonos móviles, desde From leyendo noticias, foros, comprando, administrando dinero y "comiendo pollo", es difícil para ti encontrar un lugar que no use HTTP.
No solo en el campo de la aplicación, sino también en el campo del desarrollo, el protocolo HTTP ha sido ampliamente compatible. No limita un determinado lenguaje de programación o sistema operativo, por lo que, naturalmente, tiene las ventajas de "multilenguaje, multiplataforma". Además, debido a su naturaleza simple y fácil implementación, casi todos los lenguajes de programación tienen bibliotecas de llamadas HTTP y herramientas de prueba y desarrollo periférico.
La ventaja de la "aplicación amplia" también determina que, ya sea un empresario o un buscador de empleo, ya sea un servidor de un sitio web o un cliente de aplicación, el protocolo HTTP es una habilidad básica que debe dominarse.

sin Estado

Habiendo visto las dos ventajas, echemos un vistazo a un "arma de doble filo", es decir, el "sin estado" mencionado en la conferencia anterior, que es tanto una ventaja como una desventaja para HTTP.

Los beneficios de "apátrida":

Debido a que el servidor no tiene "capacidad de memoria", no se necesitan recursos adicionales para registrar la información de estado, lo que no solo simplifica la implementación, sino que también reduce la carga en el servidor, lo que permite utilizar más CPU y memoria para proporcionar servicios externos.
"Sin estado" también significa que los servidores son todos iguales, no hay diferencia en el "estado", por lo que es fácil formar un clúster, dejar que el balanceador de carga reenvíe la solicitud a cualquier servidor y no causará errores de procesamiento debido a estado inconsistente, use " La "forma estúpida" de las "máquinas de montón" puede lograr fácilmente una alta concurrencia y alta disponibilidad.

Desventajas de "apátrida":

Dado que el servidor no tiene "capacidad de memoria", no puede admitir operaciones "transaccionales" que requieran varios pasos consecutivos. Por ejemplo, para las compras de comercio electrónico, primero debe iniciar sesión, luego agregar un carrito de compras, luego realizar un pedido, finalizar la compra y pagar. Esta serie de operaciones necesitan conocer la identidad del usuario, pero el "apátrida El servidor no sabe que estas solicitudes están relacionadas entre sí. Tiene que solicitar información de identidad cada vez, lo que no solo es problemático, sino que también aumenta la transmisión de datos innecesaria.
El protocolo HTTP es mejor para ser tanto "sin estado" como "con estado", pero realmente hay algo tan bueno como "pata de pez y oso", que es la tecnología de cookies "cookie".

Borrar texto

También hay una "espada de doble filo" en el protocolo HTTP que combina ventajas y desventajas, que es la transmisión de texto sin formato.
"Texto sin formato" significa que el mensaje en el protocolo (para ser precisos, la parte del encabezado) no utiliza datos binarios, sino en forma de texto simple y legible.
En comparación con los protocolos binarios como TCP y UDP, sus ventajas son obvias. No requiere ninguna herramienta externa. Después de capturar el paquete con un navegador, Wireshark o tcpdump, se puede ver fácilmente o modificar directamente a simple vista, lo cual es Útil para nuestro desarrollo y depuración Trae gran comodidad.
Por supuesto, las desventajas del texto sin formato también son obvias. Toda la información en los mensajes HTTP se expondrá "a plena luz del día", y no hay privacidad en absoluto en cada enlace del enlace de transmisión largo. Cierto dispositivo en este enlace puede simplemente " desviar" el tráfico para realizar el espionaje de la comunicación.

Ejemplo: "Trampa WiFi gratis"

Los piratas informáticos aprovechan las deficiencias de la transmisión de texto sin formato HTTP para configurar un punto de acceso WiFi en un lugar público y comienzan a "phishing" para engañar a los internautas para que naveguen por Internet. Una vez que se conecte a este punto de acceso WiFi, todo el tráfico será interceptado y guardado. Si hay información confidencial, como números de tarjetas bancarias y contraseñas de sitios web, será peligroso. Los piratas informáticos pueden hacerse pasar por usted y hacer lo que quieran si obtienen estos datos.

inseguro

Hay muchos aspectos de la seguridad, el texto sin formato es solo una deficiencia de la "confidencialidad", y HTTP también carece de los dos aspectos de "autenticación de identidad" y "verificación de integridad".
"Autenticación de identidad" simplemente significa "cómo probar que eres tú". Es más fácil de manejar en la vida real, puede sacar su tarjeta de identificación, licencia de conducir o pasaporte con una foto y el sello de una organización autorizada, que puede probar su identidad.
Pero en el mundo virtual en línea, esto es algo problemático. HTTP no proporciona un medio efectivo para confirmar la verdadera identidad de las partes que se comunican. Aunque existe un mecanismo de autenticación básico en el protocolo, debido a la deficiencia de la transmisión de texto sin formato que se acaba de mencionar, se puede decir que este mecanismo está "basado en papel" y es muy fácil de romper. Si solo usa el protocolo HTTP, es muy probable que se conecte a un sitio web falso con exactamente la misma página, y luego será "phishing" para todo tipo de información privada.
El protocolo HTTP tampoco admite la "verificación de integridad", y los datos se manipulan fácilmente durante la transmisión y no se puede verificar su autenticidad.
Por ejemplo, si recibe un mensaje del banco a través de HTTP: "Xiao Ming le transfirió cien yuanes", no tiene forma de saber si Xiao Ming realmente solo transfirió cien yuanes, tal vez transfirió mil yuanes o cincuenta yuanes. pero fue manipulado por piratas informáticos para convertirse en 100 yuanes. ¿Cuál es la situación real? El protocolo HTTP no tiene forma de darle la respuesta.
Aunque el banco puede usar MD5, SHA1 y otros algoritmos para agregar un resumen digital al mensaje, debido a la falla fatal del "texto sin formato", los piratas informáticos pueden modificarlo junto con el resumen y, en última instancia, no pueden determinar si el mensaje ha sido manipulado. con.
Para resolver las deficiencias de la inseguridad de HTTP, apareció HTTPS.

actuación

El rendimiento de HTTP se puede resumir en seis palabras: "no está mal, no es lo suficientemente bueno".
El protocolo HTTP se basa en TCP/IP y utiliza el modo de comunicación "solicitud-respuesta", por lo que la clave del rendimiento radica en estos dos puntos.
El Internet actual se caracteriza por la movilidad y la alta concurrencia, lo que no puede garantizar una calidad de conexión estable, por lo que el protocolo HTTP en ocasiones no funciona bien a nivel de TCP.
El modo de "solicitud-respuesta" exacerba el problema de rendimiento de HTTP, que es el famoso "bloqueo de encabezado de línea", cuando una solicitud en la secuencia de solicitudes enviadas secuencialmente se bloquea por algún motivo, todas las solicitudes en cola más tarde también serán bloqueado, lo que hará que el cliente se demore en recibir los datos.
Para resolver este problema, nació un tema de investigación especial "Optimización del rendimiento web”. El estándar HTTP oficial tiene un capítulo sobre "almacenamiento en caché" (RFC7234), y hay más "trucos" no oficiales, como cortar imágenes, incrustar datos y fusión, fragmentación de nombres de dominio, "tecnología negra" de JavaScript, etc.

resumen

  1. La mayor ventaja de HTTP es la simplicidad, la flexibilidad y la facilidad de expansión;
  2. HTTP tiene un entorno de software y hardware maduro, se usa ampliamente y es la infraestructura de Internet;
  3. HTTP no tiene estado, lo que puede implementar fácilmente la agrupación en clústeres y expandir el rendimiento, pero a veces es necesario usar la tecnología de cookies para lograr "estado";
  4. HTTP se transmite en texto claro, y los datos son completamente visibles a simple vista, lo que puede investigarse y analizarse fácilmente, pero también es fácil de espiar;
  5. HTTP es inseguro, no puede verificar las identidades de las partes que se comunican, ni puede determinar si el mensaje ha sido manipulado;
  6. El rendimiento de HTTP no es malo, pero no está del todo adaptado a la Internet actual, y todavía hay mucho margen de mejora.

PD: Este artículo es una nota después de ver Geek.

Supongo que te gusta

Origin blog.csdn.net/Elon15/article/details/130691137
Recomendado
Clasificación