Desmitificando el Protocolo HTTP: Explore la contraseña detrás de Internet y explore los misterios de la transmisión de datos

HTTP (Protocolo de transferencia de hipertexto: Protocolo de transferencia de hipertexto) es un protocolo para transmitir datos en la Web y es uno de los protocolos de capa de aplicación más importantes en Internet. Desde sus inicios, HTTP siempre ha desempeñado el papel de un puente de comunicación que conecta el mundo y ha jugado un papel importante en el desarrollo y la popularización de Internet. Este artículo le brindará una mirada en profundidad a los orígenes del protocolo HTTP, cómo funciona, sus características comunes y su impacto en la Web moderna.

1. Origen y desarrollo

El protocolo HTTP fue creado por primera vez por Tim Berners-Lee en 1989 como un protocolo de comunicación para conectar documentos en la World Wide Web. Originalmente, el objetivo de HTTP era transmitir documentos de hipertexto (HTML) e hipervínculos (Hyperlink) entre clientes y servidores. Con el vigoroso desarrollo de Internet, HTTP también evoluciona y mejora constantemente.

En 1991 salió la primera versión oficial de HTTP, HTTP/0.9, su funcionamiento es muy simple y solo puede transmitir documentos HTML de texto plano. Luego, en 1996, se lanzó HTTP/1.0, que introdujo más funciones para admitir la transmisión de recursos en múltiples formatos, como imágenes, hojas de estilo y archivos de secuencias de comandos. Sin embargo, con la continua expansión de las aplicaciones web e Internet, el rendimiento de HTTP/1.0 se ha convertido en un cuello de botella. Para resolver el problema de rendimiento de HTTP/1.0, HTTP/1.1 se lanzó en 1997. Introdujo funciones como conexiones persistentes, solicitudes canalizadas y campos de encabezado de host, que mejoraron significativamente la velocidad de carga de las páginas web y la experiencia del usuario.

Actualmente, el protocolo HTTP continúa desarrollándose. Las últimas versiones son HTTP/2 (lanzada en 2015) y HTTP/3 (lanzada en 2022), que optimizan aún más el rendimiento, la seguridad y las capacidades de procesamiento paralelo, y se convierten gradualmente en el protocolo HTTP principal. Versión.

2. Principio de funcionamiento

HTTP es un protocolo sin estado, cada solicitud es independiente y el servidor no retiene información de estado relacionada con solicitudes anteriores. HTTP utiliza un modelo cliente-servidor, el cliente envía una solicitud, el servidor procesa la solicitud y devuelve una respuesta.

El proceso de comunicación HTTP sigue los siguientes pasos:

  1. Establecimiento de una conexión: el cliente (generalmente un navegador web) inicia una conexión TCP con el servidor y establece un canal de comunicación bidireccional.
  2. Enviar solicitud: el cliente envía una solicitud HTTP al servidor. La solicitud incluye la línea de solicitud (método de solicitud, URL y versión HTTP), el encabezado de la solicitud y el cuerpo de la solicitud (para solicitudes con contenido como POST).
  3. Solicitud de procesamiento: el servidor recibe y analiza la solicitud y realiza las operaciones correspondientes de acuerdo con el contenido de la solicitud, que puede incluir la lectura de la base de datos, el procesamiento de la lógica comercial, etc.
  4. Enviar respuesta: el servidor encapsula el resultado del procesamiento como una respuesta HTTP y la respuesta incluye una línea de respuesta (código de estado, texto de estado y versión HTTP), un encabezado de respuesta y un cuerpo de respuesta.
  5. Cierre la conexión: después de que el servidor envíe la respuesta, cierre la conexión TCP y se completará el proceso de solicitud-respuesta.

3. Características e influencia

El protocolo HTTP tiene las siguientes características, que han tenido un profundo impacto en las aplicaciones web modernas e Internet:

  1. Sin conexión y sin estado: HTTP no tiene conexión, cada solicitud y respuesta es independiente. También es apátrida, el servidor no guarda la información de estado del cliente y cada solicitud es irrelevante, lo que favorece la escalabilidad y la flexibilidad.
  2. Flexibilidad: la flexibilidad de HTTP le permite transmitir varios tipos de recursos, como texto, imágenes, videos, etc., lo que permite que las aplicaciones web presenten contenido rico y diverso.
  3. Basado en el modelo de solicitud-respuesta: el modelo de solicitud-respuesta de HTTP permite al cliente solicitar datos u operaciones del servidor y obtener la respuesta del servidor. Este modelo facilita la interacción y comunicación entre clientes y servidores.
  4. Arquitectura en capas: la arquitectura en capas de HTTP permite optimizar la transmisión de la red a través de servidores proxy y almacenamiento en caché, mejorando el rendimiento y la velocidad de respuesta.
  5. Código de estado: el código de estado de HTTP proporciona una explicación del resultado del procesamiento de la solicitud, como 200 significa éxito, 404 significa no encontrado, 500 significa error del servidor, etc. Estos códigos de estado son útiles para diagnosticar y depurar aplicaciones web.

