El entrevistador no habló sobre artes marciales, así que me preguntó sobre los principios subyacentes de Chrome y el protocolo HTTP.

Prefacio

Algunas personas dicen que si comprendes cómo funciona el navegador, puedes resolver el 80% de los problemas del front-end.

Sí, comprender el principio de funcionamiento del navegador le ayudará en su trabajo; y comprender los protocolos de red como TCP / IP y HTTP será de gran beneficio para su futuro desarrollo profesional.

A continuación, he resumido las preguntas sobre la comunicación del navegador y la red que se prueban con frecuencia en 4 entrevistas. Reorganizaré el navegador, la comunicación de la red, la representación de la página, JavaScript, la seguridad del navegador y otros conocimientos para que pueda comprender todo el sistema de front-end y back-end. Tenga una nueva comprensión.

Primera pregunta: ¿Por qué Chrome abre una página, hay 4 procesos?

Aprenda a dominar: el proceso de red en el navegador, el proceso de representación de la página, el proceso de ejecución de JavaScript y la teoría de la seguridad web. Amplíe el problema a continuación para comprender la arquitectura multiproceso:

Aprendizaje de arquitectura multiproceso

El concepto de proceso e hilo se confunde

Desde un punto de vista informático, un solo subproceso significa calcular uno tras otro, y un subproceso múltiple significa procesar varios cálculos al mismo tiempo. El subproceso múltiple significa que el programa contiene múltiples flujos de ejecución, es decir, se pueden ejecutar múltiples subprocesos diferentes al mismo tiempo en un programa para realizar diferentes tareas, es decir, un solo programa puede crear múltiples ejecuciones paralelas.

Un solo hilo es un flujo de ejecución en el programa.Cada hilo tiene su propio registro dedicado (puntero de pila, contador de programa, etc.), pero el área de código es compartida, es decir, diferentes hilos pueden ejecutar la misma función.

El subproceso múltiple también es un programa, por lo que los subprocesos deben ocupar memoria, y cuantos más subprocesos, más memoria. El subproceso múltiple debe coordinarse y administrarse, por lo que se requiere tiempo de CPU para realizar un seguimiento de los subprocesos; el acceso a los recursos compartidos entre subprocesos se afectará entre sí y la contención debe resolverse El problema de los recursos compartidos; demasiados hilos conducirán a un control demasiado complicado.

Cuando un solo hilo ejecuta un programa, los programas que recorre están todos en orden secuencial, y los anteriores deben procesarse mucho antes de que se puedan ejecutar los siguientes. La operación multiproceso significa que hay múltiples tareas independientes y específicas en un proceso para competir por la ejecución de la CPU. Macroscópicamente, es concurrente, pero en realidad es una ejecución de tiempo compartido, pero el intervalo de tiempo de ejecución es relativamente corto.

Cada programa en ejecución es un proceso y contiene al menos un hilo. Este hilo se llama hilo principal. Se crea cuando el programa se inicia y se utiliza para ejecutar la función principal. Un programa con un solo hilo principal se llama programa de un solo hilo. Un programa con múltiples subprocesos se denomina programa multiproceso.

El proceso es cuando un programa comienza a ejecutarse, es un proceso, el proceso incluye el programa en ejecución y la memoria y los recursos del sistema utilizados por el programa (un proceso se compone de múltiples subprocesos)

La ventaja de los subprocesos múltiples es que puede mejorar la utilización de la CPU. En un programa de subprocesos múltiples, si un subproceso debe esperar, la CPU puede ejecutar otros subprocesos en lugar de esperar, lo que puede mejorar en gran medida la eficiencia del programa.

Por lo tanto, un hilo no puede existir solo, es iniciado y administrado por un proceso, y un proceso es una instancia en ejecución de un programa. Los subprocesos dependen del proceso, y el uso de procesamiento paralelo de subprocesos múltiples en el proceso puede mejorar la eficiencia informática. Los datos del proceso se comparten entre subprocesos. Cuando se cierra un proceso, el sistema operativo recupera la memoria ocupada por el proceso.

El navegador Chrome de arquitectura multiproceso actual incluye un proceso de navegador principal, un proceso de GPU, un proceso de red, múltiples procesos de renderizado y múltiples procesos de plug-in.

Entonces, abre una página, ¿por qué hay 4 procesos? Porque abre 1 página: se requieren al menos 1 proceso de red , 1 proceso de navegador , 1 proceso de GPU y 1 proceso de renderizado .

