Una comprensión profunda del protocolo Http

Protocolo HTTP

1. HTTP inicial

El protocolo Http es el protocolo más utilizado en la capa de aplicación.Http es el puente entre el navegador y el servidor.Http se implementa en base al protocolo TCP.

[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-9HGwWb3V-1681167552380) (C:/Users/86178/AppData/Roaming/Typora/ typora-user-images/ imagen-20230402150600543.png)]

Por lo general, ingresamos la dirección del sitio web (URL) en el cuadro de búsqueda, y el navegador construirá una solicitud Http basada en la URL y la enviará al servidor. El servidor devolverá una respuesta Http (que incluye html, css, js) y el navegador obtendrá el html y otros datos que se muestran (renderizados), razón por la cual http se denomina protocolo de transferencia de hipertexto , porque la transmisión no es solo texto.


2. captura de paquetes de violinista

Para el proceso de interacción detallado del protocolo http, puede usar la herramienta de terceros fiddler para capturar paquetes.

Fiddler es esencialmente un programa proxy, precauciones al usar:

  1. Puede entrar en conflicto con otros programas de proxy, y otros programas de proxy (incluidos algunos complementos del navegador) deben cerrarse al usar
  2. Si desea capturar paquetes correctamente, debe habilitar la función htpps. Actualmente, la mayoría de los servidores en Internet son https. Fiddler no puede capturar paquetes https de forma predeterminada. Debe iniciar manualmente https e instalar el certificado.

Abra csdn, fiddler tomará muchas solicitudes, generalmente el azul es la página de inicio html, el verde es y el negro simplemente devuelve datos.Cuando el navegador interpreta y ejecuta html y js, enviará uno cuando encuentre una solicitud .

[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-1Yf8qzM9-1681167552381)(C:/Users/86178/AppData/Roaming/Typora/ typora-user-images/ image-20230402153932443.png)]

La solicitud http tiene un formato determinado. Fiddler la analizará de acuerdo con el formato y mostrará diferentes efectos. Haga clic en raw para ver el efecto más original. Ver en el Bloc de notas para ver una página más detallada.
inserte la descripción de la imagen aquí

[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y cargarla directamente (img-ReedsO3E-1681167552381) (https://gitee.com/liu-xuixui/ nubosidad/raw/master/img /image-20230402154850128.png)]

Al observar los resultados de la captura de paquetes, podemos ver que la solicitud http actual es en realidad unalínea de textodatos formateados.

Los datos de respuesta también son texto, pero algunos servidores comprimirán la respuesta (para ahorrar ancho de banda).

[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-mB8PmlF1-1681167552381)(C:/Users/86178/AppData/Roaming/Typora/ typora-user-images/ image-20230402155556420.png)]

Después de la descompresión manual, podemos ver los datos de texto de la página de inicio de csdn, es decir, el contenido de html.

[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-BE39vsTO-1681167552381)(C:/Users/86178/AppData/Roaming/Typora/ typora-user-images/ image-20230402155848921.png)]


3. Formato de mensaje HTTP

Aprender un protocolo es esencialmente entender su formato de mensaje.

1. Solicitud HTTP

Una solicitud http se puede dividir en 4 partes:

  1. primera linea
  2. encabezado de solicitud
  3. linea en blanco
  4. cuerpo

primera linea

[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y cargarla directamente (img-QCqdA4c3-1681167552382) (https://gitee.com/liu-xuixui/ nubosidad/raw/master/img /image-20230402160140301.png)]

La primera línea contiene tres partes, se utilizan espacios para distinguirlas.

  • OBTENER: método http (método)

  • URL: Es decir, un localizador único de recursos, identifica la ubicación de un recurso único en Internet (qué archivo está en qué directorio de qué servidor), y URI es un identificador único de recursos, para distinguirlo de otros recursos. De hecho, la URL también se puede considerar como una URI. A menudo se usa de forma mixta en el desarrollo. La URL no es exclusiva de http. Muchos protocolos pueden usar URL.

  • Número de versión: HTTP/1.1


Conoce la URL

[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-vaveWDUw-1681167552382) (C:/Users/86178/AppData/Roaming/Typora/ typora-user-images/ imagen-20230402161403398.png)]

Por ejemplo: supongamos que alquilo un puesto en la cafetería de la escuela para vender fideos Chongqing

[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-mf2u2jmK-1681167552382) (C:/Users/86178/AppData/Roaming/Typora/ typora-user-images/ imagen-20230402165600981.png)]

Algunas partes de una URL se pueden omitir:

Por ejemplo:

  • El número de puerto se puede omitir y el navegador proporciona el puerto predeterminado. Para http, el puerto predeterminado es80, el puerto predeterminado para https es443.

  • / representa el directorio raíz del servidor http, y el servidor http es un proceso en el sistema. Por lo tanto, al servidor se le confía un directorio específico en el sistema de administración, y el mundo exterior puede acceder a los recursos en este directorio. ( El directorio raíz administrado por el servidor puede estar en cualquier parte del sistema, según la configuración del servidor)

  • La cadena de consulta también es opcional.

La cadena de consulta comienza con ? y está organizada en forma de pares clave-valor. La clave-valor está separada por **& , y la clave y el valor están separados por =**. A veces, algunos caracteres de la URL están definidos por características, por lo que debe modificar el contenido. Recodificación, generalmente usando urlencode (carácter de escape), si escribe chino sin codificar, es posible que el navegador no lo reconozca.


Conoce el método (Método)

inserte la descripción de la imagen aquí

En el desarrollo real, la mayoría de los métodos aquí no se usan, los más comunes son GET y POST.

Escenario de activación GET:

  1. Introduzca la URL directamente en la barra de direcciones del navegador
  2. link , script , img , a... y otras etiquetas en html
  3. Construya la solicitud de obtención a través de js.

La diferencia entre GET y POST:

  1. Si es una solicitud GET, no hay cuerpo.Para una solicitud POST, hay un cuerpo.El cuerpo de la POST es el contenido personalizado por el programador.
  2. GET envía mensajes al servidor y generalmente los almacena en la cadena de consulta, mientras que POST envía mensajes a través del cuerpo.
  3. Las solicitudes GET generalmente obtienen datos del servidor, y POST se usa generalmente para enviar datos al servidor.
  4. GET suele ser idempotente y POST no lo requiere (la misma entrada, el resultado también es determinista).
  5. GET se puede almacenar en caché, pero POST generalmente no se puede almacenar en caché (la premisa del almacenamiento en caché es idempotente).

De hecho, la diferencia entre GET y POST es solo un uso común y pueden reemplazarse entre sí en muchos escenarios.


saber el encabezado

[Falló la transferencia de imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-oJFh33yD-1681167552382)(C:/Users/86178/AppData/Roaming/Typora/ typora-user-images/ image-20230402195614835.png)]

Los pares clave-valor en el encabezado están predefinidos por http y tienen significados específicos.

  • HOST: Describe la dirección y el puerto donde se encuentra el servidor , y se utiliza para describir el objetivo que desea visitar, por lo general, el contenido es el mismo que la URL.

  • Content-Length: indica la longitud de los datos en el cuerpo.

[Error en la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-I8VzgZ9s-1681167552382)(C:/Users/86178/AppData/Roaming/Typora/ typora-user-images/ image-20230402200059839.png)]

  • Tipo de contenido: indica el formato de datos en el cuerpo de la solicitud. Los formatos comunes incluyen json y formulario.

  • Agente de usuario (UA para abreviar)

inserte la descripción de la imagen aquí

Describe la versión del navegador y el sistema operativo. Los primeros navegadores solo admitían texto, y más tarde admitían varias imágenes, audio, js... Para los desarrolladores de sitios web, si admitir estas nuevas funciones al desarrollar páginas web es un problema, y ​​luego propusieron una solución. Es decir, lanzar diferentes versiones para aplicar a varios navegadores. Este problema se puede resolver de acuerdo con el User-Agent. Más tarde, la diferencia entre los navegadores es pequeña, y el User-Agent se usa principalmente para distinguir si es un dispositivo móvil. terminal o un terminal de PC.

  • Referir: Indica la "fuente" de la página actual, si buscas directamente en la barra de direcciones, favoritos, etc., no habrá Referido.

[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-wG2aD2WK-1681167552383)(C:/Users/86178/AppData/Roaming/Typora/ typora-user-images/ imagen-20230402204445933.png)]

Servicio de facturación de publicidad, la página del anunciante se transferirá a muchos otros sitios web. Para liquidar y facturar mejor, el anunciante solo necesita registrar el registro a través de la referencia. Sin embargo, http en sí se transmite en texto sin formato, que será secuestrado por el operador y el remitente manipulado con otros.

  • Cookie: Esencialmente, es un mecanismo de almacenamiento local de datos proporcionado por el navegador a la página web. Para garantizar la seguridad, la página web no permite el acceso al disco duro local de la computadora por defecto. El navegador de cookies ha establecido restricciones claras sobre acceder al disco duro, organizados por datos de pares clave-valor.