4. Composición del acuerdo

El protocolo HTTP es una especificación cuyos ejemplos suelen presentarse en forma de solicitudes y respuestas. El siguiente es un ejemplo del protocolo HTTP, que muestra el formato de la solicitud HTTP y la respuesta HTTP, respectivamente.

Ejemplo de solicitud HTTP:

GET /hanko HTTP/1.1
Host: www.hanko.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36
Accept: text/html,application/xhtml+xml
Accept-Language: en-US,en;q=0.5
Connection: keep-alive
  • La primera línea es la línea de solicitud, incluido el método de solicitud (GET), la ruta del recurso solicitado (/hanko) y la versión del protocolo HTTP (HTTP/1.1).
  • El siguiente es el encabezado de la solicitud, que contiene información adicional sobre la solicitud, como Host (el host de destino de la solicitud), User-Agent (la información del navegador del cliente), Accept (el tipo de contenido de respuesta aceptado por el cliente) , etc.
Ali lo entrevistó en ese entonces y preguntó qué significa que la conexión del encabezado http se mantenga activa.
Cuando el campo Conexión en el encabezado de la solicitud HTTP se establece en mantener vivo, indica que el cliente desea establecer una conexión persistente con el servidor. Las conexiones persistentes permiten que se envíen varias solicitudes y respuestas HTTP en la misma conexión TCP, en lugar de establecer una nueva conexión TCP para cada solicitud, lo que reduce la sobrecarga de establecimiento y cierre de la conexión y mejora el rendimiento y la eficiencia.
Además de keep-alive, el campo Conexión en el encabezado de la solicitud HTTP también puede contener otros valores para los siguientes propósitos:
  • cerrar: cuando la conexión está configurada para cerrar, significa que el cliente o el servidor desea cerrar la conexión TCP después de enviar la solicitud y la respuesta actuales, es decir, no se utiliza una conexión persistente.
  • Actualizar: se utiliza para la actualización de HTTP. Cuando Connection se establece en Upgrade, significa que el cliente desea actualizar a otros protocolos, como WebSocket.
  • Token de conexión: un token de conexión personalizado que se puede usar para pasar información adicional o indicar un método de procesamiento específico.

Aunque se denomina "keep-alive", la conexión persistente de HTTP (keep-alive) no es realmente una conexión constante. De hecho, la conexión persistente de HTTP es un mecanismo que puede enviar múltiples solicitudes y respuestas HTTP en una sola conexión TCP, lo que evita la necesidad de restablecer una nueva conexión TCP para cada solicitud, lo que reduce la sobrecarga de establecimiento y cierre de la conexión.

Ejemplo de respuesta HTTP:

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
Server: Apache/2.4.41 (Ubuntu)
Date: Wed, 20 Jul 2023 12:34:56 GMT

<!DOCTYPE html>
<html>
<head>
    <title>Example Page</title>
</head>
<body>
    <h1>Hello, World!</h1>
    <p>This is an example page.</p>
</body>
</html>
  • La primera línea es la línea de respuesta, que contiene la versión del protocolo HTTP (HTTP/1.1), el código de estado (200) y el texto de estado (OK).
  • El siguiente es el encabezado de la respuesta, que contiene información adicional sobre la respuesta, como Content-Type (tipo de contenido de la respuesta), Content-Length (longitud del contenido de la respuesta), Server (información del servidor), etc.
  • Hay una línea en blanco entre el encabezado de la respuesta y el cuerpo de la respuesta, que indica el final del encabezado de la respuesta, seguido del cuerpo de la respuesta, que es el contenido que realmente se devuelve al cliente. En este ejemplo, el cuerpo de la respuesta es una página HTML simple.

1. Encabezado de solicitud

Encabezados de solicitud comunes:

  • Host: especifique el nombre de host de destino y el número de puerto de la solicitud.
  • Agente de usuario: especifica el agente de usuario que envía la solicitud, normalmente el ID del navegador.
  • Aceptar: especifique el tipo de contenido de respuesta que el cliente puede aceptar, como texto, imagen, JSON, etc.
  • Accept-Language: Especifica el lenguaje natural aceptable para el cliente para la internacionalización.
  • Autorización: se utiliza para la verificación de identidad, incluida la información de autenticación.
  • Cookie: Se utiliza para pasar información de sesión entre el cliente y el servidor.

2. Encabezado de respuesta

