Solicitar proceso de respuesta del navegador al servidor

Desde lo que ingresamos en la barra de direcciones del navegador hasta el contenido de visualización del navegador, ¿qué sucedió en este proceso?

  1. Resolución de nombre de dominio: primero vaya al servidor DNS para resolver el nombre de dominio en la dirección IP correspondiente. https://blog.csdn.net/yexudengzhidao/article/details/99741269
  2. Luego analizamos la dirección IP al servidor al que queremos acceder para solicitar el contenido.

El segundo paso se analizará en detalle a continuación:

En primer lugar, debemos entender la conexión directa y la diferencia entre http, https, TCP, UDP, IP y socket: consulte lo siguiente:

Un resumen de los artículos anteriores:

  • http es el protocolo de la capa de aplicación, TCP es el protocolo de la capa de transporte e IP es el protocolo de la capa de red.

  • http es el principal responsable de cómo empaquetar los datos, y el protocolo TCP resuelve principalmente cómo establecer una conexión y cómo transmitir de manera confiable los paquetes de datos por encima de la capa IP, de modo que el extremo receptor en la red reciba todos los paquetes enviados por el extremo emisor, y el pedido es coherente con el pedido de envío. El protocolo TCP es confiable y está orientado a la conexión. El protocolo IP resuelve principalmente problemas de enrutamiento y direccionamiento de red.

  • El protocolo HTTP también se conoce como Protocolo de transferencia de hipertexto; es la aplicación de séptima capa en el modelo OSI; tiene las siguientes características:

    1. Soporta modo cliente / servidor;
    2. Simple y rápido;
    3. Flexible;
    4. Sin conexión;
    5. Apátrida

Comprensión de sin conexión :
      el significado de sin conexión es limitar el procesamiento de una sola solicitud por conexión. Después de que el servidor procesa la solicitud del cliente y recibe la respuesta del cliente, se desconecta. El uso de este método puede ahorrar tiempo de transmisión.
那么,长连接和短连接又是指什么呢??
TCP proporciona un servicio de transmisión de bytes confiable y orientado a la conexión.
Las conexiones largas y cortas del protocolo HTTP son esencialmente las conexiones largas y cortas del protocolo TCP.
Conexión larga y conexión corta: la conexión corta
      se usa por defecto en HTTP / 1.0. En otras palabras 客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。
      而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:

Connection:keep-alive

En el caso de usar una conexión larga, cuando se abre una página web, la conexión TCP entre el cliente y el servidor para transmitir datos HTTP no se cerrará, y el cliente continuará usando esta conexión establecida cuando acceda nuevamente al servidor. . Keep-Alive no mantiene la conexión para siempre, tiene un tiempo de espera, que se puede configurar en diferentes software de servidor (como Apache). Lograr conexiones largas requiere que tanto el cliente como el servidor admitan conexiones largas.

Comprensión de la apatridia : la
      apatridia significa que el protocolo no tiene memoria para el procesamiento de transacciones, y el servidor no sabe en qué estado se encuentra el cliente. Es decir, después de que enviemos una solicitud HTTP al servidor, el servidor nos enviará datos de acuerdo con la solicitud, pero después del envío, no se registrará información. HTTP es un protocolo sin estado, lo que significa que cada solicitud es independiente y Keep-Alive no ha cambiado este resultado.

      Como http no tiene estado, todos tienen el efecto de cookies y sesiones.
      Las cookies pueden mantener la información de inicio de sesión hasta la próxima sesión del usuario con el servidor. En otras palabras, la próxima vez que visiten el mismo sitio web, el usuario descubrirá que ya ha iniciado sesión sin ingresar un nombre de usuario y contraseña.
      La solución opuesta a las cookies es Session, que mantiene el estado a través del servidor.

Con la base anterior, hablemos de los tres
estados de TCP (SYN, FIN, ACK, PSH, RST, URG)
en el protocolo de enlace de 3 enlaces y 4 rupturas. En la capa TCP, hay un campo BANDERAS. Este campo tiene lo siguiente Varios signos: SYN, FIN, ACK, PSH, RST, URG.

