一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?

49 阅读1分钟

1、浏览器的地址栏输入URL并按下回车。

2、浏览器查找当前URL是否存在缓存,并比较缓存是否过期。

3、DNS解析URL对应的IP。

4、根据IP建立TCP连接(三次握手)。

1. 浏览器向服务器发送 TCP 数据:SYN(seq=x) 
2. 服务器向浏览器发送 TCP 数据:ACK(seq=x+1) SYN(y) 
3. 浏览器向服务器发送 TCP 数据:ACK(seq=y+1)

5、HTTP发起请求。

6、服务器处理请求,浏览器接收HTTP响应。

7、渲染页面,构建DOM树。

8、关闭TCP连接(四次挥手)。

1. 浏览器向服务器发送 TCP 数据:FIN(seq=x) 
2. 服务器向浏览器发送 TCP 数据:ACK(seq=x+1) 
3. 服务器向浏览器发送 TCP 数据:FIN(seq=y) 
4. 浏览器向服务器发送 TCP 数据:ACK(seq=y+1
为什么 2、3 步骤不合并起来呢? 
答案:2、3 中间服务器很可能还有数据要发送,不能提前发送 FIN。