Red de conocimiento informático - Conocimiento sistemático - El proceso de trabajo de un navegador que utiliza el protocolo http para acceder a páginas web

El proceso de trabajo de un navegador que utiliza el protocolo http para acceder a páginas web

1. Primero, debes ingresar la URL que deseas en el navegador:

2. El navegador busca la dirección IP del nombre de dominio.

El primer paso en la navegación es conocer su dirección IP a través del nombre de dominio visitado. El proceso de búsqueda de DNS es el siguiente:

Caché del navegador: los navegadores almacenan en caché los registros DNS durante un período de tiempo. Curiosamente, el sistema operativo no le dice al navegador cuánto tiempo almacenar los registros DNS, por lo que diferentes navegadores almacenarán un tiempo fijo (que oscila entre 2 minutos y 30 minutos).

Caché del sistema: si el registro requerido no se encuentra en el caché del navegador, el navegador realizará una llamada al sistema (gethostbyname en Windows). Esto obtendrá el registro en la memoria caché del sistema.

Caché del enrutador: a continuación, la solicitud de consulta anterior se envía al enrutador, que generalmente tiene su propio caché DNS.

Caché DNS del ISP: lo siguiente que debe verificar es el servidor DNS de la caché del ISP. Los registros de caché correspondientes generalmente se pueden encontrar aquí.

Búsqueda recursiva: el servidor DNS de su ISP realiza una búsqueda recursiva comenzando con los servidores de nombres, desde los servidores de nombres de dominio de nivel superior .com hasta los servidores de nombres de Facebook. Generalmente, el caché del servidor DNS contendrá el nombre de dominio en el servidor de nombres de dominio .com, por lo que no es necesario el proceso de comparación con el servidor de nivel superior.

A continuación se muestra una búsqueda de DNS recursiva:

Una cosa que preocupa acerca de DNS es que un nombre de dominio completo como wikipedia.org o facebook.com solo parece corresponder a un único Dirección IP. Afortunadamente, hay varias formas de eliminar este cuello de botella:

DNS por turnos es una solución cuando se devuelven varias IP durante una búsqueda de DNS. Por ejemplo, Facebook.com en realidad corresponde a cuatro direcciones IP.

Un equilibrador de carga es un dispositivo de hardware que escucha en una dirección IP específica y reenvía solicitudes de red a servidores del clúster. Algunos sitios grandes generalmente utilizan este costoso equilibrador de carga de alto rendimiento.

El DNS geográfico mejora la escalabilidad al asignar nombres de dominio a múltiples direcciones IP diferentes según la ubicación geográfica del usuario. De esta manera, diferentes servidores no pueden actualizar el estado de sincronización, pero es excelente para mapear contenido estático.

Anycast es una tecnología de enrutamiento que asigna una dirección IP a múltiples hosts físicos. El problema es que Anycast no se adapta bien al protocolo TCP, por lo que rara vez se utiliza en esas soluciones.

La mayoría de servidores DNS utilizan Anycast para obtener búsquedas de DNS eficientes y de baja latencia.

3. El navegador envía una solicitud HTTP al servidor web

Porque las páginas dinámicas como la página de inicio de Facebook caducan rápidamente o incluso inmediatamente en la memoria caché del navegador después de abrirse. No puedo leerlo.

Así, el navegador enviará la siguiente solicitud al servidor donde se encuentra Facebook:

GET / HTTP/1.1

Aceptar: application/x-ms -aplicación, imagen/jpeg, aplicación/xaml xml, [...]

Agente de usuario: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...]

Aceptar-Codificación: gzip, deflate

Conexión: Keep-Alive

Host: facebook.com

Cookie: datr=1265876274-[ .. .]; locale=en_US; lsd=WW[...]; c_user=2101[...]

