当我在浏览器中输入网址到浏览器上的页面时,有人能告诉我幕后会发生什么吗?详细介绍这个过程将会有很大的帮助。
答案 0 :(得分:578)
注意:这是一个非常粗略且过度简化的草图,假设最简单的HTTP请求(没有HTTPS,没有HTTP2,没有额外的),最简单的DNS,没有代理,单栈IPv4,仅一个HTTP请求,另一端是简单的HTTP服务器,任何步骤都没有问题。对于大多数当代意图和目的而言,这是一个不切实际的场景;所有这些在实际使用中都要复杂得多,而且自编写以来,技术堆栈已变得更加复杂。考虑到这一点,以下时间表仍然有效:
再次,对这些要点的讨论已经填满了无数页;为了清楚起见,仅将其作为总结,删节。此外,还有许多其他事情与此并行(处理输入的地址,推测预取,添加页面到浏览器历史记录,向用户显示进度,通知插件和扩展,在下载时呈现页面,流水线,连接跟踪保持活跃,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/