3.1 Red informática

Este artículo de la dirección de JavaGuide: https: //github.com/Snailclimb/JavaGuide Autor: SnailClimb
para revisión de uso personal

3.1 La diferencia entre el protocolo TCP y UDP

Inserte la descripción de la imagen aquí

  • UDP no necesita establecer una conexión antes de transmitir datos, y el host de destino no necesita dar ninguna confirmación después de recibir el mensaje UDP. Aunque UDP no proporciona una entrega confiable, en algunos casos, UDP es la forma más efectiva de trabajar (generalmente se usa para mensajería instantánea), como: voz QQ, video QQ, transmisión en vivo, etc.

  • TCP proporciona servicios orientados a la conexión. La conexión debe establecerse antes de la transmisión de datos y la conexión debe liberarse una vez finalizada la transmisión de datos. TCP no proporciona servicios de difusión o multidifusión. Debido a que TCP necesita proporcionar servicios de transporte confiables y orientados a la conexión (la confiabilidad de TCP se refleja en el protocolo de enlace de tres vías para establecer una conexión antes de que TCP transmita datos, y existen mecanismos de control de confirmación, ventana, retransmisión y congestión durante la transmisión de datos Una vez transmitidos los datos, la conexión se desconectará para ahorrar recursos del sistema), lo que inevitablemente aumenta una gran cantidad de gastos generales, como la confirmación, el control de flujo, los temporizadores y la gestión de la conexión. Esto no solo aumenta mucho el encabezado de la unidad de datos del protocolo, sino que también consume muchos recursos del procesador. TCP se utiliza generalmente en escenarios como transferencia de archivos, envío y recepción de correo e inicio de sesión remoto.


3.2 Ingrese la dirección URL en el navegador - >> El proceso de visualización de la página de inicio

Inserte la descripción de la imagen aquí

Generalmente se divide en los siguientes procesos:

  1. Resolución de DNS
  2. Conexión TCP
  3. Enviar solicitud HTTP
  4. El servidor procesa la solicitud y devuelve mensajes HTTP.
  5. El navegador analiza y renderiza la página.
  6. Fin de la conexión

Referencia de proceso específico: Preguntas de entrevista clásicas de front-end: ¿Qué sucedió desde la entrada de la URL hasta la carga de la página?


3.3 La relación entre varios protocolos y el protocolo HTTP

Inserte la descripción de la imagen aquí


3.4 conexión HTTP larga, conexión corta

En HTTP / 1.0, las conexiones cortas se utilizan de forma predeterminada . En otras palabras, cada vez que el cliente y el servidor realizan una operación HTTP, se establece una conexión y la conexión finaliza cuando finaliza la tarea . Cuando un determinado HTML u otro tipo de página web a la que accede el navegador del cliente contiene otros recursos web (como archivos JavaScript, archivos de imagen, archivos CSS, etc.), el navegador se restablecerá cada vez que se encuentre un recurso web de este tipo. Sesión HTTP.

Y de los casos HTTP / 1.1, conexión predeterminada larga para mantener las características de la conexión. Usando el protocolo HTTP para conexiones persistentes, esta línea de código se agregará al encabezado de respuesta:Connection:keep-alive

En el caso de una conexión larga, cuando se abre una página web, la conexión TCP utilizada para transmitir datos HTTP entre el cliente y el servidor no se cerrará. Cuando el cliente vuelva a acceder al servidor, seguirá utilizando la conexión establecida. . Keep-Alive no mantendrá la conexión de forma permanente, tiene un tiempo de mantenimiento que se puede configurar en diferentes software de servidor (como Apache). Para lograr una conexión larga, tanto el cliente como el servidor deben admitir la conexión larga.

Las conexiones largas y cortas del protocolo HTTP son esencialmente las conexiones largas y cortas del protocolo TCP.


3.5 TCP tres apretones de manos y cuatro saludos de manos (entrevistadores frecuentes)

1. Apretón de manos de tres vías

Proceso de apretón de manos de tres vías

Inserte la descripción de la imagen aquí


¿Por qué necesita tres apretones de manos, no puede funcionar dos veces?