GET Esta solicitud define la URL a leer: "/" definida por el navegador en sí (encabezado User-Agent) y qué tipo de respuesta desea aceptar (encabezado Accept y Accept-Encoding). El encabezado Connection solicita al servidor que no cierre la conexión TCP para solicitudes posteriores. La solicitud también se incluye en el navegador. Cookies almacenadas para este nombre de dominio. Como ya sabrá, las cookies son valores clave que coinciden con el estado de un sitio web durante diferentes solicitudes de página. Las cookies almacenan nombres de usuario de inicio de sesión, contraseñas asignadas por el servidor. y algunas configuraciones del usuario se almacenarán en el cliente como un documento de texto y se enviarán al servidor cada vez que se solicite.

Existen muchas herramientas para ver las solicitudes HTTP originales y sus correspondientes. prefiere usar Fiddler y, por supuesto, también hay herramientas como FireBug. Otras herramientas que ayudarán mucho a optimizar el sitio web.

Además de recibir solicitudes, también hay una solicitud de envío. se usa a menudo para pasar sus parámetros a través de la URL (por ejemplo: /puzzle.aspx?id=85). Sin embargo, una barra como "/" es fundamental en este caso. El navegador puede agregar una barra de forma segura. Para saber si carpetaOrFile es una carpeta o un archivo, no puede agregar automáticamente una barra diagonal. En este momento, el navegador no agrega una barra diagonal y accede a ella directamente, y el servidor responderá con una redirección, lo que provocará un apretón de manos innecesario.

4. Respuesta de redirección permanente del servicio de Facebook

La imagen muestra la respuesta enviada al navegador por el servidor de Facebook:

HTTP/1.1 301 Moved Permanentemente

Control de caché: privado, sin almacenamiento, sin caché, debe revalidar, post-check=0,

pre-check=0

Vence: sábado, 01 de enero de 2000 00:00:00 GMT

Ubicación: /

P3P: CP="DSP LAW"

Pragma: no- caché

Set-Cookie: made_write_conn=eliminado; expira=jueves, 12 de febrero de 2009 05:09:50 GMT

ruta=/; /" en lugar de "/".

¿Por qué el servidor tiene que redirigir en lugar de enviar directamente el contenido de la página web que el usuario quiere ver? Hay muchas respuestas interesantes a esta pregunta.

Entre ellos, una razón tiene que ver con la clasificación en los motores de búsqueda. Verá, si una página tiene dos direcciones, como / y /, los motores de búsqueda pensarán que son dos sitios web, lo que generará menos enlaces de búsqueda para cada uno y búsquedas más bajas. rankings El motor sabe lo que significa la redirección permanente 301, por lo que clasificará las direcciones con y sin www en la misma clasificación del sitio web.

Otro problema es que el uso de diferentes direcciones empeorará la compatibilidad. La página tiene varios nombres, puede aparecer en el caché varias veces.

5. Dirección de redireccionamiento de seguimiento del navegador

Ahora, sabiendo que "/" es la dirección correcta para acceder. , envía otra solicitud de obtención:

GET / HTTP/1.1

Aceptar: aplicación/x-ms-application , imagen/jpeg, aplicación/xaml xml, [...]

Idioma aceptado: en-US

Agente de usuario: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...]

Aceptar codificación: gzip, deflate

Conexión: Keep-Alive

Cookie: lsd=XW[..]; referer=[...]

Anfitrión: www.facebook.com

La información del encabezado se basa en la solicitud anterior. El significado es el mismo.

6. El servidor "procesa" la solicitud.

El servidor recibe la solicitud de obtención, luego la procesa y devuelve una respuesta.

A primera vista, esto parece una tarea sencilla, pero de hecho, sucedieron muchas cosas interesantes en el proceso, como un sitio web simple como el blog del autor, sin mencionar un sitio web con una Gran número de visitas como Facebook!

Software de servidor web

El software de servidor web (como IIS y Apache) recibe una solicitud HTTP y luego determina qué procesamiento de solicitud realizar para manejarla. Un controlador de solicitudes es un programa que puede comprender solicitudes y generar HTML para responder (como ASP.NET, PHP, RUBY...).

Como ejemplo más simple, el procesamiento de demanda se puede almacenar en una jerarquía de archivos que mapea la estructura de direcciones del sitio web. Una dirección como /carpeta1/página1.aspx se asignará a //carpeta1/página1.

