有人可以告诉我,从我在浏览器中输入URL到我看到页面的整个过程中都发生了什么?详细的过程描述将会非常有帮助。
有人可以告诉我,从我在浏览器中输入URL到我看到页面的整个过程中都发生了什么?详细的过程描述将会非常有帮助。
注意:这是一个极为简化的草图,假设最简单的HTTP请求(没有HTTPS,没有HTTP2,没有其他额外的内容),最简单的DNS,没有代理,单栈IPv4,只有一个HTTP请求,另一端有一个简单的HTTP服务器,且各个步骤都没有问题。在当今大部分情况下,这是一个不切实际的场景;实际使用中所有这些步骤都要复杂得多,并且技术栈自该文写作以来已经增加了一个数量级。考虑到这一点,以下时间轴仍然在某种程度上有效:
这些点的讨论已经填满了无数页,以下仅为概述,为了清晰起见而删节。此外,还有许多其他事情与此同时发生(处理输入的地址,预取,将页面添加到浏览器历史记录中,向用户显示进度,通知插件和扩展程序,在下载页面时呈现页面,管道化,保持连接跟踪,cookie管理,检查恶意内容等),并且使用HTTPS会使整个操作变得复杂一个数量级(证书、密码和固定等)。
首先,计算机会查找目标主机。如果目标主机存在于本地DNS缓存中,则使用该信息。否则,进行DNS查询直到找到IP地址。
然后,您的浏览器打开与目标主机的TCP连接,并根据HTTP 1.1发送请求(或者可能使用HTTP 1.0,但是普通浏览器不再这样做)。
服务器查找所需资源(如果存在),并使用HTTP协议响应,将数据发送给客户端(即您的浏览器)。
然后,浏览器使用HTML解析器重新创建文档结构,稍后呈现在屏幕上。如果它发现对外部资源的引用,例如图片、CSS文件、JavaScript文件,则会以与HTML文档本身相同的方式传递。