Entre ellos, 前面cinco campos son útiles para nuestro análisis diario . Su significado es:

  • SYN (síncrono) significa establecer una conexión,
  • FIN (terminar) significa cerrar la conexión,
  • ACK (reconocimiento) significa respuesta,
  • PSH (push) indica que hay transmisión de datos DATA,
  • RST (restablecer restablecer) significa que la conexión se restablece.
  • URG (emergencia urgente)

Número de secuencia Número de
reconocimiento

El llamado protocolo de enlace de tres vías (Protocolo de enlace de tres vías) significa que al establecer una conexión TCP, el cliente y el servidor deben enviar un total de 3 paquetes.
El propósito del protocolo de enlace de tres vías es conectarse al puerto designado del servidor, establecer una conexión TCP y sincronizar el número de serie y el número de confirmación de ambos lados de la conexión para intercambiar información sobre el tamaño de la ventana TCP. En la programación de sockets, cuando el cliente ejecuta connect (). Se activarán tres apretones de manos.

SYN es una señal para solicitar una conexión, y se adjunta un número de serie seq = x cuando se envía la conexión. La función de este número de serie es que cuando el servidor responde al cliente, el cliente juzga si el servidor me responde (es una operación +1 en mi número de serie, es decir, seq = x + 1)

  • El primer apretón de manos (SYN = 1, seq = x):

    El cliente envía un paquete con el indicador SYN del TCP en la posición 1, indicando el puerto del servidor al que el cliente intenta conectarse y el número de secuencia inicial X, que se almacena en el campo Número de secuencia del encabezado del paquete.

    Después de enviar, el cliente ingresa SYN_SEND 状态.

  • Segundo apretón de manos (SYN = 1, ACK = 1, seq = y, ACKnum = x + 1):

    El servidor devuelve una respuesta de paquete de confirmación (ACK). Es decir, el indicador SYN y el indicador ACK son ambos 1. El servidor selecciona su propio número de serie ISN y lo coloca en el campo Seq. Al mismo tiempo, establece el Número de acuse de recibo en el ISN más 1 del cliente, que es X + 1.

    Una vez completada la transmisión, el servidor entra en SYN_RCVDun estado.

  • El tercer apretón de manos (ACK = 1, ACKnum = y + 1)

    El cliente vuelve a enviar un paquete de acuse de recibo (ACK), el indicador SYN es 0, el indicador ACK es 1 y el campo de número de secuencia del ACK enviado por el servidor +1 se coloca en el campo de determinación y se envía a la otra parte, y el ISN se escribe en el segmento de datos +1 de

    Después de enviar, el cliente ingresa al ESTABLISHEDestado. Cuando el servidor recibe este paquete, también ingresa al ESTABLISHEDestado y finaliza el protocolo de enlace TCP.

El diagrama esquemático del proceso de apretón de manos de tres vías es el siguiente:
Inserte la descripción de la imagen aquí

La eliminación de la conexión TCP requiere que se envíen cuatro paquetes, por lo que se llama un apretón de manos de cuatro vías o un apretón de manos de tres vías mejorado. 客户端或服务器均可主动发起挥手动作En la programación de socket, cualquier parte realiza una operación close () para generar una operación de saludo.

  • La primera ola (FIN = 1, seq = x)

    Suponiendo que el cliente desea cerrar la conexión, el cliente envía un paquete con el indicador FIN establecido en 1, lo que indica que no tiene datos para enviar, pero aún puede aceptar los datos.

    Una vez finalizada la transmisión, el cliente entra en el FIN_WAIT_1estado.

  • Segunda ola (ACK = 1, ACKnum = x + 1)

    El servidor confirma el paquete FIN del cliente y envía un paquete de confirmación para indicar que ha recibido la solicitud del cliente para cerrar la conexión, pero no está listo para cerrar la conexión.

    Una vez completada la transmisión, el servidor entra en CLOSE_WAITun estado, después de que el cliente recibe el paquete de confirmación entra FIN_WAIT_2un estado de espera para el servidor cierra la conexión.

  • La tercera ola (FIN = 1, seq = y)

    Cuando el servidor está listo para cerrar la conexión, envía una solicitud de finalización de conexión al cliente y FIN se establece en 1.

    Una vez finalizada la transmisión, el servidor entra en LAST_ACKun estado de espera para el final ACK desde el cliente.

  • Cuarta ola (ACK = 1, ACKnum = y + 1)

    Cerrar el cliente recibe una petición del servidor, envía un paquete de confirmación, y entra en TIME_WAITun estado de espera para un paquete ACK requiere se puede producir retransmisión.

    Después de recibir el paquete de confirmación, el servidor cierra la conexión y entra en CLOSEDestado.
    El cliente espera durante un cierto periodo de tiempo fijo (dos máximo del ciclo de vida segmento, 2MSL, 2 vida máximo del segmento) después de que el servidor no ha recibido el ACK, el servidor se ha considerado normal conexión se cierra, a continuación, la conexión a sí mismo está cerrado en el CLOSEDestado.

