前面我转的阮一峰写的DNS 原理入门很好的介绍了DNS相关知识。
本文补充了这篇文章还没有介绍的地方,或者是介绍的不是很详细的地方,算是对DNS的一篇查缺补漏。
DNS规范
ISC网站列出了所有和DNS相关的RFC规范: DNS RFC 。
有些规范可能已经被弃用了,比较常用的是下面两个规范:
RFC 1034 Domain Names – Concepts and Facilities
RFC 1035
ipv6
RFC 3096 定义了DNS对 IPV6 的支持。
使用 AAAA 记录类型作为IPV6的地址类型。
DNS根服务器
根域名服务器是互联网域名解析系统(DNS)中最高级别的域名服务器,负责返回顶级域名的权威域名服务器的地址。截至2014年10月,全球有504台根服务器,被编号为A到M共13个标号。
大部分借由任播( Anycast )技术,编号相同的根服务器使用同一个IP,504台根服务器总共只使用13个IP,因此可以抵抗针对其所进行的分布式拒绝服务攻击(DDoS)。
中国大陆在北京有三台编号为L的镜像,编号为F、I、J的镜像各一台,共6台;香港有编号为D、J的镜像各2台,编号为A、F、I、L的镜像各一台,共8台;台湾则有编号为F、I、J各一台,共3台。
所以虽然编号和IP地址相同,但是服务器确可能有多台。下面是这些服务器和地址的列表:
HostnameIP AddressesManagera.root-servers.net198.41.0.4, 2001:503:ba3e::2:30VeriSign, Inc.b.root-servers.net192.228.79.201, 2001:500:84::bUniversity of Southern California (ISI)c.root-servers.net192.33.4.12, 2001:500:2::cCogent Communicationsd.root-servers.net199.7.91.13, 2001:500:2d::dUniversity of Marylande.root-servers.net192.203.230.10, 2001:500:a8::eNASA (Ames Research Center)f.root-servers.net192.5.5.241, 2001:500:2f::fInternet Systems Consortium, Inc.g.root-servers.net192.112.36.4US Department of Defense (NIC)h.root-servers.net198.97.190.53, 2001:500:1::53US Army (Research Lab)i.root-servers.net192.36.148.17, 2001:7fe::53Netnodj.root-servers.net192.58.128.30, 2001:503:c27::2:30VeriSign, Inc.k.root-servers.net193.0.14.129, 2001:7fd::1RIPE NCCl.root-servers.net199.7.83.42, 2001:500:9f::42ICANNm.root-servers.net202.12.27.33, 2001:dc3::35WIDE Project值的注意的是,在中国的只是根服务器的镜像,而不是根服务器的管理者。
任播Anycasting最初是在RFC1546中提出并定义的,它的最初语义是,在IP网络上通过一个Anycast地址标识一组提供特定服务的主机,同时服务访问方并不关心提供服务的具体是哪一台主机(比如DNS或者镜像服务),访问该地址的报文可以被IP网络路由到这一组目标中的任何一台主机上,它提供的是一种无状态的、尽力而为的服务。
权威DNS
权威DNS是经过上一级授权对域名进行解析的服务器,同时它可以把解析授权转授给其他人,如 COM 顶级服务器可以授权 xxorg.com 这个域名的的权威服务器为 NS.ABC.COM ,同时 NS.ABC.COM 还可以把授权转授给 NS.DDD.COM ,这样 NS.DDD.COM 就成了 ABC.COM 实际上的权威服务器了。平时我们解析域名的结果都源自权威DNS。比如 xxorg.com 的权威DNS服务器就是dnspod的 F1G1NS1.DNSPOD.NET 和 F1G1NS2.DNSPOD.NET 。
从字面意思也可以看出,权威就是该域名及下级域名的“说了算”的服务器;在权威上可以设置,修改,删除该区域内的解析记录, 而非权威DNS只能是查询。
Local DNS
Local DNS 也是和我们日常上网接触最多的DNS包括你的服务提供商(ISP)分配给你的DNS(一般为两个),或者接下来讲到的公共DNS。又因为填写在你的本地电脑上,所以也称为Local DNS。
公共DNS
我们都知道,我们要能上网,就必须要使用DNS。这个DNS可能是你的运营商提供给你的,也可以是一些其它组织提供的,比如我们熟知的谷歌的8.8.8.8,国内114dns的114.114.114.114. 。他们负责给我们的请求提供解析服务。
不过首先要明白,公共DNS不是:
不是根服务器
不是权威dns托管商,不提供域名注册等服务,比如万网和DNSpod
不是权威dns,不针对个别域名进行解析
公共DNS服务的特点就是服务的域名数量巨大,用户数多,同时要求具有安全性和抗攻击性,低延迟(响应快),无拦截(无广告)以及对解析成功率要求非常的高。
递归DNS
就是local dns。递归DNS可以理解为是一种功能复杂些的resolver,其核心功能一个是缓存、一个是递归查询。收到域名查询请求后其首先看本地缓存是否有记录,如果没有则一级一级的查询根、顶级域、二级域……直到获取到结果然后返回给用户。日常上网中运营商分配的DNSNS如 8.8.8.8 即这里所说的递归DNS。