Aunque el modelo multiproceso mejora la estabilidad, la fluidez y la seguridad del navegador, brinda un mayor uso de recursos y una arquitectura más compleja. Por lo tanto, Chrome oficialmente quiere construir un sistema que sea más cohesivo, poco acoplado, fácil de mantener y extender.

Pregunta 2: ¿Cómo garantiza el protocolo TCP que el archivo de la página se pueda enviar al navegador por completo?

Para la red, sabemos que un archivo generalmente se divide en muchos paquetes de datos para su transmisión, y es muy probable que los paquetes de datos se pierdan o se produzcan errores durante el proceso de transmisión. Es para garantizar que el archivo de página se entregue por completo al navegador. Necesario.

A continuación se describen estos tres aspectos:

  1. Cómo llega el paquete de datos al host

  2. Cómo el anfitrión reenvía el paquete a la aplicación

  3. Cómo se entregan completamente los datos a la aplicación

El paquete de datos se envía del host A al host B. La información de la dirección IP del host B y la dirección IP del host A se adjuntarán al paquete de datos. Esta información adicional se cargará en una estructura de datos del encabezado IP (incluida la versión IP, Dirección IP de origen, dirección IP de destino, tiempo de vida, etc.)

Generalmente, los entendemos. A continuación, se explica principalmente el TCP (Protocolo de control de transmisión). El Protocolo de control de transmisión es un protocolo de comunicación de capa de transmisión basado en flujo de bytes confiable y orientado a la conexión . En el modelo OSI de red informática simplificada, se completa Funciones especificadas por la cuarta capa de transporte.

El Protocolo de datagramas de usuario (UDP) es otro protocolo de transmisión importante en la misma capa.

En el conjunto de protocolos de Internet, la capa TCP está por encima de la capa IP, TCP-> IP, la capa intermedia debajo de la capa de aplicación y la capa de aplicación -> capa intermedia. Las capas de aplicación de diferentes hosts a menudo necesitan conexiones confiables en forma de tubería , pero la capa IP no proporciona un mecanismo de flujo de este tipo, pero proporciona un intercambio de paquetes poco confiable.

Para garantizar que no se produzca ninguna pérdida de paquetes, TCP le da a cada paquete un número de secuencia, y el número de secuencia también asegura que los paquetes transmitidos a la entidad final receptora se reciban en orden. La entidad receptora devuelve un mensaje de acuse de recibo correspondiente (ACK) para el paquete recibido con éxito. Si la entidad de envío no recibe el acuse de recibo dentro de un retardo razonable de ida y vuelta (RTT), se supone que el paquete de datos correspondiente ha sido Perdido y retransmitido.

  • Los datos se denominan flujo en la capa TCP.

  • La agrupación de datos se llama segmentación

El funcionamiento del protocolo TCP: creación de conexión, transmisión de datos, terminación de conexión.

¿Sabes qué es TCP? En este punto, la mayoría de la gente solo debería decir que es un acuerdo.

El protocolo de control de transmisión TCP es TCP / IP, uno de los principales protocolos en el protocolo de control de transmisión Protocolo de Internet. TCP / IP es un conjunto de protocolos de comunicación que se utilizan para conectar Internet y la mayoría de las demás redes informáticas en el host.

Un acuerdo es un formato mutuamente acordado que se utiliza para realizar algo. En el caso de las computadoras, se usa más comúnmente para referirse a un conjunto de reglas que permiten a las computadoras conectarse entre sí y transmitir datos, llamado protocolo de comunicación.

TCP es un protocolo orientado a la conexión que establece y mantiene una conexión virtual entre hosts hasta que se intercambia un mensaje o un mensaje intercambiado por un programa de aplicación que se ejecutará en él. El paquete de datos es la unidad más básica de transmisión de datos en la red TCP / IP.

TCP se ejecuta en la capa de transporte y es responsable de mantener una comunicación confiable de extremo a extremo en toda la red. IP es el protocolo de capa de red, que es la capa directamente debajo de la capa de transporte. La capa de transporte se ejecuta: UDP (Protocolo de datagramas de usuario), RTP (Protocolo de transmisión en tiempo real), SCTP (Protocolo de transmisión de control de flujo).

Creación de conexión

TCP utiliza un proceso de protocolo de enlace de tres vías para crear una conexión

El proceso del acuerdo de apretón de manos de tres vías:

