浏览器输入Url到页面渲染发生了什么

1. 输入网址

2. 缓存解析

  • 浏览器缓存:浏览器会记录DNS一段时间,因此,只是第一个地方解析DNS请求;
  • 操作系统缓存:如果在浏览器缓存中不包含这个记录,则会使系统调用操作系统,获取操作系统的记录(保存最近的DNS查询缓存);
  • 路由器缓存:如果上述两个步骤均不能成功获取DNS记录,继续搜索路由器缓存;
  • ISP缓存:若上述均失败,继续向ISP搜索。

3. 域名解析,解析获取相应的IP地址

4. 浏览器向服务器发起tcp连接,与浏览器建立tcp三次握手。

  1. 发送端首先发送一个带有SYN(synchronize)标志地数据包给接收方。
  2. 接收方接收后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了。
  3. 最后,发送方再回传一个带有ACK标志的数据包,代表我知道了,表示’握手‘结束。

5. 握手成功后,浏览器向服务器发送http请求,请求数据包

6. 服务器处理收到的请求,将数据返回至浏览器

7. 浏览器收到HTTP响应并渲染页面

8. 断开链接(四次挥手)

  1. 第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
  2. 第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
  3. 第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
  4. 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手
为什么客户端与服务器断开连接是四次挥手呢?主要是因为当客户端告诉服务器想断开连接的时候,服务器的数据不一定已处理完毕,所以服务器是先告诉客户端说已经收到了它想断开连接的请求,然后当服务器中数据处理完毕时,便通知客户端并请求断开连接,客户端收到后便断开连接并通知服务器,服务器收到后才断开连接。
posted @ 2021-03-29 15:32  fengwenqi  阅读(67)  评论(0编辑  收藏  举报