[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y cargarla directamente (img-amgINwYc-1681167552383) (https://gitee.com/liu-xuixui/ nubosidad/raw/master/img /image-20230402204537742.png)]

El programador define el contenido específico almacenado en la cookie. Aquí está el significado de los datos, que solo puede conocer el programador desarrollador.

¿De dónde proviene la cookie? Los datos en la cookie provienen del servidor, y el servidor determinará qué guardar en la cookie del navegador a través del encabezado de respuesta ==http ==part (campo set-cookie).

¿Dónde existe la cookie? Se puede considerar que existe en el disco duro. Cuando se almacena la cookie, se subdivide según la latitud del navegador + nombre de dominio . Diferentes navegadores almacenan sus propias cookies, y diferentes nombres de dominio de la mismo navegador corresponden a Diferentes cookies Al mismo tiempo, las cookies también tienen un tiempo de caducidad, por ejemplo: muchos sitios web registrarán automáticamente el estado de inicio de sesión una vez que inicien sesión.

¿Adónde va la cookie? El cliente usará la cookie para guardar el estado intermedio utilizado por el usuario. Cuando el cliente acceda al navegador, traerá automáticamente el contenido de la cookie a la solicitud, y el servidor conocerá el estado de El cliente Cookie Lo que se almacena en él es a menudo "el contextoEn este estado, cuando el navegador guarda la cookie, la traerá automáticamente cuando envíe una solicitud al servidor más tarde. La cookie es como un lugar de almacenamiento configurado por el servidor en el lado del navegador.


Organismo de solicitud de reconocimiento

El contenido del cuerpo está estrechamente relacionado con el tipo de contenido del encabezado, y los siguientes tres tipos son comunes:

  1. aplicación/x-www-formulario-urlencode
  2. multiparte/datos de formulario
  3. aplicación/json

2. Respuesta HTTP

La respuesta consta de cuatro partes:

  • 1. Primera línea

  • 2.encabezado
  • 3. Un espacio indica la etiqueta final del encabezado
  • 4.cuerpo

Código de estado Http: Describe el resultado de esta respuesta (¿Éxito? ¿Falla? ¿Cuál es el motivo de la falla?)

común:

  • 200 bien logrado.

  • 404 NotFound El recurso al que se accedió no existe y no se puede encontrar en el servidor.

  • 403 Acceso prohibido denegado (sin permiso)

  • 302 Mover temporalmenteredirigir, el antiguo nombre de dominio salta al nuevo nombre de dominio. Un mensaje de respuesta como 302 llevará un atributo de ubicación en el encabezado y utilizará este atributo para describir a qué dirección saltar.

Redirección: es el mecanismo proporcionado por http
inserte la descripción de la imagen aquí

Solicitud de conversión: es un mecanismo provisto en Spring y Servlet

[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-4ZMqNscV-1681167552383)(C:/Users/86178/AppData/Roaming/Typora/ typora-user-images/ imagen-20230403093731905.png)]

La diferencia entre la redirección y el reenvío de solicitudes:

La redirección se puede redirigir a recursos externos (saltar a otros sitios web), el reenvío de solicitudes solo se puede reenviar entre recursos dentro del servicio y una interacción menos es más eficiente.

  • 500 error interno del servidor (el código del servidor lanzó una excepción)
  • Tiempo de espera de la puerta de enlace 504 (el tiempo de respuesta es demasiado largo, el navegador no puede esperar)

puerta de enlace Puerta de enlace, que representa la entrada/salida de una red.Para acceder al contenido de un servidor, primero debe pasar por la puerta de enlace, y generalmente se usa para referirse al servidor de entrada de una sala de computadoras.

[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-QKaD0zru-1681167552384)(C:/Users/86178/AppData/Roaming/Typora/ typora-user-images/ imagen-20230403091004101.png)]

En resumen: 2** éxito, 3** redirección, 4** error de cliente, 5** error de servidor


Conozca el encabezado de respuesta (header)

El formato del encabezado de la respuesta es básicamente el mismo que el del encabezado de la solicitud. Los significados de los atributos como Content-Type y Content-Length son básicamente los mismos que los de la solicitud.

Conoce la respuesta "cuerpo" (cuerpo)

El formato del cuerpo depende del tipo de contenido

Dado que la respuesta de retorno pasará html, css, js, imágenes, etc. Por lo tanto, habrá varios formatos de datos más:

  • text/html: el formato de los datos del cuerpo es html
  • text/css: el formato de datos del cuerpo es CSS

Resumen del formato de mensaje del protocolo http:

[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y cargarla directamente (img-REthwgkx-1681167552384) (https://gitee.com/liu-xuixui/ nubosidad/raw/master/img /image-20230403100530328.png)]

Supongo que te gusta

Origin blog.csdn.net/liu_xuixui/article/details/130073906
Recomendado
Clasificación