2011-03-02 9 views
16

Estoy pensando en esta pregunta por mucho tiempo. Es una gran pregunta , ya que casi cubre todas las esquinas relacionadas con el desarrollo web.¿Cuál es el proceso completo desde la introducción de una URL a la barra de direcciones del navegador para obtener la página representada en el navegador?

A mi entender, el proceso debe ser como:

  1. introducir la URL de la barra de direcciones
  2. se enviará una solicitud al servidor DNS basado en la configuración de red
  3. hará DNS ruta usted a la IP real del nombre de dominio
  4. se enviará una solicitud (con el encabezado Http completo) al servidor (con IP de 3 para identificar) de 80 puertos (supongamos que no especificamos otro puerto)
  5. servidor buscará en los puertos de escucha y reenviará la solicitud a la aplicación que está escuchando 80 puertos (digamos nginx aquí) oa otro servidor (entonces el servidor de 3 será como un equilibrador de carga)
  6. nginx intentará hacer coincidir la URL con su configuración y servir como una página estática directamente, o invocar el intérprete de script correspondiente (por ejemplo, PHP/Python) u otra aplicación para obtener el contenido dinámico (con consulta DB u otras lógicas)
  7. un html será enviado de vuelta al navegador con un encabezado de respuesta HTTP completa
  8. navegador va a analizar el DOM de hTML utilizando su programa de análisis
  9. recursos externos (JS/CSS/images/flash/vídeos ..) se solicitará en secuencia (o no?)
  10. para la JS, que será ejecutado por el motor de JS
  11. para CSS, será generado por el motor de CSS y se basará la pantalla del HTML ajustado en el CSS (también en secuencia o no ?)
  12. si hay un iframe en el DOM, a continuación, un mismo proceso separado se ejecutará desde el paso 1-12

lo anterior es mi entendimiento, pero no sé si es correcto o no? ¿Cuán preciso? ¿Me he perdido algo?

Si es correcta (o casi correcta), espero:

  1. Hacer la descripción del paso más preciso en sus palabras, o escribir sus pasos si hay un gran cambio
  2. Hacer una explicación profunda de cada paso con el que estás más familiarizado
  3. Una respuesta por paso. Otros pueden hacer un suplemento en el comentario de cada respuesta.

Y espero que este hilo pueda ayudar a todos los desarrolladores web a tener una mejor comprensión de lo que hacemos todos los días.

Y voy a actualizar esta pregunta en función de las respuestas.

Gracias.

+3

http://www.vladstudio.com/de/wallpaper/?how_internet_works/800x600/low ;-) Buena pregunta. +1 – Boldewyn

+0

Relacionado: Cómo se procesan las páginas web ASP.NET en el servidor web - http://www.4guysfromrolla.com/articles/011404-1.aspx – mvark

+0

+1 Esta pregunta me ha sido solicitada en muchas entrevistas. Es bueno encontrarlo aquí. Sería genial tener esta pregunta como punto de partida y seguir los enlaces de aquí a otras preguntas que explican los detalles más finos de los pasos involucrados. Buen trabajo ... –

Respuesta

5

Como dices, esta es una pregunta amplia en la que es posible entrar en gran detalle sobre una serie de temas. No hay nada de malo en la secuencia que describió, pero está omitiendo muchos detalles.Para mencionar algunos:

  • La capa de DNS puede ayudar a los clientes directos a diferentes servidores basados ​​en la localización geográfica para ayudar con el equilibrio de carga y la reducción al mínimo de latencia, y un servidor puede responder a las peticiones de muchos diferentes nombres DNS.
  • Un navegador puede hacer diferentes tipos de solicitudes (GET, POST, HEAD, etc.) y generalmente incluye varios encabezados diferentes, incluidas cookies, capacidades del navegador, preferencias de idioma, etc.
  • La mayoría de los navegadores suelen mantener un caché para Evite descargar cosas muchas veces y use varias técnicas para determinar si la versión en caché de un archivo es válida.
  • En las páginas web modernas a menudo hay interacción compleja entre muchos tipos diferentes de archivos (HTML, CSS, imágenes, JavaScript, video, Flash, ...), y los desarrolladores web a menudo necesitan un conocimiento detallado de las diferencias entre navegadores para mantener sus páginas que funcionan para todos

Cada uno de estos temas, y muchos más, podrían debatirse extensamente. Tal vez sea más práctico hacer preguntas más específicas sobre los temas que le interesan.

0

Puedo describir un punto aquí -

Determinar qué archivo/recurso para ejecutar, que intérprete de lenguaje para cargar.

Disculpe si me equivoco al usar el intérprete aquí. Puede haber otros errores en mi respuesta, intentaré corregirlos más tarde e incluir los términos técnicos adecuados para las cosas.

Cuando el servidor web (por ejemplo, apache) ha recibido el URI comprueba si existe alguna regla de reescritura que coincida con él. En ese caso, se toma el URI reescrito. En cualquier caso, si no hay un nombre de archivo para finalizar el URI, se carga el archivo predeterminado, que generalmente es index.html o index.php, etc. Según la extensión del nombre del archivo, el módulo de apache apropiado para el lado del servidor el soporte del lenguaje de programación está cargado, por ejemplo mod_php para PHP, mod_python en el caso de python. El intérprete de lenguaje del lado del servidor apropiado (considerando los lenguajes interpretados como PHP) luego prepara el HTML final o la salida en alguna otra forma para el servidor web que finalmente lo envía como la respuesta HTTP.

-1

yo también estaba buscando la misma cosa y que esta respuesta detallada impresionante en construcción colaborativa en github

+0

No publique respuestas solo de enlace. En su lugar, incluya todos los detalles necesarios como parte de su publicación. – Werner

+0

No habría podido crear la profundidad de la respuesta que se está construyendo allí en github. Aunque pensé que podría ser útil compartir el enlace. –

+0

Estos tipos de "respuestas" son más adecuados como un comentario. Y aún no tienes ese privilegio. Procederá de contribuciones valiosas al sitio ... con el tiempo. – Werner

Cuestiones relacionadas