引言
什么是DNS
DNS服务:将主机名映射成IP地址
一个主机可以有一个规范主机名、多个别名(www.sina.com就是个别名)
邮件服务器也有别名
目的:负载平衡,通过IP分流
DNS的架构
前面我们说DNS是将主机名对应到IP,那么这些东西关系(表)应该如何存储呢?
首先集中式存储的问题:
容易访问失败
流量
距离,要在哪里建设服务器
维护问题
所以有了现在的层次架构
根名称服务器:
负责引导查询获取顶级域名称服务器的域名及对应的顶级域服务器的IP地址。
根基服务器的分布:
根域名服务器
截至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台。
全球13组根域名服务器以英文字母A到M依序命名, 网域名称格式为“字母. root-servers. org”。其中有11个是以任播技术在全球多个地点设立镜像站。 所有根域名服务器都是以同一份根域文件返回顶级域名权威服务器(包括通用顶级域和国家顶级域),
文件只有550KB 大小。
目前全球一共有13台
根域名服务器,其中有10个是在美国,有2个在欧洲,还有一个在日本,这里说的是服务器都是逻辑上的IP地址
,对应了 A-M 13 个编号,借由任播(Anycast)技术,编号相同的根服务器使用同一个IP(类似一个集群)。并不是真正的物理机器。
那么为什么DNS根服务器只有13个IP呢
参考:https://miek.nl/2013/november/10/why-13-dns-root-servers/
我们都知道DNS协议是使用了UDP和TCP协议
UDP协议:用于查询和响应(不可靠传输特性等)
TCP协议:用于主服务器和从服务器之间的区域传送(有可靠传输特性等)
在所有 UDP 实现中能保证正常工作的最大包是 512
字节,而这512字节还影响了根服务器的数量和名字。
要让所有的根服务器数据能包含在一个 512 字节的 UDP 包中,接下来我们看UDP包的构成:
;; QUESTION SECTION:
;. IN NS;; ANSWER SECTION:
. 518400 IN NS a.root-servers.net.
. 518400 IN NS b.root-servers.net.;; ADDITIONAL SECTION:
a.root-servers.net. 3600000 IN A 198.41.0.4
b.root-servers.net. 3600000 IN A 192.228.79.201
数据包头:12字节
问题部分:5字节
答案部分一个资源记录:31字节
答案部分的其他记录采用DNS压缩:15字节*n
附加记录:16字节*m(名字字段压缩)
所以:
12 ;; ->>HEADER<<-5 ;; QUESTION SECTION:
31 + 15n ;; ANSWER SECTION:16m ;; ADDITIONAL SECTION:48 + 31n = 512n = 464 / 31 = 14.96
所以,可以具有14台根服务器,现在13台已经分配,为将来的扩展留出一些空间。