Encabezados de respuesta comunes:

  • Tipo de contenido: especifique el tipo de contenido de la respuesta, como texto/html, aplicación/json, etc.
  • Content-Length: especifica la longitud del contenido de la respuesta en bytes.
  • Ubicación: para la redirección, especifique una nueva dirección URL.
  • Set-Cookie: se utiliza para configurar cookies en el lado del cliente para mantener el estado de la sesión.
  • Cache-Control: especifica la política de caché de la respuesta, como no-cache, max-age, etc.

3. Código de estado

El código de estado HTTP es un código numérico utilizado en el protocolo HTTP para indicar el resultado del procesamiento del servidor a la solicitud. El código de estado consta de tres dígitos y cada código de estado representa un resultado de procesamiento diferente. Los códigos de estado HTTP se dividen principalmente en cinco categorías, cada una de las cuales comienza con un número diferente, y cada tipo de código de estado tiene un significado específico. Los siguientes son códigos de estado HTTP comunes y sus significados:

1xx (Informativo): Indica que la solicitud ha sido recibida y continúa siendo procesada.

  • 100 Continuar: el servidor ha recibido los encabezados de la solicitud y el cliente debe continuar enviando el resto de la solicitud.

2xx (Exitoso): indica que el servidor recibió, entendió y procesó correctamente la solicitud.

  • 200 OK: la solicitud se realizó correctamente y el servidor procesó correctamente la solicitud.
  • 201 Creado: La solicitud fue exitosa y se creó un nuevo recurso en el servidor.
  • 204 Sin contenido: la solicitud es exitosa, pero la respuesta no contiene el contenido del cuerpo de la entidad, que se utiliza para solicitudes de ELIMINACIÓN exitosas, etc.

3xx (Redireccionamiento): indica que se requieren más acciones para completar la solicitud.

  • 301 Movido permanentemente: el recurso solicitado se ha movido permanentemente a una nueva URL y el cliente debe usar la nueva URL para volver a solicitarlo.
  • 302 Encontrado: el recurso solicitado se ha movido temporalmente a una nueva URL y el cliente debe continuar usando la URL original.
  • 304 No modificado: el recurso solicitado por el cliente a través de la condición no se ha modificado y la versión en caché se puede usar directamente.

4xx (Error del cliente): indica que se produjo un error en el lado del cliente y no se pudo completar la solicitud.

  • 400 Bad Request: La solicitud es incorrecta y el servidor no puede entender la solicitud.
  • 401 No autorizado: la solicitud requiere autenticación y el cliente debe proporcionar información de autenticación válida.
  • 403 Prohibido: El servidor entiende la solicitud, pero se niega a ejecutarla.
  • 404 No encontrado: el recurso solicitado no existe y el servidor no encontró la URL solicitada.

5xx (Error del servidor): Indica que ocurrió un error en el servidor y no se pudo completar la solicitud.

  • 500 Error interno del servidor: el servidor tiene un error interno y no puede completar la solicitud.
  • 502 Puerta de enlace incorrecta: el servidor, que actúa como puerta de enlace o proxy, recibió una respuesta no válida del servidor ascendente.
  • 503 Servicio no disponible: el servidor no está disponible temporalmente, generalmente debido a una sobrecarga o mantenimiento.

4. Método de solicitud

  • GET: se utiliza para solicitar la obtención de un recurso específico.
  • POST: se utiliza para enviar datos al servidor, como enviar datos de formulario.
  • PUT: se utiliza para actualizar el contenido del recurso especificado.
  • ELIMINAR: se utiliza para eliminar el recurso especificado.
  • HEAD: similar a una solicitud GET, pero solo obtiene la información del encabezado de la respuesta, no el cuerpo de la respuesta.
  • OPCIONES: Las opciones de comunicación utilizadas para obtener el apoyo del recurso de destino.
  • PARCHE: Se utiliza para realizar actualizaciones locales en los recursos.

5. Versión HTTP