a. El cliente envía un paquete SYN al servidor, solicitando una apertura activa. El paquete lleva el número aleatorio A establecido por el cliente para esta solicitud de conexión como el número de columna del mensaje.

b) Después de que el servidor recibe un paquete SYN, coloca el paquete en la cola SYN y devuelve un SYN / ACK. El código de confirmación ACK debe ser A + 1, y el paquete SYN / ACK en sí mismo lleva un número de secuencia B generado aleatoriamente.

c. Después de recibir el paquete SYN / ACK, el cliente envía un paquete ACK, el número de secuencia del paquete se establece en A + 1 y el código de confirmación ACK es B + 1. Cuando el servidor recibe este paquete ACK, quita el marco de solicitud de la cola SYN y lo coloca en la cola ACCEPT.

Escenario: cuando el servidor recibe el SYN enviado por el cliente y devuelve el SYN-ACK, el cliente se desconecta y el servidor no recibe el ACK del cliente, entonces la conexión está en un estado intermedio y no es exitosa No falló.

Sin embargo, si el servidor no recibe el TCP dentro de un cierto período de tiempo, volverá a enviar el SYN-ACK.

  • Cuando el host recibe un paquete TCP, utiliza la dirección IP y el número de puerto de ambos extremos para identificar a qué sesión pertenece el paquete TCP.

    Se utiliza una tabla para almacenar todas las sesiones, cada una de las cuales se denomina TCB (Bloque de control de transmisión).

  • La definición de la estructura TCB incluye: puerto de origen, puerto de destino, ip de destino, número de serie, número de serie de respuesta, tamaño de la ventana de la contraparte, tamaño de la ventana del cliente, estado de tcp, cola de entrada / salida de tcp, cola de salida de la capa de aplicación, retransmisión de tcp Variables relacionadas, etc.

  • El número de conexiones en el lado del servidor es ilimitado, solo limitado por la memoria.

transmisión de datos

Hay un par de número de secuencia y número de confirmación en cada segmento de TCP .

El remitente de un mensaje TCP llama al número de serie de su propio flujo de bytes y llama al número de serie del flujo de bytes recibido de la otra parte como número de confirmación. Al utilizar el número de secuencia y el número de confirmación, la capa de TCP puede entregar los bytes en el segmento de mensaje recibido a la capa de aplicación en el orden correcto.

El protocolo TCP utiliza números de secuencia para identificar el orden de los bytes enviados por cada extremo, y el orden puede reconstruirse recibiendo datos del otro extremo, sin temor a una entrega fuera de orden o pérdida de paquetes de paquetes transmitidos.

Envíe los acuses de recibo del paquete de confirmación, que lleva el número del flujo de bytes enviado por el receptor (número de acuse de recibo), e indica la posición del byte del flujo de datos que la otra parte ha recibido con éxito.

Estructura del paquete

Echemos un vistazo al diagrama de estructura del paquete de datos:

Contiene: byte de compensación, puerto de conexión de origen, puerto de conexión de destino, número de serie, número de confirmación, suma de comprobación, puntero de emergencia, etc.

  • Puerto de conexión de origen, 16 bits de longitud, que identifica el puerto de conexión de envío

  • Puerto de conexión de destino, de 16 bits de longitud, que identifica el puerto de conexión de recepción

  • Número de secuencia (seq, 32 bits de longitud)

  • Número de acuse de recibo (ack, 32 bits de longitud), el número de secuencia inicial de los datos recibidos esperados, es decir, la longitud en bytes de los datos recibidos más 1

  • Desplazamiento de datos (4 bits de longitud), el valor de desplazamiento de la dirección inicial del segmento de datos calculado en unidades de 4 bytes.

  • Reservado, debe establecerse en 0

  • ACK: 1 significa que el campo del número de confirmación es válido

  • SYN: 1 significa que se trata de una solicitud de conexión o una solicitud de aceptación de conexión, que se utiliza para crear una conexión y sincronizar el número de secuencia.

  • FIN: 1 significa que el remitente no tiene datos para transmitir y la conexión debe liberarse

  • RST: 1 significa que se ha producido un error grave. Puede que sea necesario volver a crear la conexión TCP. También se puede utilizar para rechazar segmentos ilegales y solicitudes de conexión.

  • Puntero urgente (16 bits de longitud): el número de serie del último byte de datos urgentes en este segmento.

  • Ventana (WIN, longitud de 16 bits): indica el número de bytes que el remitente de este mensaje puede recibir a partir del número de confirmación, es decir, el tamaño de la ventana de recepción. Para control de flujo

  • Suma de comprobación (suma de comprobación, longitud de 16 bits): calcula todo el segmento del mensaje TCP, incluido el encabezado TCP y los datos TCP, en palabras de 16 bits. Este es un campo obligatorio

