当您在浏览器中输入网址时会发生什么情况

有人可以告诉我从浏览器中输入URL的时间到在浏览器上看到页面的时间,幕后发生了什么? 这个过程的详细说明会有很大的帮助。


注意:假设最简单的HTTP请求(没有HTTPS,没有HTTP2,没有额外的),最简单的DNS,没有代理,单栈IPv4,只有一个HTTP请求,一个简单的HTTP服务器,这是一个非常粗略和过于简化的草图另一端,任何一步都没有问题。 对于大多数当代意图和目的而言,这是一种不切实际的情景; 所有这些在实际使用中都要复杂得多,而且自从写成这个技术堆栈以来,这个技术堆栈就变得更加复杂了。 考虑到这一点,以下时间表仍然有些有效:

  • 浏览器检查缓存; 如果请求的对象在缓存中并且是新鲜的,请跳至#9
  • 浏览器向操作系统请求服务器的IP地址
  • OS进行DNS查找并将IP地址回复给浏览器
  • 浏览器打开一个到服务器的TCP连接(这一步对于HTTPS来说更复杂)
  • 浏览器通过TCP连接发送HTTP请求
  • 浏览器接收到HTTP响应并可能关闭TCP连接,或将其重新用于其他请求
  • 浏览器检查响应是重定向还是条件响应(3xx结果状态码),授权请求(401),错误(4xx和5xx)等。 这些处理不同于正常响应(2xx)
  • 如果可缓存,则响应存储在缓存中
  • 浏览器解码响应(例如,如果它被解压缩)
  • 浏览器决定如何处理响应(例如,它是一个HTML页面,它是一个图像,是一个声音剪辑?)
  • 浏览器呈现响应,或为无法识别的类型提供下载对话框
  • 再次,对这些点的讨论填补了无数页面; 为了清楚起见,仅以总结为目的。 此外,还有许多其他的事情并行发生的这个(键入的处理地址,投机性的预取,添加页面,浏览器历史记录,显示给用户的进度,通知插件和扩展,渲染页面,同时它的下载,流水线,用于连接跟踪保持活跃,cookie管理,检查恶意内容等) - 并且整个操作在HTTPS(证书和密码以及pinning,噢,我的!)方面会变得更加复杂。


    首先,计算机查找目标主机。 如果它存在于本地DNS缓存中,它将使用该信息。 否则,将执行DNS查询,直到找到IP地址。

    然后,浏览器打开一个到目标主机的TCP连接,并根据HTTP 1.1发送请求(或者可能使用HTTP 1.0,但普通浏览器不再这样做)。

    服务器查找所需的资源(如果存在)并使用HTTP协议进行响应,将数据发送到客户端(=您的浏览器)

    然后浏览器使用HTML解析器重新创建稍后在屏幕上呈现给您的文档结构。 如果它发现对外部资源(如图片,css文件,JavaScript文件)的引用,则这些文件以与HTML文档本身相同的方式传递。


    查找HTTP的规范。 或者要开始,请尝试http://www.jmarshall.com/easy/http/

    链接地址: http://www.djcxy.com/p/42185.html

    上一篇: what happens when you type in a URL in browser

    下一篇: Auto detect mobile browser (via user