浏览器从输入URL后到出现页面,这个过程发生了什么?

浏览器从输入URL后到出现页面,这个过程发生了什么?
最新回答
盖世傻白甜

2021-07-05 23:59:11

互联网发达的时代,当我们遇到什么问题时,总会习惯性的去网络上查找答案。本人也是一样,开发时遇到问题就会习惯性的打开"度娘"寻找我们的答案。
哪有没有朋友像我们一样,也会好奇当前我们在浏览器输入网址之后,浏览器做了些什么呢?

URL 解析、缓存查询,DNS 解析、TCP 连接、处理请求、接受响应、渲染页面

首先判断你输入的是一个合法的 URL 还是一个待搜索的关键词,并且根据你输入的内容进行自动完成字符编码等操作。

DNS解析,把域名转化成IP地址后,服务器会对连接请求做出响应,表示同意建立连接。

服务器开始构建响应,创建一条http响应报文,把资源信息放到响应体里面开始返回

http请求响应,都有一个状态码返回,用来标记这次返回的状态。一般有以下几种状态码:200、302、404、500、504。浏览器会根据状态码,做出相应的动作,遇到200会接受正常返回信息,开始渲染页面。遇到302,则会根据http响应头的location字段,再次发起一次地址是location的网络请求,遇到4开头和5开头的错误,则不会正常渲染,会提示相应的错误。

三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。

刚开始客户端处于 Closed 的状态,服务端处于 Listen 状态。

建立一个连接需要三次握手,而终止一个连接要经过四次挥手(也有将四次挥手叫做四次握手的)。这由TCP的半关闭(half-close)造成的。所谓的半关闭,其实就是TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力。

TCP 的连接的拆除需要发送四个包,因此称为四次挥手(Four-way handshake),客户端或服务器均可主动发起挥手动作。

刚开始双方都处于 ESTABLISHED(建立) 状态

参考:
https://zhuanlan.zhihu.com/p/86426969

参考:
https://www.jianshu.com/p/546b2a175f89