Http请求生命周期

时间:2011-01-27 09:19:00

标签: apache http httpwebrequest

我最近开始担任Web应用程序后端开发人员。我对理解Http请求的生命周期感到有点困惑。

我理解的是

  • 每个Http请求首先联系DNS服务器,该服务器将请求URL域解析为IP地址。
  • 获取Web服务器后,IP地址请求被转发给它(通过PUT请求)。像apache这样的网络服务器会处理这个请求并将其转发给必须处理此问题的应用程序。

在此之后我迷失了

  • 应用程序如何将响应发送给请求它的用户,Apcache是​​否会参与此活动?
  • 我可以使用一些调试工具在浏览器中查看整个流程吗?
  • 有人可以参考某些链接深入了解这一点吗?

4 个答案:

答案 0 :(得分:81)

我认为你对它的理解有点不对。

如果你去www.google.com(不使用任何表格,只是想要网站),这就是:

  1. 首先,浏览器需要将www.google.com转换为IP地址,如果它还不知道的话。如果它知道,此时没有任何反应。如果它不知道,它会联系DNS服务器来解析名称。
  2. 然后,浏览器将打开与www.google.com IP地址的TCP连接,并发送HTTP GET请求。在这个例子中它将是
    GET / HTTP/1.1
    Host: www.google.com
  3. 服务器软件将收到此HTTP请求。它会以某种方式生成HTTP响应并通过TCP连接发回。服务器如何做到这一点取决于服务器软件。例如,您可以在Apache中插入应用程序代码,或者只是让Apache从文件系统返回一个文件。 PHP是由某些软件调用的应用程序,然后生成发送到浏览器的响应。发送响应时,在HTTP版本1.0中,连接将关闭。 HTTP 1.1可以有持久连接。
  4. 当浏览器获得响应时,通常会在屏幕上呈现它。 HTTP请求现在已完成。单击“搜索”将向服务器发送新请求。
  5. GET,PUT,POST,DELETE等是HTTP request methods。它们具有特殊含义,您可以在RFC中看到。

    Cookies通常用于跨多个HTTP请求标识同一用户,称为会话。因此,这些cookie称为会话cookie

    您可以使用网络嗅探器工具调试通信,例如Wireshark。 Firefox有一个名为Tamper Data的第三方插件,可以在将请求发送到服务器之前更改请求。

    HTTP RFC是如何运作的良好来源。

    希望它有所帮助。

答案 1 :(得分:2)

当服务器收到来自浏览器的请求时,浏览器将被绑定到主机上的某个端口,浏览器的IP地址和端口号将附加发送给服务器的请求。服务器将响应发送到IP地址和端口号

答案 2 :(得分:2)

这是各种产品公司提出的热门访谈问题之一。

HTTP是请求 - 响应协议。例如,用户代理通常通过打开与主机上特定端口(默认为端口80)的TCP / IP连接来向服务器发起请求。请求本身包括:

请求行

一组请求标头,以及 一个实体。

侦听该端口的HTTP服务器等待客户端发送请求消息。收到请求后,服务器发送包含以下内容的响应:

状态行, 一组响应标头,和 一个实体。 请求或响应中的实体可以简单地被认为是有效载荷,其可以是二进制数据。其他项目是可读的ASCII字符。响应完成后,浏览器或服务器可以终止TCP / IP连接,或者浏览器可以发送另一个请求。

答案 3 :(得分:0)

我发现此资源对于了解HTTP lifecycle期间采取的步骤非常有帮助:尽管实际上非常有趣,但他并没有意识到所有中间步骤,尤其是在确定IP Address时需要进行缓存检查网址。

https://medium.com/@maneesha.wijesinghe1/what-happens-when-you-type-an-url-in-the-browser-and-press-enter-bb0aa2449c1a