El protocolo HTTP (Hypertext Transfer Protocol) ha pasado por varias versiones de evolución y mejora, actualmente existen principalmente las siguientes versiones principales:

  1. HTTP/0.9: La primera versión de HTTP, lanzada en 1991. Es un protocolo muy simple que solo admite la transmisión de texto HTML, sin encabezados de solicitud y respuesta, y sin códigos de estado. Se utiliza principalmente para transmitir documentos de hipertexto (HTML) e hipervínculos (Hyperlink).
  2. HTTP/1.0: lanzado en 1996, en comparación con HTTP/0.9, HTTP/1.0 introdujo el concepto de encabezado de solicitud y encabezado de respuesta, lo que permite la transmisión de varios tipos de recursos, como imágenes, hojas de estilo y archivos de script. La característica de HTTP/1.0 es que cada solicitud necesita establecer una conexión por separado, lo que resulta en una baja eficiencia.
  3. HTTP/1.1: lanzado en 1997, es una versión importante del protocolo HTTP. HTTP/1.1 introdujo funciones como conexiones persistentes, solicitudes canalizadas y el campo de encabezado Host, lo que mejoró significativamente la velocidad de carga de la página web y la experiencia del usuario. Las conexiones persistentes permiten enviar varias solicitudes y respuestas en la misma conexión, lo que evita la sobrecarga de restablecer la conexión para cada solicitud.
  4. HTTP/2: lanzado en 2015, es la última versión principal del protocolo HTTP. HTTP/2 optimiza aún más el rendimiento, la seguridad y las capacidades de procesamiento paralelo. Introduce un protocolo binario que permite transmitir múltiples solicitudes y respuestas en la misma conexión al mismo tiempo, eliminando el problema del bloqueo de solicitudes. HTTP/2 también es compatible con funciones como la compresión de encabezado y la inserción del servidor, lo que reduce aún más la sobrecarga de la transmisión de datos.
  5. HTTP/3: la última versión, estandarizada como RFC9114 el 6 de junio de 2022. Abandonará el uso de TCP y utilizará QUIC en UDP para transportar datos de la capa de aplicación.

6, galleta

La cookie HTTP (Cookie para abreviar) es un mecanismo en el protocolo HTTP, que se utiliza para transferir información de sesión y datos de estado entre el cliente (generalmente un navegador web) y el servidor. Las cookies se utilizan principalmente para registrar cierta información del estado del usuario para que el servidor pueda identificar al usuario o mantener el estado de la sesión del usuario en solicitudes posteriores.

principio de funcionamiento:

1. El servidor establece la Cookie: El servidor establece la información de la Cookie en el encabezado Set-Cookie en la respuesta HTTP y envía la Cookie al cliente. Por ejemplo:

Set-Cookie: session_id=1234567890; path=/; domain=example.com; expires=Sun, 20-Jul-2025 12:00:00 GMT; secure; HttpOnly

2. El cliente guarda la cookie: después de que el cliente (navegador web) reciba la cookie configurada por el servidor, la guardará localmente. En solicitudes posteriores, el cliente llevará la información de la Cookie en el campo Cookie del encabezado de la solicitud.

3. El cliente envía una Cookie: cuando el cliente envía una solicitud HTTP, incluirá la información de la Cookie almacenada en el campo Cookie del encabezado de la solicitud y la enviará al servidor.

4. El servidor lee la cookie: después de que el servidor recibe la solicitud, puede leer la información de la cookie enviada por el cliente desde el campo de cookies del encabezado de la solicitud e identificar al usuario o mantener el estado de la sesión de acuerdo con los datos que contiene.

Propiedades de las cookies:

Una cookie puede contener varios atributos que especifican su comportamiento y fecha de caducidad. Los atributos comunes de las cookies incluyen:

  • Nombre y Valor: Indica el nombre de la cookie y el valor correspondiente.
  • Dominio: Especifica el alcance de la cookie, especificando qué nombres de dominio pueden acceder a la cookie.
  • Ruta: especifica la ruta de función de la cookie y especifica qué rutas de URL pueden acceder a la cookie.
  • Expires and Max-Age: especifique el período de validez de la cookie, Expires especifica un tiempo de caducidad específico y Max-Age especifica la cantidad de segundos desde la hora actual.
  • Seguro: Indica que la cookie solo se puede transmitir a través de la conexión HTTPS, que se utiliza para garantizar la seguridad de la cookie.
  • HttpOnly: indica que la cookie está limitada a la transmisión HTTP o HTTPS, y no se puede acceder a ella mediante scripts como JavaScript, que se utiliza para evitar ataques XSS.

usar:

Las cookies sirven para muchos propósitos en las aplicaciones web, algunos de los más comunes incluyen:

  • Registre el estado de inicio de sesión del usuario para implementar la autenticación de usuario y la gestión de sesiones.
  • Almacenar configuraciones y preferencias de personalización del usuario.
  • Realice un seguimiento del comportamiento de navegación del usuario para analizar el comportamiento del usuario y recomendar contenido relevante.
  • En un sitio web de compras, se utiliza para guardar la información del carrito de compras y el estado de la transacción.

7. Longitud de la URL

Los límites de longitud de URL los establecen los navegadores, no el protocolo HTTP. Las siguientes son las restricciones de algunos navegadores sobre la longitud de las direcciones URL en http.

Por supuesto, todos dirán que me dedico al desarrollo ¿No necesito el límite de longitud del navegador? Por ejemplo, con apache-httpclient, probé httpclient, que también tiene un límite de longitud, si es demasiado largo, devolverá un error 400.


Si el artículo es útil para usted, bienvenido a prestar atención + Me gusta, ¡y debe regresar para cerrar!

Supongo que te gusta

Origin blog.csdn.net/citywu123/article/details/131978919
Recomendado
Clasificación