域名的结构
一个完整的域名由两组或两组以上的ASCII或各国语言字符构成,各组字符间由“.”点号分隔开,最后一个.是根域名,通常都忽略了,因此,最右边的字符组称为顶级域名或一级域名,顶级域名的下一级称为二级域名或者主域名,主域名下一个是三级域名或者子域名。例如:
.:根域名
com:顶级域名,一级域名
ctdns.cn:主域名,二级域名
www.ctdns.cn:子域名,三级域名
DNS服务器层级结构
层级 | 作用 |
---|---|
根服务器 | 所有的根域名服务器管理所有的顶级域名服务器的IP地址,全球有13台根服务器。递归DNS全部没有缓存时,则向这13台服务器发起请求。 |
顶级域服务器 | 负责管理所有的二级域名的授权记录,例如cn管理ctdns.cn的授权记录,当递归DNS向它请求ctdns.cn时,给出该ctdns.cn的授权记录。 |
主域名DNS服务器 | 负责域名的解析,例如www.ctdns.cn的解析,智能DNS的权威DNS可以作为主域名DNS的托管服务器。 |
递归DNS服务器 | 又称LocalDNS,本地DNS,一般是运营商的DNS,还有一些公共的DNS如谷歌的8.8.8.8,通过不断向权威DNS查询给用户返回一个准确的查询结果。 |
DNS解析的基本原理和过程
- 用户在浏览器中输入“www.ctdns.cn”, 浏览器若没有缓存,则向LocalDNS发起请求,由LocalDNS开始进行迭代查询。
- LocalDNS若完全无缓存,则采用迭代查询的方法,向根域名服务器进行查询。
- 根域名服务器响应LocalDNS,下一步应该查询的顶级域名服务器.com TLD的IP地址。
- LocalDNS向顶级域名服务器.com TLD发起查询。
- .com TLD服务器响应LocalDNS,下一步查询ctdns.cn权威域名服务器的IP地址。
- LocalDNS向ctdns.cn权威域名服务器发起查询。
- ctdns.cn权威域名服务器响应LocalDNS所查询的主机IP地址。
- LocalDNS把查询的IP地址响应给Web浏览器,并缓存数据。
权威DNS
DNS即Domain Name System,是域名解析服务的意思。它在互联网的作用是:把域名转换成为网络可以识别的IP地址。人们习惯记忆域名,但机器间互相只认IP地址,域名与IP地址之间是一一对应的,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的。如上网时输入的www.ctyun.cn会自动转换成为117.31.118.32。
常见的DNS解析服务商有:阿里云解析,万网解析,DNSPod,新网解析,Route53(AWS),Dyn,Cloudflare等。
LocalDNS
LocalDNS又称递归DNS、本地DNS,一般是运营商的DNS,还有一些公共的DNS如谷歌的8.8.8.8。其核心的模块一个是缓存、另一个是递归查询。当收到域名查询请求时,先查询本地缓存是否有记录,若有记录则直接返回给用户;若没有记录,则逐级递归查询,直到获取结果后,返回给用户。常见的公共DNS有谷歌(8.8.8.8、8.8.4.4)、114DNS(114.114.114.114)、阿里(223.5.5.5)、腾讯(119.29.29.29)。
DNS递归查询
DNS递归查询,客户端向LocalDNS发起的域名查询,一般都是采用递归查询。当LocalDNS收到域名请求时,若缓存没有记录,则LocalDNS会从根服务器开始,逐级向其它权威服务器发起域名查询,直到获取结果,而不是让客户端自己进行下一步查询。因此,LocalDNS返回给客户端的响应,是其所要查询的IP记录或者直接报错。
DNS迭代解析
迭代解析是指DNS服务器在收到用户发起的请求时,如果没有查询结果,且服务器上配置有授权记录,则返回授权记录里面另一台DNS服务器的地址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。
DNS TTL
TTL全称Time To Live ,即生存时间,表示DNS记录在LocalDNS服务器上的缓存时间,数值越小表示修改记录生效时间越快。一般LocalDNS会遵循权威DNS给出的TTL,但是,如果TTL过于小,会给LocalDNS带来比较大的压力,因此,LocalDNS也会设置默认最小的TTL。当权威DNS给的TTL小于默认值,则将TTL值改成本地默认值,来减少请求压力。在TTL未过期之前,LocalDNS可以使用缓存模块内的数据直接响应给用户,无需要再向权威DNS发起请求。
DNS DDOS攻击
针对DNS的DDoS攻击通过控制大批僵尸网络利用真实DNS协议栈发起大量域名查询请求,利用工具软件伪造源IP发送海量DNS查询,发送海量DNS查询报文导致网络带宽耗尽而无法传送正常DNS查询请求。常见的攻击类型有随机IP、随机主机头泛域名形式的DDOS攻击,一般的权威DNS通过清洗及提供DNS响应性能来防此类攻击。
DNS劫持
DNS劫持是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把要劫持的域名以外的请求放行,否则返回假的IP地址或者拒绝响应,以此达到非法窃取用户信息或者破坏正常网络服务的目的。域名劫持,一方面由于被引导到不可用的网站,可能造成用户体验差;另一方面,用户被诱导到假冒的网站进行操作,可能造成隐私数据的泄露,进而造成用户的损失。
DNS缓存
DNS缓存指权威DNS返回了正确的IP之后,LocalDNS一方面将答案响应给用户端,另一方面会将这个结果临时储存起来,并根据权威DNS返回的TTL进行计算失效时间。在TTL未失效前,当有其它请求再来查询该域名的记录,此时,LocalDNS可直接将缓存内的记录响应给用户,不必再去询问权威DNS。DNS缓存,可以减少DNS递归请求的时间,快速响应记录,达到提升DNS解析时间的效果,缓解DNS请求量太大的压力。
DNS智能解析
DNS智能解析是权威DNS可以根据来访IP或者ECS携带的client-IP,判断该IP的归属区域,根据域名在不同区域配置不同的IP地址,响应该区域的IP地址。例如,IP1归属北京电信,则响应该域名在北京电信区域配置的IP。
DNSSEC
DNSSEC是DNS的安全扩展协议,通过对数据进行数字“签名”,从而确信数据有效签署,以增加DNS的安全作用。DNSSEC对性能的消耗较大。
EDNS/ECS
EDNS是DNS的扩展协议,EDNS允许我们克服DNS标头中几个标志字段、返回码和标签类型的大小限制。ECS是谷歌提交的一份扩展协议,权威DNS可以根据ECS协议的IP而非来访IP进行智能解析,递归DNS则需要按照ECS返回的结果进行缓存。
根域名服务器
一个完整的域名由2个或2个以上的部分组成,各部分之间用英文的句号“.”来分隔,最后一个“.”往往被忽略,实际上,这个代表域名的根。所有的根域名服务器都知道所有的顶级域名服务器的IP地址,全球有13台根服务器。
顶级域名
最后一个“.”(根)的右边部分称为顶级域名,也称为一级域名,常见的顶级域名有".com"、".org"、".net"、".cn"等。
二级域名
顶级域名的下一级,即二级域名,例如ctdns.cn,该二级域名需要注册,并在com服务器上授权, ctdns.cn也可以称为主域名或者DNS后缀或者zone。