在浏览器中键入URL时会发生什么

时间:2010-01-19 09:46:45

标签: browser

当我在浏览器中输入网址到浏览器上的页面时,有人能告诉我幕后会发生什么吗?详细介绍这个过程将会有很大的帮助。

3 个答案:

答案 0 :(得分:578)

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

  1. 浏览器检查缓存;如果请求的对象在缓存中并且是新鲜的,请跳至#9
  2. 浏览器询问操作系统的服务器IP地址
  3. 操作系统进行DNS查找并将IP地址回复给浏览器
  4. 浏览器打开与服务器的TCP连接(此步骤与HTTPS相比要复杂得多)
  5. 浏览器通过TCP连接发送HTTP请求
  6. 浏览器接收HTTP响应,可以关闭TCP连接,或将其重新用于其他请求
  7. 浏览器检查响应是重定向还是条件响应(3xx结果状态代码),授权请求(401),错误(4xx和5xx)等;这些处理方式与正常答案(2xx)
  8. 不同
  9. 如果可缓存,则响应存储在缓存中
  10. 浏览器解码响应(例如,如果它被gzip压缩)
  11. 浏览器确定如何处理响应(例如,它是HTML页面,是图像,是声音剪辑吗?)
  12. 浏览器呈现响应,或为无法识别的类型提供下载对话框
  13. 再次,对这些要点的讨论已经填满了无数页;为了清楚起见,仅将其作为总结,删节。此外,还有许多其他事情与此并行(处理输入的地址,推测预取,添加页面到浏览器历史记录,向用户显示进度,通知插件和扩展,在下载时呈现页面,流水线,连接跟踪保持活跃,cookie管理,检查恶意内容等等) - 整个操作使用HTTPS(证书和密码和固定,哦,我的!)会变得更复杂。

答案 1 :(得分:39)

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

然后,您的浏览器打开与目标主机的TCP连接,并根据HTTP 1.1发送请求(或者可能使用HTTP 1.0,但普通浏览器不再执行此操作)。

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

然后,浏览器使用HTML解析器重新创建文档结构,稍后将在屏幕上显示该文档结构。如果它找到对外部资源的引用,例如图片,css文件,javascript文件,则它们的传递方式与HTML文档本身相同。

答案 2 :(得分:3)

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