El diagrama esquemático de las cuatro ondas es el siguiente:
Inserte la descripción de la imagen aquí

Protocolo de enlace SSL

Antes de comenzar la comunicación encriptada, el cliente y el servidor primero deben establecer una conexión e intercambiar parámetros. Este proceso se llama protocolo de enlace. La fase de protocolo de enlace se divide en cinco pasos:

  • El cliente proporciona el número de versión del protocolo, un número aleatorio generado por el cliente (Cliente aleatorio) y el método de cifrado admitido por el cliente.

  • El servidor confirma el método de encriptación utilizado por ambas partes y proporciona un certificado digital y un número aleatorio generado por el servidor (Servidor aleatorio).

  • El cliente confirma que el certificado digital es válido, y luego genera un nuevo número aleatorio (secreto Premaster), y utiliza la clave pública en el certificado digital para cifrar el número aleatorio y enviarlo al servidor.

  • El servidor usa su propia clave privada para obtener el número aleatorio (es decir, el secreto Premaster) enviado por el cliente.

  • El cliente y el servidor usan los tres números aleatorios anteriores de acuerdo con el método de cifrado acordado para generar una clave de sesión, que se usa para cifrar todo el proceso de conversación posterior.

¿La diferencia entre HTTP y HTTPS?

  • Las URL HTTP comienzan con http: //, y las URL HTTPS comienzan con https: //
  • HTTP es inseguro y HTTPS es seguro
  • El puerto estándar HTTP es 80 y el puerto estándar HTTPS es 443
  • En el modelo de red OSI, HTTP funciona en la capa de aplicación, mientras que el mecanismo de transmisión segura de HTTPS funciona en la capa de transmisión
  • HTTP no se puede cifrar y HTTPS cifra los datos transmitidos
  • HTTP no requiere un certificado, y HTTPS requiere un certificado SSL emitido por la agencia de CA wosign

Cómo funciona el protocolo https

El cliente tiene los siguientes pasos cuando se comunica con el servidor web utilizando HTTPS:

  • Si el cliente usa la URL https para acceder al servidor, se requiere que el servidor web establezca un enlace SSL.

  • Después de recibir la solicitud del cliente, el servidor web devuelve o transmite el certificado del sitio web (el certificado contiene la clave pública) al cliente.

  • El cliente y el servidor web comienzan a negociar el nivel de seguridad del enlace SSL, que es el nivel de cifrado.

  • El navegador del cliente establece una clave de sesión a través de un nivel de seguridad mutuamente acordado, y luego cifra la clave de sesión a través de la clave pública del sitio web y la transmite al sitio web.

  • El servidor web descifra la clave de sesión a través de su propia clave privada.

  • El servidor web encripta la comunicación con el cliente a través de la clave de sesión.

Publicados 398 artículos originales · ganado elogios 182 · vistas 370 000 +

Supongo que te gusta

Origin blog.csdn.net/yexudengzhidao/article/details/90371034
Recomendado
Clasificación