Procesamiento de solicitudes

El procesamiento de solicitudes lee la solicitud, sus parámetros y las cookies. Lee y posiblemente actualiza algunos datos y los almacena en el servidor. Luego, el procesamiento de la solicitud genera una respuesta HTML.

Todos los sitios web dinámicos se enfrentan a una dificultad interesante: cómo almacenar datos. La mitad de los sitios web pequeños tendrán una base de datos SQL para almacenar datos. Los sitios web que almacenan grandes cantidades de datos y/o tienen mucho tráfico tienen que encontrar alguna forma de distribuir la base de datos en varias máquinas. Las soluciones incluyen: fragmentación (dispersión de tablas de datos en múltiples bases de datos según valores de clave principal), replicación y bases de datos simplificadas que utilizan una coherencia semántica débil.

Delegar trabajo al procesamiento por lotes es una técnica barata para mantener los datos actualizados. Por ejemplo, Facebook necesita actualizar las noticias de manera oportuna, pero la función "Personas que quizás conozcas" respaldada por datos solo necesita actualizarse todas las noches (el autor especula que este es el caso, pero se desconoce cómo mejorar la función). Las actualizaciones de trabajos por lotes hacen que algunos datos menos importantes queden obsoletos, pero hacen que la actualización de datos sea más rápida y limpia.

7. El servidor devuelve una respuesta HTML

La respuesta generada y devuelta por el servidor en la figura:

HTTP/1.1 200 OK

Control de caché: privado, sin almacenamiento, sin caché, debe revalidar, post-check=0,

pre-check=0

Vence: sábado , 01 de enero de 2000 00:00:00 GMT

P3P: CP="DSP LAW"

Pragma: no-cache

Codificación de contenido: gzip

Tipo de contenido: text/html; charset=utf-8

Conexión X: cerrar

Codificación de transferencia: fragmentada

Fecha: viernes, 12 de febrero de 2010 09:05:55 GMT

2b3Tn@[...]

El tamaño total de la respuesta es 35 kB, la mayor parte del cual se transmite como tipo blob después saneamiento.

El encabezado de codificación de contenido le dice al navegador que todo el cuerpo de la respuesta está comprimido usando el algoritmo gzip. Después de descomprimir el blob, podrá ver el HTML esperado:

" Se necesitan varias URL para volver a obtenerse:

Imágenes

/ajax/chat/buddy_list.php Una solicitud de publicación para obtener la información del estado en línea de tus amigos

Al hablar Sobre este modelo, debemos hablar de "AJAX" - "JavaScript y XML asincrónicos", aunque no hay una razón clara por la cual el servidor responde en formato XML. Tomemos otro ejemplo de solicitud asincrónica, Facebook devolverá algunos fragmentos de código JavaScript.

Entre otras cosas, la herramienta Fiddler le permite ver las solicitudes asincrónicas enviadas por el navegador. De hecho, no solo puede ser un observador pasivo de estas solicitudes, sino que también puede modificarlas y reenviarlas de forma proactiva.

Es muy fácil engañar las solicitudes de AJAX, lo que realmente deprime mucho a los desarrolladores de juegos en línea que llevan la puntuación. (Por supuesto, no le mientas a gente así~)

La función de chat de Facebook proporciona un caso de problema interesante sobre AJAX: enviar datos desde el servidor al cliente. Debido a que HTTP es un protocolo de solicitud-respuesta, el servidor de chat no puede enviar mensajes nuevos al cliente. En cambio, el cliente tiene que sondear el servidor cada pocos segundos para ver si tiene algún mensaje nuevo.

El sondeo largo es una técnica interesante para reducir la carga del servidor cuando se producen estas situaciones. Si el servidor no tiene mensajes nuevos cuando se sondea, ignora al cliente. Cuando se recibe un nuevo mensaje del cliente antes de que pase el tiempo de espera, el servidor encontrará la solicitud incompleta y devolverá el nuevo mensaje al cliente como respuesta.