简单谈谈DNS的工作原理及实践 - Timco

时间:2024-01-23 10:43:06

简单谈谈DNS的工作原理及实践

DNS协议简介

 

dns(Domain Name System)是一个全球化的分布式数据库系统,用于存储域名和互联网IP地址的映射关系。dns协议是计算机协议栈应用层中,应用最广泛的协议之一。用户每一次打开浏览器在互联网上遨游,都伴随着dns协议的工作,帮助我们定位互联网主机和资源。

而作为程序开发者,新项目、新应用上线时,如果需要申请新域名并进行配置和管理,也要求我们对dns协议足够了解。

DNS工作原理

dns系统主要分为权威dns和递归dns。

权威dns

 

权威dns由域名解析服务商建设,用于域名管理服务,主要工作就是管理某个或多个特定域的dns解析工作。一般较大的公司,如百度、阿里等等,都维护自身的权威dns服务器。小公司注册域名后,往往由域名注册商提供dns解析服务。

比如,所有以“taobao.com”结尾的域名,都由 taobao权威dns来管理和解析。当然,taobao.com权威域名需要向上一级com注册。

权威dns域名系统是有层级的树形结构,每一层权威dns都需要向上一层注册:

(1)最上层是根域名。全球有13台根域名服务器,遍布在各大洲。

(2)*域,如com,org,cn等,都需要向根域名服务注册。

(3)各国家、机构、公司等,他们的二级域名需要向*域名服务商注册。如taobao.com,baidu.com都需要向com注册。

以上都是权威域名,承担着特定域名的解析和管理工作。

递归dns

递归dns通常有网络服务提供商来建设。通过迭代地向权威dns查询域名,来获取dns解析结果。个人主机在启动后会自动配置好本地dns服务器,递归dns解析服务由本地dns服务器来提供。

在mac上,dns服务器记录在/etc/resolv.conf中。可以用unix*中的dig命令来追踪dns解析过程。

dns查询实践

一,使用dig命令

//详细追溯递归dns解析流程
dig +trace www.taobao.com

//直接解析dns
dig www.taobao.com

dig +trace www.taobao.com

(1)向本地dns服务器查询,本地dns服务器返回根服务器地址

(2)向根域名服务器查询,返回com域名服务器地址

(3)向com权威服务器查询,返回taobao.com权威域名服务器地址

(3)向taobao.com权威域名服务器查询,www.taobao.com的CNAME记录和A记录

至此,拿到了dns系统解析的最终结果。

  • 在递归dns中,先查询根域名,在查询com域名,再查询taobao.com域名,逐层查询,是谓递归查询。
  • 每一个权威dns均由多台服务器提供服务,实际中还可以配置相关策略来决定具体选择哪一台进行查询。如果域名配置多个A记录就可以进行简单的负载均衡。
  • 本地dns会缓存每次查询的中间结果,加速dns查询,并且会根据TTL决定域名缓存失效时间。 

DNS记录分类

dns服务器中的记录分为多种,每一种有不同的作用,常见的是A记录,CNAME记录,MX记录。

A记录:IP地址记录,记录指向具体的ip地址。

CNAME:主机别名记录,记录指向另一个域名。

MX:邮件服务记录。

NS:域名服务器记录。

DNS劫持

dns协议基于udp协议,属于不可靠协议。GFW屏蔽网站的原理就是劫持并篡改了dns报文。

使用dig命令追踪facebook.com的解析结果

本来应该通过递归dns查询,向com,facebook.com等权威服务器逐层查询,GFW却直接劫持了向根服务器的查询,返回了错误的dns解析结果,导致网站打不开。