admin管理员组

文章数量:1567745

[真实IP地址查询—DNS]

浏览器解析URL并生成HTTP消息后,需要委托操作系统将消息发送给Web服务器,此时必须提供服务器对应的IP地址,有一种服务器专门保存了Web服务器域名与IP地址的关系,它就是DNS服务器。

DNS是什么?

DNS即域名系统

  • 是一个由分层的DNS服务器实现的分布式数据库
  • 一个使得主机能够查询分布式数据库的应用层协议

DNS是一个分布式数据库,整个DNS系统由分散在世界各地的很多台DNS服务器组成,这些DNS保存了一些数据,这些数据可以帮助我们找到最终的主机服务器对应的IP地址。

分布式:这个世界上没有一台服务器拥有因特网上所有主机的映射,每台DNS只负责部分映射。
层级关系:域名的层级关系类似一个树状结构,以www.server.为例,句点“.”代表了不同层级之间的界限,越靠右的位置表示的层次越高。

  1. 根DNS服务器(.)
  2. 顶级域DNS服务器(com)
  3. 权威DNS服务器(server)

根DNS服务器信息保存在互联网中所有的DNS服务器中,因此,客户端只需要能够找到任意一台DNS服务器就可以通过它找到根域服务器,通过询问根域就可以得到主机名对应的顶级域服务器的IP地址,再去找下一台对应的顶级域DNS服务器,通过顶级域DNS得到下一级权威DNS的IP地址,找到权威DNS服务器,通过权威DNS服务器返回主机-IP的最终映射。

域名解析的查询流程

  1. 输入URL,操作系统会先查hosts文件是否有记录,有的话就把相应映射的IP返回,没有就去本地DNS服务器,客户端发送一个DNS请求,并发送给本地DNS服务器(就是在客户端的TCP/IP设置中填写的DNS服务器地址)
  2. 本地域名服务器如果能在缓存中找到直接返回IP地址,如果没有则会去询问根域名服务器。根域名通过观察www.server告诉本地DNS服务器对应的顶级域DNS服务器的地址
  3. 本地DNS又去询问顶级域服务器,顶级域告诉本地服务器对应server的权威服务器的地址,权威服务器将查询后的IP地址告诉本地DNS
  4. 本地DNS再将IP地址返回客户端,客户端和目标建立连接。

查询过程原理

客户端向本地DNS服务器发出的查询过程是递归查询,这个查询是客户端以自己的名义向本地DNS服务器请求想要的IP映射,并且本地DNS服务器直接返回映射结果给到客户端。

后面的三次查询是迭代查询,包括:本地DNS服务器向根DNS服务器发送查询请求,本地DNS服务器向顶级域DNS服务器(TLD)发送查询请求,本地DNS服务器向权威DNS服务器发送查询请求,所有的请求都是由本地DNS服务器发出,所有响应都是直接返回给本地DNS服务器

但并不是所有查询都是递归-迭代查询,任何DNS查询既可以是递归的,也可以是迭代的。

为了更快的拿到IP,DNS广泛使用缓存,在查询过程中,当某一台DNS服务器接收到一个DNS应答,它就能很快映射到本地,下次查询就可以直接缓存里面的内容,缓存并不是永久的,每一条映射记录都有一个对应的生存时间,一旦过了生存时间,这条记录就从缓存中移走。

前端的DNS优化?
答:可以在html页面头部写入DNS缓存地址。

注:本文整理内容参考公众号:‘小林coding’;掘金‘我是陆小北’

本文标签: 过程清楚了dns