Recuerde que IP entrega el paquete de datos al host de destino y el paquete de datos llega al host. Entonces, ¿cómo reenvía el paquete de datos a la aplicación?

UDP entrega paquetes de datos al programa de aplicación.

UDP es un protocolo desarrollado basado en IP que puede interactuar con aplicaciones. El protocolo de paquetes de datos del usuario determina a qué programa entregar el paquete de datos. IP solo es responsable de transmitir el paquete de datos a la computadora de la otra parte .

Después de leer la ubicación, comparemos brevemente UDP y TCP a continuación:

UDP: Sin conexión; admite comunicación interactiva uno a uno, uno a muchos, muchos a uno y muchos a muchos; empaquetar directamente los mensajes entregados por la capa de aplicación; intentar entregar lo mejor posible, es decir, no confiable; no usar control de flujo y congestión Control; la sobrecarga del encabezado es pequeña, solo 8 bytes.

TCP: orientado a la conexión; cada conexión TCP solo puede tener dos puntos finales EP, solo comunicación uno a uno; orientado a bytes; transmisión confiable, usando control de flujo y control de congestión; el encabezado mínimo es de 20 bytes, el máximo es de 60 bytes .

El punto más importante de UDP es el número de puerto, porque UDP distribuye paquetes de datos al programa correcto a través del número de puerto . UDP no puede garantizar la confiabilidad de los datos, pero la velocidad de transmisión es rápida.

La explicación importante es: ¿Cómo se entregan completamente los datos a la aplicación?

TCP es la entrega completa de datos a la aplicación.

TCP es un protocolo de comunicación de capa de transporte confiable, orientado a la conexión y basado en flujo de bytes . Proporciona un mecanismo de retransmisión e introduce un mecanismo de clasificación de paquetes (el encabezado TCP, que proporciona un número de secuencia para la clasificación, se utiliza para reorganizar los datos por número de secuencia paquete).

Hablando de conexiones TCP, debemos hablar del apretón de manos de tres vías de TCP / IP que a menudo entrevistamos para establecer una conexión; agite cuatro veces para desconectar .

Diagrama de apretón de manos de tres vías:

Completó el protocolo de enlace de tres TCP:

La novia le envió al novio: "¿Estás ahí?" El novio le respondió a la novia: "¡Yo sí!" La novia le respondió al novio: "¡Ya veo!"

Ahora el novio lo sabe.

Cuatro imágenes onduladas:

Completa cuatro oleadas:

La novia le envió al novio: "¡Romper!" El novio le respondió a la novia: "¿Uh?" El novio le respondió a la novia: "¿En serio?" La novia le respondió al novio: "¡En serio!"

En este momento, la novia eliminó el WeChat de su novio.

Siga el apretón de manos de tres y cuatro manos agitadas como describí, creo que lo entiendes, ¡jaja!

La tercera pregunta: proceso de solicitud HTTP, ¿por qué muchos sitios se abren tan rápido por segunda vez?

Hablando de protocolo HTTP, está construido sobre la base de la conexión TCP, el protocolo de transferencia de hipertexto, HTTP es un protocolo de capa de aplicación para sistemas de información distribuidos, colaborativos e hipermedia, HTTP es la base de la comunicación de datos en la World Wide Web. .

Alguien dijo: Si quieres aprender bien un navegador, debes tener un conocimiento profundo de HTTP.

Navegador que utiliza el protocolo HTTP como protocolo de capa de aplicación, para solicitar el paquete de información de texto, utilizando TCP / IP como protocolo de capa de transporte de transmisión para enviarlo a la red ( el contenido de los datos transmitidos por la fase http TCP para lograr ).

  • Nombre de dominio y dirección IP: mapeo entre el nombre de dominio y el sistema de mapeo IP llamado "Sistema de nombres de dominio", dijo Jane DNS.

El sistema de nombres de dominio DNS es un servicio de Internet. Como una base de datos distribuida que mapea nombres de dominio y direcciones IP entre sí, puede facilitar el acceso de las personas a Internet.

