DNS 原理入门( 二 )


举例来说 , www.example.com真正的域名是www.example.com.root , 简写为www.example.com. 。因为 , 根域名.root对于所有域名都是一样的 , 所以平时是省略的 。
根域名的下一级 , 叫做”顶级域名”(top-level domain , 缩写为TLD) , 比如.com、.net;再下一级叫做”次级域名”(second-level domain , 缩写为SLD) , 比如www.example.com里面的.example , 这一级域名是用户可以注册的;再下一级是主机名(host) , 比如www.example.com里面的www , 又称为”三级域名” , 这是用户在自己的域里面为服务器分配的名称 , 是用户可以任意分配的 。
总结一下 , 域名的层级结构如下 。
主机名.次级域名.顶级域名.根域名
# 即
host.sld.tld.root
五、根域名服务器
DNS服务器根据域名的层级 , 进行分级查询 。
需要明确的是 , 每一级域名都有自己的NS记录 , NS记录指向该级域名的域名服务器 。这些服务器知道下一级域名的各种记录 。
所谓”分级查询” , 就是从根域名开始 , 依次查询每一级域名的NS记录 , 直到查到最终的IP地址 , 过程大致如下 。

  1. 从”根域名服务器”查到”顶级域名服务器”的NS记录和A记录(IP地址)
  2. 从”顶级域名服务器”查到”次级域名服务器”的NS记录和A记录(IP地址)
  3. 从”次级域名服务器”查出”主机名”的IP地址
 
仔细看上面的过程 , 你可能发现了 , 没有提到DNS服务器怎么知道”根域名服务器”的IP地址 。回答是”根域名服务器”的NS记录和IP地址一般是不会变化的 , 所以内置在DNS服务器里面 。
下面是内置的根域名服务器IP地址的一个例子 。
DNS 原理入门

文章插图
  上面列表中 , 列出了根域名(.root)的三条NS记录A.ROOT-SERVERS.NET、B.ROOT-SERVERS.NET和C.ROOT-SERVERS.NET , 以及它们的IP地址(即A记录)198.41.0.4、192.228.79.201、192.33.4.12 。
另外 , 可以看到所有记录的TTL值是3600000秒 , 相当于1000小时 。也就是说 , 每1000小时才查询一次根域名服务器的列表 。
目前 , 世界上一共有十三组根域名服务器 , 从A.ROOT-SERVERS.NET一直到M.ROOT-SERVERS.NET 。
六、分级查询的实例
dig命令的+trace参数可以显示DNS的整个分级查询过程 。
$ dig +trace math.stackexchange.com
上面命令的第一段列出根域名.的所有NS记录 , 即所有根域名服务器 。
DNS 原理入门

文章插图
  根据内置的根域名服务器IP地址 , DNS服务器向所有这些IP地址发出查询请求 , 询问math.stackexchange.com的顶级域名服务器com.的NS记录 。最先回复的根域名服务器将被缓存 , 以后只向这台服务器发请求 。
接着是第二段 。
DNS 原理入门

文章插图
  上面结果显示.com域名的13条NS记录 , 同时返回的还有每一条记录对应的IP地址 。
然后 , DNS服务器向这些顶级域名服务器发出查询请求 , 询问math.stackexchange.com的次级域名stackexchange.com的NS记录 。
DNS 原理入门

文章插图
  上面结果显示stackexchange.com有四条NS记录 , 同时返回的还有每一条NS记录对应的IP地址 。
然后 , DNS服务器向上面这四台NS服务器查询math.stackexchange.com的主机名 。
DNS 原理入门

文章插图
  上面结果显示 , math.stackexchange.com有4条A记录 , 即这四个IP地址都可以访问到网站 。并且还显示 , 最先返回结果的NS服务器是ns-463.awsdns-57.com , IP地址为205.251.193.207 。
七、NS 记录的查询
dig命令可以单独查看每一级域名的NS记录 。
$ dig ns com
$ dig ns stackexchange.com
+short参数可以显示简化的结果 。
$ dig +short ns com
$ dig +short ns stackexchange.com
八、DNS的记录类型
域名与IP之间的对应关系 , 称为”记录”(record) 。根据使用场景 , ”记录”可以分成不同的类型(type) , 前面已经看到了有A记录和NS记录 。


推荐阅读