输入URL后的加载过程

输入url后的加载过程

从输入 URL 到页面加载完成的过程中都发生了什么

计算机网络体系结构

  • 应用层(HTTP、SMTP、FTP、POP3)
  • 运输层(TCP、UDP)
  • 网络层(IP(路由器))
  • 数据链路层(网桥(CSMA/CD、PPP))
  • 物理层(集线器)

1. 查找域名对应IP地址

这一步包括 DNS 具体的查找过程,包括:浏览器缓存->系统缓存->路由器缓存...
(1) 浏览器搜索自己的 DNS 缓存(维护一张域名与 IP 地址的对应表);
(2) 搜索操作系统中的 DNS 缓存(维护一张域名与 IP 地址的对应表);
(3) 搜索操作系统的 hosts 文件( Windows 环境下,维护一张域名与 IP 地址的对应表);
(4) 操作系统将域名发送至 LDNS(本地区域名服务器),LDNS 查询 自己的 DNS 缓存(一般查找成功率在 80% 左右),查找成功则返回结果,失败则发起一个迭代 DNS 解析请求

① LDNS 向 Root Name Server (根域名服务器,如 com、net、org等的解析的顶级域名服务器的地址)发起请求,此处,Root Name Server 返回 com 域的顶级域名服务器的地址;

② LDNS 向 com 域的顶级域名服务器发起请求,返回 baidu.com 域名服务器地址;

③ LDNS 向 baidu.com 域名服务器发起请求,得到 www.baidu.com 的 IP 地址;

(5) LDNS 将得到的 IP 地址返回给操作系统,同时自己也将 IP 地址缓存起来;

(6) 操作系统将 IP 地址返回给浏览器,同时自己也将 IP 地址缓存起来;

2. 建立连接(TCP的三次握手)

(1) 主机向服务器发送一个建立连接的请求;

(2) 服务器接到请求后发送同意连接的信号;

(3) 主机接到同意连接的信号后,再次向服务器发送了确认信号 ;

注意:这里的三次握手中主机两次向服务器发送确认,第二次是为了防止已失效的连接请求报文段传至服务器导致错误。

3. 构建网页

(1) 浏览器根据 URL 内容生成 HTTP 请求,请求中包含请求文件的位置、请求文件的方式等等;

(2) 服务器接到请求后,会根据 HTTP 请求中的内容来决定如何获取相应的 HTML 文件;

(3) 服务器将得到的 HTML 文件发送给浏览器;

(4) 在浏览器还没有完全接收 HTML 文件时便开始渲染、显示网页;

(5) 在执行 HTML 中代码时,根据需要,浏览器会继续请求图片、音频、视频、CSS、JS等文件,过程同请求 HTML ;

浏览器渲染展示网页过程

  1. HTML代码转化为DOM(DOM Tree)
  2. CSS代码转化成CSSOM(CSS Object Model)
  3. 结合DOM和CSSOM,生成一棵渲染树(包含每个节点的视觉信息)(Render Tree)
  4. 生成布局(layout),即将所有渲染树的所有节点进行平面合成
  5. 将布局绘制(paint)在屏幕上

4. 断开连接(TCP的四次挥手)

(1) 主机向服务器发送一个断开连接的请求;

(2) 服务器接到请求后发送确认收到请求的信号;(此时服务器可能还有数据要发送至主机)

(3) 服务器向主机发送断开通知;(此时服务器确认没有要向主机发送的数据)

(4) 主机接到断开通知后断开连接并反馈一个确认信号,服务器收到确认信号后断开连接;

注意:这里的四次挥手中服务器两次向主机发送消息,第一次是回复主机已收到断开的请求,第二次是向主机确认是否断开,确保数据传输完毕。

输入URL后的加载过程_第1张图片

三次握手 && 四次挥手



作者:WangChloe
链接:https://www.jianshu.com/p/3944732228f0
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

你可能感兴趣的:(输入URL后的加载过程)