Nombre de dominio como: dadaqianduan.cn (dirección URL)

La dirección IP es: xx.233.xxs.12 (acceso)

En primer lugar, en el primer paso, el navegador solicitará a DNS que devuelva la IP correspondiente al nombre de dominio. El navegador también proporciona el servicio de almacenamiento en caché de datos DNS. Si se ha resuelto un nombre de dominio, el navegador almacenará en caché la estructura resuelta y estará directamente en la siguiente consulta. Utilice, reduzca una solicitud de red. Después de obtener la IP, debe obtener el número de puerto. Si la URL no indica claramente el número de puerto, el protocolo HTTP toma el puerto 80 por defecto.

En este paso, la IP y el número de puerto son claros y claros. Permítanme hablar sobre la descripción del protocolo HTTP , aquí se agrega para una mejor comprensión:

HTTP es un estándar para la solicitud y la respuesta entre el cliente y el servidor. Por lo general, se usa el protocolo TCP. Al usar un navegador web, un rastreador web u otras herramientas, el cliente inicia una solicitud HTTP al puerto especificado en el servidor. El puerto predeterminado es 80 .

Algunos recursos se almacenan en el servidor de respuesta, como archivos HTML e imágenes. El servidor de origen; (el cliente se denomina agente de usuario), puede haber varias "capas intermedias" entre el agente de usuario y el servidor de origen, como servidores proxy, puertas de enlace, Túnel, etc.

por lo tanto, el servidor HTTP escucha la solicitud del cliente en el puerto. Una vez que se recibe la solicitud, el servidor devolverá un estado al cliente, como: "HTTP / 1.1 200 OK", y el contenido devuelto, como el archivo solicitado, el mensaje de error u otro Noticias.

Primero, déjame responder aquí: el navegador inicia el proceso de solicitud HTTP: 1. Crea la solicitud (crea la información de la línea de solicitud); 2. Busca la caché (la caché del navegador es una forma de guardar una copia del recurso localmente para uso directo en la siguiente solicitud Tecnología); 3. Prepare la dirección IP y el puerto; 4. Espere la cola TCP; 5. Establezca la conexión TCP; 6. Envíe la solicitud HTTP.

Luego, el servidor procesa la solicitud, el servidor devuelve la solicitud y se desconecta.

De hecho, una vez que el puerto y la dirección IP están listos, no es necesario establecer directamente una conexión TCP, porque hay un mecanismo en Chrome, es decir, el mismo nombre de dominio solo puede establecer un máximo de 6 conexiones TCP al mismo tiempo. Si hay 10 solicitudes bajo el mismo nombre de dominio al mismo tiempo Ocurre, luego 4 de las solicitudes ingresan al estado de espera de cola.

Si el número de solicitudes es menor a 6, ingresa directamente para establecer una conexión TCP.

Enviar solicitud HTTP

Lo anterior es preliminar, entonces, ¿cómo envía el navegador la información de la solicitud al servidor?

Aquí hay una imagen de la captura de paquetes de solicitud posterior:

El navegador Lai Zhang envía una solicitud al servidor para recibir el proceso de devolución:

Descripción: El usuario ingresa la dirección URL solicitada en el navegador, el código central dentro del navegador dividirá la URL y finalmente enviará el dominio al servidor DNS, y el servidor DNS consultará la dirección IP correspondiente según el dominio. Devolviendo así la dirección IP al navegador.

Una vez que el navegador tenga la dirección IP, sabrá a dónde se envía la solicitud. Pase (LAN, conmutador, enrutador, red troncal) hasta el servidor.

Los amigos que conocen HTTP con frecuencia deben comprender la expresión anterior, luego mirar el formato de datos de solicitud HTTP (vea la imagen de arriba -> un diagrama de captura de paquetes de solicitud posterior):

Formato de datos de solicitud HTTP :

El navegador envía primero una línea de solicitud ( método de solicitud; URI de solicitud; versión del protocolo HTTP ) al servidor, para indicarle qué recursos necesita el navegador. El método de solicitud comúnmente utilizado es GET, y el encabezado de solicitud (utilizado para proporcionar información básica del navegador El sistema operativo, el kernel del navegador y otra información utilizada, así como la información del nombre de dominio de la solicitud actual, la información de las cookies del navegador, etc.), el cuerpo de la solicitud (como el POST de uso común, que se usa para enviar algunos datos al servidor, y los datos preparados son a través del cuerpo de la solicitud Mandar).

