从浏览器输入url到显示主页的过程

1. DNS 解析:浏览器查询 DNS,获取域名对应的 IP 地址:具体过程包括浏览器搜索自身的 DNS 缓存搜索操作系统的 DNS 缓存读取本地的 Host 文件向本地 DNS 服务器进行查询等。对于向本地 DNS 服务器进行查询,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析(此解析具有权威性);如果要查询的域名不由本地 DNS 服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个 IP 地址映射,完成域名解析(此解析不具有权威性)。如果本地域名服务器并未缓存该网址映射关系,那么将根据其设置发起递归查询或者迭代查询用到的协议有DNS协议,

其中DNS解析过程:

1. 主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的 IP 地址,或者是报错,表示无法查询到所需的 IP 地址。

2. 本地域名服务器向根域名服务器的查询迭代查询。迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的 IP 地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的 IP 地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,本地域名服务器得到了所要解析的 IP 地址或报错,然后把这个结果返回给发起查询的主机。

2. TCP 连接:浏览器获得域名对应的 IP 地址以后,浏览器向服务器请求建立链接,发起三次握手;

3. 发送 HTTP 请求:TCP 连接建立起来后,浏览器向服务器发送 HTTP 请求;

4. 服务器处理请求并返回 HTTP 报文:服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器;

5. 浏览器解析渲染页面:浏览器解析并渲染视图,若遇到对 js 文件、css 文件及图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源;浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面。

6. 连接结束

每个阶段用到的协议:

  • DNS协议:获取域名对应IP
  • TCP协议:与服务器建立TCP连接
  • IP协议:建立TCP协议时需要发送数据,发送数据在网络层使用IP协议
  • OPSF:IP数据包在路由器之间,路由选择使用OSPF协议
  • ARP协议:路由器在与服务器通信时,需将IP地址转换为MAC地址,需使用ARP
  • HTTP协议:在TCP建立完成之后,使用HTTP协议访问页面

盗张图,地址为https://mp.weixin.qq.com/s?__biz=MzUxNzY4NTM3OQ==&mid=2247483798&idx=1&sn=d0c702e1f9990c30449f519cea208acb&chksm=f995287acee2a16ce9a4b9ec968260128b7d3b4c284e2a879ecb7e2152b33e186cd843c8c0df&mpshare=1&scene=1&srcid=&sharer_sharetime=1569242375168&sharer_shareid=e9a9b4dd9dc2d8ed514b4597e4b32133&pass_ticket=XFeKN3Jt4LiZkHuPLb7pVwy09l8nGnnqgMqQum43mmg%3D#rd