谁能告诉我,从我在浏览器中输入URL到我在浏览器中看到页面,幕后发生了什么?对这一过程的详细描述将会很有帮助。
查找HTTP规范。或者尝试http://www.jmarshall.com/easy/http/来开始
首先,计算机查找目标主机。如果它存在于本地DNS缓存中,它将使用该信息。否则,将继续进行DNS查询,直到找到IP地址为止。
然后,浏览器打开到目标主机的TCP连接,并根据HTTP 1.1(也可能使用HTTP 1.0,但普通浏览器不再这样做)发送请求。
服务器查找所需的资源(如果存在)并使用HTTP协议进行响应,将数据发送给客户端(=您的浏览器)
然后,浏览器使用HTML解析器重新创建文档结构,稍后在屏幕上呈现给您。如果它找到了外部资源的引用,比如图片、css文件、javascript文件,这些都是以与HTML文档本身相同的方式传递的。
注意:这是一个非常粗略的过于简单化的草图,假设最简单的HTTP请求(没有HTTPS,没有HTTP2,没有额外的服务),最简单的DNS,没有代理,单栈IPv4,只有一个HTTP请求,另一端是一个简单的HTTP服务器,任何步骤都没有问题。对于大多数当代的意图和目的来说,这是一个不现实的场景;所有这些在实际使用中都要复杂得多,自本文撰写以来,技术堆栈已经变得更加复杂了一个数量级。考虑到这一点,下面的时间表仍然是有效的:
同样,关于这些观点的讨论已经占据了无数页;这只是一个摘要,为了清楚起见,略去了一些。此外,还有许多其他事情与此并行(处理输入地址,推测预取,将页面添加到浏览器历史记录,向用户显示进度,通知插件和扩展,在下载时呈现页面,管道,连接跟踪以保持活跃,cookie管理,检查恶意内容等)-整个操作在HTTPS(证书、密码和固定,哦,天哪!)