DNS原理


什么是DNS

DNS是一个在DNS服务器层次上实现的分布式数据库,是一个应用层协议,允许主机去查询这个分布式数据库.DNS服务器通常是一个运行Berkley互联网域名(BIND)软件的UNIX机器.DNS运行在UDP之上,并使用53号端口.

DNS的作用

  • 完成主机名到IP地址的转换
  • 实现主机别名.主机名可以有多个,其中一个叫做权威主机名,其余的叫做主机别名,可以通过主机别名或者IP地址获取权威主机名
  • IP负载均衡.一个主机名可以关联多个IP地址,客户端根据主机名从DNS服务器中获取到IP地址列表,DNS通常会以列表的第一个IP地址作为最终结果.为了让第一个IP地址更加具有分布性,DNS服务器会对列表进行打乱后返回.

DNS服务器种类

  • 根DNS服务器.通过传递顶级域名(如com,org)请求根DNS服务器,可以找到处理对应主机名的顶级域名DNS服务器
  • 顶级域名DNS服务器.通过传递权威域名(如facebook.com),可以找到处理对应主机名的权威DNS服务器
  • 权威DNS服务器.在互联网上可以直接访问的服务器必须要有域名到地址的映射,权威DNS服务器用于保存这些映射.
  • 本地DNS服务器.靠近用户的DNS服务器,本质上不属于DNS服务器层次.DNS解析请求通常先发送给本地DNS服务器,再由本地服务器转发到DNS服务器层次结构上,本地DNS服务器在这里充当代理.

img

DNS解析流程(典型方式)

  1. 客户端请求本地DNS服务器获得www.baidu.com对应的IP地址
  2. 本地DNS服务器请求根DNS服务器获取处理com的顶级域名DNS服务器的IP地址
  3. 本地DNS服务器获得根DNS服务器返回的顶级域名DNS服务器的IP地址
  4. 本地DNS服务器请求顶级域名DNS服务器获取处理baidu.com的权威DNS服务器的IP地址
  5. 本地DNS服务器获得顶级域名DNS服务器返回的权威DNS服务器的IP地址
  6. 本地DNS服务器请求权威服务器获取处理www.baidu.com对应的IP地址
  7. 本地DNS服务器获得权威服务器返回的IP地址
  8. 本地DNS服务器向客户端响应最终获得的IP地址

DNS缓存的作用

DNS缓存通常存放于本地DNS服务器中,当本地DNS服务器获取到某个主机名到IP的映射关系后,可以选择将其缓存起来,并设置一个过期时间(比如两天),这样当有另外的客户端请求相同主机名的IP地址时,就不用走完整的DNS解析流程,这样可以提高性能,减少延迟.

参考资料

计算机网络自定向下方法2.4.1 Services Provided by DNS 2.4.2 Overview of How DNS Works


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!