2011-01-27 17 views
27

Recientemente comencé mi trabajo como desarrollador backend de aplicaciones web. Estoy un poco atrapado en comprender el ciclo de vida de una solicitud HTTP.Http Request Life Cycle

lo que he entendido es

  • Cada petición HTTP primeros contacto con un servidor DNS que se resuelve la solicitud de URL de dominio a una dirección IP.
  • Después de recuperar la solicitud de dirección IP del servidor web se le reenvía (a través de la solicitud PUT). Un servidor web como apache maneja esta solicitud y lo reenvía a la aplicación que tiene que manejar esto.

Después de esto estoy perdido con

  • Como respuesta se envía por la aplicación para el usuario que lo ha solicitado y se Apcache involucrado en esto?
  • ¿Puedo ver todo el flujo en mi navegador con algunas herramientas de depuración?
  • ¿Alguien puede recomendar algunos enlaces para comprender esto en profundidad?
+0

Agregando un enlace: [2.2 La World Wide Web: HTTP] (http://jpkc.ncwu.edu.cn/jsjwl/net/kurose/apps/http.htm) –

+0

Arriba como ahora está muerto, agregando nuevo uno que encontré [Protocolos web] (https://www3.ntu.edu.sg/home/ehchua/programming/#webapp) –

Respuesta

67

Creo que está un poco equivocado en su comprensión de la misma.

Si vas a www.google.com (no usar cualquier forma, que sólo quieren el sitio), esto es lo que sucede:

  1. primer lugar, el navegador tiene que traducir www.google.com a una IP dirección si aún no lo sabe. Si lo sabe, nada sucede en este punto. Si no lo sabe, se pone en contacto con un servidor DNS para resolver el nombre.
  2. A continuación, el navegador abrirá una conexión TCP a la dirección IP de www.google.com y enviará una solicitud HTTP GET. En este ejemplo, será
    GET/HTTP/1.1
    Host: www.google.com
  3. El software del servidor obtendrá esta solicitud HTTP. De alguna manera generará una respuesta HTTP y la enviará a través de la conexión TCP. La forma en que el servidor hace esto depende del software del servidor. Por ejemplo, puede conectar el código de la aplicación en Apache o simplemente hacer que Apache devuelva un archivo del sistema de archivos. PHP es una aplicación llamada por algún software, que luego genera la respuesta enviada al navegador. Cuando se envía la respuesta, en la versión HTTP 1.0, la conexión se cierra. HTTP 1.1 puede tener conexiones persistentes sin embargo.
  4. Cuando el navegador obtiene la respuesta, normalmente la muestra en pantalla. La solicitud HTTP ahora está hecha. Un clic en "buscar" enviará una nueva solicitud al servidor.

GET, PUT, POST, DELETE y others son HTTP request methods. Tienen un significado especial que puedes ver en el RFC.

Cookies se usan comúnmente para identificar al mismo usuario en varias solicitudes HTTP, llamadas sesiones. Por lo tanto, estas cookies se llaman cookies de sesión

Puede depurar la comunicación utilizando una herramienta de detección de red, por ejemplo Wireshark. Firefox tiene un complemento de terceros llamado Tamper Data que puede cambiar la solicitud antes de que se envíen al servidor.

El HTTP RFC es una buena fuente de cómo funciona todo.

Espero que ayude.

+0

cómo la respuesta del lado del cliente se envía correctamente a la ventana/pestaña/aplicación correcta que tiene planteó la solicitud – Poorna

+1

El lado del cliente tiene un control para alguna conexión TCP. Solo el cliente leerá de él, por lo que el cliente debe saber dónde irá el contenido de una conexión TCP. Básicamente, depende de cómo se codifica la aplicación. – foens

+0

¿Cuándo se cerrará la conexión TCP? – MrROY

1

mientras el servidor recibe la solicitud del navegador, el navegador se vinculará a algún puerto en el host, la dirección IP y el número de puerto del navegador se adjuntarán a la solicitud que se envía al servidor. el servidor envía la respuesta a la dirección IP y al número de puerto

+1

no se resuma usted mismo cuando ayuda a alguien. – Hamad

2

Esta es una de las preguntas frecuentes de las entrevistas que se hacen en varias compañías basadas en productos.

HTTP Es un protocolo de solicitud-respuesta. Por ejemplo, un agente de usuario inicia una solicitud a un servidor, generalmente abriendo una conexión TCP/IP a un puerto particular en un host (puerto 80 por defecto). La propia solicitud comprende:

una línea de petición,

un conjunto de encabezados de solicitud, y una entidad.

Un servidor HTTP que escucha en ese puerto espera a que el cliente envíe un mensaje de solicitud. Al recibir la solicitud, el servidor envía una respuesta que comprende:

una línea de estado, un conjunto de encabezados de respuesta, y una entidad. La entidad en la solicitud o respuesta se puede considerar simplemente como la carga útil, que puede ser datos binarios. Los otros elementos son caracteres ASCII legibles. Cuando la respuesta se haya completado, el navegador o el servidor pueden finalizar la conexión TCP/IP o el navegador puede enviar otra solicitud.