DNS (Domain Name System) 域名系统,是一个层次化、分散化的 Internet 连接资源命名系统。DNS 维护着一个包含域名与对应资源例如IP 地址的列表。
域名解析
域名解析即DNS查询,找到域名对应的ip地址。 域名是一个树状结构,最顶层的域名是根域名(root),然后是顶级域名(top-level domain,简写 TLD),再是一级域名、二级域名、三级域名。只有上级域名,才知道下一级域名的 IP 地址,需要逐级查询。
其查询步骤如下:
本地host文件的路径C:\Windows\System32\drivers\etc\hosts
第一步是查询浏览器DNS缓存,第二步是查询操作系统的DNS缓存,第三步是先在本地域名服务器查询是否有DNS缓存,如果命中则直接返回,否则先向根域名服务发起请求。
主机和本地域名服务器是递归,而本地名称服务器和其他域名服务器之间是迭代
DNS递归查询: 当所配置的本地名称服务器解析不了时,后面的查询工作是由本地名称服务器替代DNS客户端进行的(以“本地名称服务器”为中心),只需要本地名称服务器向DNS客户端返回最终的查询结果即可。 迭代查询:所有查询工作全部是DNS客户端(本地DNS域名服务器)自己进行
DNS发送请求时,使用的是53端口。DNS既使用TCP也使用UDP协议。
DNS解析时,使用的是UDP协议(因为没有超过512字节)。 DNS在进行区域传输的时候使用TCP协议,其它时候则使用UDP协议; DNS的规范规定了2种类型的DNS服务器,一个叫主DNS服务器,一个叫辅助DNS服务器。在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息。当一个辅助DNS服务器启动时,它需要与主DNS服务器通信,并加载数据信息,这就叫做区传送(zone transfer)。 区域传送时使用TCP,主要有以下两点考虑:
辅域名服务器会定时(一般时3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,则会执行一次区域传送,进行数据同步。区域传送将使用TCP而不是UDP,因为数据同步传送的数据量比一个请求和应答的数据量要多得多。
TCP是一种可靠的连接,保证了数据的准确性。
DNS本地查询主要是查询本地主机缓存的DNS记录,主要包含两块内容。一是hosts文件,文件保存在客户机系统盘中,文件路径是Windows/system32/drivers/etc/。另外一个是客户端的高速缓存,ipconfig/displaydns命令可以查看。
DNS劫持又称域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能访问或访问的是假网址
参考链接:
DNS劫持: zhuanlan.zhihu.com/p/435106322
DNS发送请求使用的协议: blog.csdn.net/lingshengxi…