Para aclarar este problema, primero debemos comprender cuál es el propósito del apretón de manos de tres vías y si podemos lograr el mismo objetivo con solo dos apretones de manos.

  • El primer apretón de manos : el cliente envía un paquete de red y el servidor lo recibe.
    De esta manera, el servidor puede concluir que la capacidad de envío del cliente y la capacidad de recepción del servidor son normales .
  • El segundo apretón de manos : el servidor envía el paquete y el cliente lo recibe.
    De esta manera, el cliente puede concluir que las capacidades de recepción y envío del servidor y las capacidades de recepción y envío del cliente son normales . Sin embargo, en este momento, el servidor no puede confirmar si la capacidad de recepción del cliente es normal .
  • El tercer apretón de manos : el cliente envía el paquete y el servidor lo recibe.
    De esta manera, el servidor puede concluir que las capacidades de envío y recepción del cliente son normales y que las capacidades de envío y recepción del propio servidor también son normales .

Por lo tanto, se requiere un protocolo de enlace de tres vías para confirmar si las capacidades de recepción y envío de ambas partes son normales.

Si usa dos apretones de manos, ocurrirá la siguiente situación:

El cliente envía el primer mensaje de solicitud de conexión ① pero se retrasa, por lo que reinicia la segunda conexión ②. Después de recibir ②, el servidor devuelve un mensaje de confirmación ③. En este momento, las dos partes establecen una conexión y la liberan después de transmitir los datos.

Pero cuando llega el mensaje retrasado ①, el servidor piensa que es una nueva conexión nuevamente, por lo que devuelve un mensaje de confirmación ④, y como hay dos apretones de manos, siempre que el servidor envíe una confirmación, se establece una nueva conexión, por lo que en este caso, el servidor está en establishedestado. Pero, de hecho, el cliente no inicia una conexión, por lo que el mensaje será ignorado ④. Por lo tanto, esto hace que el servidor esté en un estado de espera de datos todo el tiempo, lo que desperdicia recursos.

Inserte la descripción de la imagen aquí


2. Salude cuatro veces

Proceso de cuatro ondas

Inserte la descripción de la imagen aquí


¿Por qué necesito saludar cuatro veces?

Al establecer una conexión , el servidor puede enviar directamente un mensaje SYN + ACK después de recibir el mensaje de solicitud de conexión SYN del cliente. El paquete ACK se usa para responder y el paquete SYN se usa para sincronización .

Pero cuando se cierra la conexión , cuando el servidor recibe el mensaje FIN, es posible que no cierre inmediatamente el SOCKET, por lo que solo puede responder con un mensaje ACK primero, diciéndole al cliente: "Recibí el mensaje FIN que enviaste", significa que las dos primeras oleadas simplemente cerraron la conexión unidireccional entre el cliente y el servidor . Solo después de que se hayan enviado todos los mensajes en mi servidor, puedo enviar un mensaje FIN, lo que significa cerrar la conexión unidireccional entre el servidor y el cliente . Por lo tanto, no se pueden enviar juntos. Por lo tanto, se requieren cuatro ondas.


¿Cuál es el punto de esperar a 2MSL cuando mueve sus manos cuatro veces para liberar la conexión?

MSL es la abreviatura en inglés de Maximum Segment Lifetime, que puede traducirse como "vida más larga del segmento". Es el tiempo más largo que puede existir un mensaje en la red. Después de este tiempo, el mensaje se descartará.

  1. Asegúrese de que el último segmento ACK enviado por el cliente pueda llegar al servidor.
    Este segmento ACK puede perderse, por lo que B en el estado LAST-ACK no puede recibir la confirmación del segmento FIN + ACK enviado. El servidor retransmite el segmento FIN + ACK a lo largo del tiempo, y el cliente puede después de recibir este FIN + ACK retransmitido segmento dentro de 2MSL, el cliente retransmite un acuse de recibo, reinicia el temporizador de 2MSL y, finalmente, tanto el cliente como el servidor entran en el estado CERRADO.
    Si el cliente no espera un período de tiempo en el estado TIME-WAIT, pero libera la conexión inmediatamente después de enviar el segmento ACK, no puede recibir el segmento FIN + ACK retransmitido por el servidor, por lo que no enviará otro mensaje de confirmación. Segmento, el servidor no puede entrar normalmente en el estado CERRADO.

  2. Evite que aparezca "segmento de mensaje de solicitud de conexión fallida" en esta conexión .
    Una vez que el cliente termine de enviar el último segmento ACK, después de 2MSL, todos los segmentos generados durante la duración de esta conexión pueden desaparecer de la red, por lo que este no aparecerá en la próxima conexión nueva Un segmento de solicitud de conexión antigua.

consejos: Apretón de manos de tres vías y apretón de manos de cuatro vías Blog de referencia: Entrevistador, deje de pedirme apretón de manos de tres vías y apretón de manos de cuatro vías

Supongo que te gusta

Origin blog.csdn.net/cys975900334/article/details/115178477
Recomendado
Clasificación