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。