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

372 阅读2分钟
  • 1.浏览器缓存,查看能不能走缓存,如果有直接显示
  • 2.不能,DNS解析获取IP地址,
  • 3.进行HTTP会话,浏览器向服务器发起TCP连接,与浏览器三次握手
  • 4.客户端发送请求报头,请求数据包
  • 5.服务端返回响应报头,将数据返回浏览器
  • 6.浏览器接收响应,下载HTML文档,解析生成DOM树
  • 8.网页显示

TCP:传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,三次握手过程中,若一方收不到确认信号,协议会要求重新发送信号。

TCP三次握手:
  • 主机向服务器发送一个建立连接的请求;(SYN)
  • 服务器接到请求后,向主机发送同意连接的信号;(SYN+ACK)
  • 主机接到同意连接的信号后,再次向服务器发送了确认信号(ACK)
  • 连接完成
四次挥手
  • 主机向服务器发送一个断开连接的请求;
  • 服务器接到请求后发送确认收到请求的信号;
  • 服务器向主机发送断开通知;
  • 主机接到断开通知后断开连接并反馈一个确认信号,服务器收到确认信号后断开连接;
为什么服务器在接到断开请求时不立即同意断开:
当服务器收到断开连接的请求时,可能仍然有数据未发送完毕,所以服务器先发送确认信号,等所有数据发送完毕后再同意断开。
第四次握手后,主机发送确认信号后并没有立即断开连接,而是等待了 2 个报文传送周期,原因是:
如果第四次握手的确认信息丢失,服务器将会重新发送第三次握手的断开连接的信号,而服务器发觉丢包与重新发送的断开连接到达主机的时间正好为2个报文传输周期。