Proceso de solicitud HTTP de procesamiento del servidor :

  1. Solicitud de devolución

  2. Desconectar;

  3. Redirigir.

Vea los datos de solicitud devueltos, -i, obtenga la línea de respuesta devuelta (incluida la versión del protocolo y el código de estado), el encabezado de la respuesta y los datos del cuerpo de la respuesta.

En circunstancias normales, el servidor devuelve los datos solicitados al cliente, es necesario cerrar la conexión TCP. Pero este campo se agrega a la información del encabezado: Conexión: Keep-Alive, de modo que la conexión TCP aún está conectada y puede continuar enviando solicitudes en la misma conexión TCP, lo que puede ahorrar el tiempo necesario para establecer una conexión para la siguiente solicitud.

De hecho, cuando se devuelve la solicitud, la conexión desaparece, pero hay una URL que abrió en el navegador y encontró que la dirección de la página final es diferente. Eso se debe a que hay una operación de redireccionamiento.

Como se muestra en la figura: -I significa que solo es necesario obtener el encabezado de respuesta y los datos de la línea de respuesta

  • La dirección redirigida en el campo de ubicación;

La diferencia entre el código de estado 301 y 302

301 Moved Permanently El recurso solicitado se ha trasladado permanentemente a una nueva ubicación, y cualquier referencia futura a este recurso debe utilizar uno de los varios URI devueltos por esta respuesta. Si es posible, el cliente con la función de edición de enlaces debe modificar automáticamente la dirección solicitada a la dirección devuelta por el servidor. A menos que se especifique lo contrario, esta respuesta también se puede almacenar en caché.

302 Encontrado El recurso solicitado ahora responde temporalmente a la solicitud de un URI diferente. Dado que dicha redirección es temporal, el cliente debe continuar enviando solicitudes futuras a la dirección original. Esta respuesta se puede almacenar en caché solo si se especifica en Cache-Control o Expires.

Diferencia literal: 301 es una redirección permanente y 302 es una redirección temporal

Un redireccionamiento 302 es un redireccionamiento temporal. El motor de búsqueda tomará el nuevo contenido y conservará la dirección anterior. Debido a que el servidor devuelve 302, el motor de búsqueda considera que la nueva URL es temporal.

Una redirección 301 es una redirección permanente. Cuando el motor de búsqueda obtiene contenido nuevo, también reemplaza la URL anterior por la URL redirigida.

A continuación, clasifiquemos el número de versión HTTP. Creo que en el proceso de aprendizaje, todos también quieren saber.

HTTP / 0.9:

Obsoleto. Solo se admite el método de solicitud GET, y solo se pueden solicitar recursos en formato HTML, el número de versión no se especifica en la comunicación y el encabezado de solicitud no es compatible.

HTTP / 1.0:

Esta es la primera versión del protocolo HTTP que especifica el número de versión en la comunicación, agregando los métodos de solicitud POST y HEAD; ya no se limita a la versión 0.9 del formato HTML, y puede admitir múltiples formatos de datos de acuerdo con Content-Type; incluido el código de estado (status código), compatibilidad con conjuntos de caracteres múltiples, tipo de varias partes, autorización, caché, codificación de contenido, etc.

Versión 1.0: Solo se puede enviar una solicitud por conexión TCP. Cuando el servidor responda, esta conexión se cerrará. La siguiente solicitud debe establecer una conexión TCP nuevamente.

HTTP / 1.1:

La conexión continua se usa por defecto (la conexión TCP no está cerrada por defecto y puede ser multiplexada por múltiples solicitudes sin declarar Conexión: mantener vivo), que puede funcionar bien con servidores proxy.

Una conexión TCP puede permitir múltiples solicitudes HTTP

Se agrega el mecanismo de canalización , lo que permite enviar múltiples solicitudes al mismo tiempo en la misma conexión TCP, lo que aumenta la concurrencia y mejora aún más la eficiencia del protocolo HTTP

La versión 1.1 estipula que no es necesario usar el campo Content-Length, pero usar "codificación de transferencia fragmentada", siempre que la información del encabezado de la solicitud o respuesta tenga un campo Transfer-Encoding, indica que la respuesta consistirá en un número indeterminado de bloques de datos. Codificación de transferencia: fragmentado

Se agregaron métodos de solicitud PUT, PATCH, OPTIONS, DELETE, etc.

  • Codificación de transferencia en bloque: Es un mecanismo de transmisión de datos en el protocolo de transferencia de hipertexto. Permite dividir en múltiples partes los datos HTTP enviados por el servidor web a la aplicación cliente. La codificación de transferencia en bloque solo está disponible en el protocolo HTTP versión 1.1 (HTTP / 1.1). ).

En la misma conexión TCP, todas las comunicaciones de datos se realizan en orden. La respuesta es lenta, habrá muchas solicitudes en cola, lo que provocará un "atasco de cabeza de línea".

HTTP / 2:

Fue lanzado oficialmente como estándar de Internet en mayo de 2015. Se agrega el modo dúplex, es decir, no solo el cliente puede enviar múltiples solicitudes al mismo tiempo, el servidor también puede procesar múltiples solicitudes al mismo tiempo, lo que resuelve el problema de congestión en la cabecera de la línea.

Con la tecnología de multiplexación, la misma conexión puede procesar varias solicitudes al mismo tiempo, y el número de solicitudes simultáneas es varios órdenes de magnitud mayor que HTTP 1.1.

Aumente la función de inserción del servidor, el servidor envía datos de forma activa al cliente sin solicitud.

La diferencia entre el protocolo HTTP1.1 y HTTP1.0:

  1. Procesamiento de caché

  2. Optimización del ancho de banda y uso de la conexión de red.

  3. Gestión de notificaciones de errores

  4. Envío de mensajes en la red

  5. Mantenimiento de direcciones de Internet

  6. Seguridad e integridad

Al final, ¿por qué el segundo sitio se abre tan rápido?

La razón es que algunos datos que consumen mucho tiempo se almacenan en caché durante el proceso de carga de la primera página. La caché principal incluye la caché de DNS y la caché de recursos de página.

  • Caché de navegador

Al enviar una solicitud por primera vez, el servidor devuelve un encabezado de respuesta HTTP al navegador, el navegador establecerá si se almacena en caché el recurso a través del campo CacheControl en el encabezado de respuesta. Por lo general, es necesario establecer un tiempo de caché, Cache-Control: Max-age = 2000. Cuando el caché no expira, al enviar una solicitud para solicitar el recurso, el recurso en el caché se devolverá directamente al navegador. Si el caché expira, el navegador continuará iniciando solicitudes de red.

Cuarta pregunta: ¿Qué sucedió cuando ingresé la URL para mostrar la página?

Simplemente pon:

  • El proceso del navegador principal envía la URL al proceso de red

  • El proceso de red solicita al servidor y devuelve el encabezado de respuesta para determinar si se requiere redirección

  • El proceso de red envía el recurso de respuesta del tipo de página al proceso de representación.

  • El proceso de renderizado ha terminado y la carga está completa.

Un simple paso a paso es:

  1. El primero es la resolución de nombres de dominio.

  2. Establecer enlace TCP

  3. Establecer solicitud Http

  4. El servidor maneja la solicitud Http

  5. Cerrar la conexión TCP

  6. Recursos de análisis del navegador

  7. Página de representación del navegador

También hablé de ello en mi GitHub: los pasos desde ingresar la URL desde la barra de direcciones del navegador hasta mostrar la página https://github.com/webVueBlog/interview-answe/issues/27

Al final de este artículo, te dejo con una pregunta de la entrevista, que se menciona arriba: "Desde la entrada de la URL hasta la visualización de la página, ¿qué se envía en el medio?" Esta pregunta, si te entrevistan, ¿cómo la respondes?

Si es un entrevistador, ¿qué debe probar?

Lee la información

El principio de funcionamiento y la práctica del navegador.

https://time.geekbang.org/column/intro/100033601

para resumir

Lo anterior es de lo que hablaré hoy. Este artículo presenta brevemente el proceso de Chrome, clasifica los protocolos TCP y HTTP, comprende el proceso de enlace de tres vías y el proceso de onda de cuatro veces, gracias por leer, si cree que este artículo es útil para usted, también puede hacerlo. Comparte con más amigos.

-----FIN-----

Amigos a los que les gusta este artículo, bienvenidos a seguir al programador de cuentas oficial  Xiaohui y ver contenido más emocionante.

点个[在看],是对小灰最大的支持!

Supongo que te gusta

Origin blog.csdn.net/bjweimengshu/article/details/110412270
Recomendado
Clasificación