DNS解析过程

DNS(域名系统)是互联网的重要组成部分,负责将域名转换为IP地址。它采用分布式数据库,以C/S架构工作,使用TCP和UDP的53号端口。DNS查询过程包括本地缓存、递归服务器、根域名服务器的交互。DNS存在DNS劫持、DDoS攻击、DNS信息劫持和DNS缓存中毒等问题,影响网络安全。
摘要由CSDN通过智能技术生成

1. 什么是DNS

1.1 DNS

DNS,英文全称Domain Name System,中文全称:域名系统。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。

DNS基于C/S架构,同时使用TCPUDP53号端口,当前,对于每一级域名长度限制是63个字符,域名总长度则不能超过253个字符。

区域传输时使用TCP,因为数据同步传送的数据量比一个请求和应答的数据量要多得多,因此为了保证数据的正确性,则使用基于可靠连接的TCP

域名解析时使用UDP协议,端口为53。客户端向DNS服务器查询域名,一般返回的内容不超过512字节(UDP报文最大长度为512字节),用UDP传输,不经过TCP三次握手,大大提高响应速度。

1.2 DNS数据库的结构

DNS数据库的结构类似于UNIX文件系统的结构。整个数据库(或文件系统)被描绘成一个倒置的树,root节点在树的顶端。

在这里插入图片描述

在DNS中,root通常被写为一个点号(.),而且这个点号通常被省略了。

1.3 域命名空间

DNS的分布式数据库通过域名来进行索引。每个域名本质上就是一个大型逆向树的一条路径。这棵逆向树被称作域命名空间
在这里插入图片描述

1.4 域

一个域(domain)就是域命名空间中的一棵子树。

域的级别

  • 顶级域是root的子域。

    • 通用顶级域(generic top-level domains,gTLDS)开始只有7个:com/edu/gov/mil/net/org/int。后来还有aero/biz/coop/info/museum/name
    • 国家代码顶级域(country-code top-level domains),指某一国家的顶级域。
    • 更多的顶级域
  • 一级域也是root的子域(一级域和顶级域是同一概念)。

  • 二级域是一级域的子域,依次类推。

授权

通过授权(delegation),将域进一步划分成子域,每个子域都可以被授权给他组织来管理。被授权组织负责维护子域的所有数据。父域仅保留指向子域数据来源的指针,父域便可将查询者引到对应的子域管理者。

1.5 域名服务器和区域

存储域命名空间信息的程序被称作名称服务器(nameserver,简称NS)域名服务器NS通常只拥有域命名空间某一部分的完整信息。这一部分被称作区域(zone),区域的内容是从文件或另一个NS加载而来。加载过后,这个NS便可宣称对该区域具有权威(authority)。一个NS可以同时对多个区域具有权威。

在这里插入图片描述

DNS规范定义了两种域名服务器:

  • primary master 域名服务器。从主机上的文件中读取区域数据
  • secondary master 域名服务器,现叫slave域名服务器。从master域名服务器读取区域数据。

解析器

解析器(resolver)就是访问NS的客户端程序。

根域名服务器

根域名服务器知道每个顶级域的权威域名服务器的位置。顶级域域名服务器知道其子域的权威域名服务器的位置。依次类推。目前有13个根域名服务器。根域名服务器对于解析来说十分重要,所以DNS提供了诸如缓存(caching)等机制来减轻根域名服务器的负载。

2. DNS查询过程

在这里插入图片描述

  1. 在浏览器中输入www . baidu.com 域名

  2. 先检查浏览器DNS缓存或本地的hosts文件是否有这个网址映射关系,有则完成域名解析,无则下一步

  3. 查询设置的本地递归域名服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。

  4. 如果要查询的域名,不由本地递归域名服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。

  5. 如果本地递归域名服务器本地区域文件与缓存解析都失效,则根据本地递归域名服务器的设置(是否设置转发器)进行查询,

  6. 如果未用转发模式(根提示模式),本地递归域名服务器把请求发至13台根域名服务器,根域名服务器返回该域名所在顶级域名(.com)的域名服务器地址,本地递归域名服务器把请求发至该顶级域名服务器,顶级域名服务器返回二级域名(baidu.com)的域名服务器地址,依次迭代查询下去,直到找到 www.baidu.com 的映射。

  7. 如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根域名服务器或把转请求转至上上级,以此循环。

不管是转发,还是根提示,都是把结果返回给本地递归域名服务器,本地递归域名服务器再返回给客户机

注意:本地域名服务器在向这些权威域名服务器发送查询请求时,都是查询的原始域名!

域名与IP之间的对应关系,称为记录(record)。根据使用场景,"记录"可以分成不同的类型(type),前面已经看到了有A记录NS记录

在这里插入图片描述

常见的DNS记录类型如下。

(1)A地址记录(Address),返回域名指向的IP地址。

(2)NS域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。

(3)MX邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。

(4)CNAME规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转,详见下文。

(5)PTR逆向查询记录(Pointer Record),只用于从IP地址查询域名。

3. 传统DNS中存在的一些问题

DNS劫持又叫域名劫持,就是在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则直接返回假的IP地址或者什么也不做使得请求失去响应,其效果就是对特定的网址不能访问或访问的是假网址。

在这里插入图片描述

利用DNS服务器进行DDOS攻击

正常的DNS服务器递归询问过程可能被利用成DDOS攻击。

假设攻击者已知被攻击机器IP地址,然后攻击者使用该地址作为发送解析命令的源地址。这样当使用DNS服务器递归查询后,DNS服务器响应给最初用户,而这个用户正是被攻击者。那么如果攻击者控制了足够多的肉鸡,反复的进行如上操作,那么被攻击者就会受到来自于DNS服务器的响应信息DDOS攻击。

DNS信息劫持

传统的DNS查询,使用udp协议进行通信,如果在请求过程中攻击者对DNS的解析结果进行篡改,会导致DNS劫持。

DNS重定向

在请求时,攻击者将DNS查询请求重定向到流氓DNS服务器,也会导致DNS劫持。

DNS缓存中毒

DNS缓存中毒(也称为DNS欺骗,DNS污染)是一种利用域名系统(DNS)中的漏洞将 Internet 流量从合法服务器转移到虚假服务器的攻击。DNS缓存中毒通过欺骗DNS服务器保存伪造的DNS条目来起作用。黑客和破解者使用 DNS 缓存中毒将特定网站的访问者重定向到他们定义/期望的网站。

参考

[1] DNS 原理入门
[2] 知乎 - DNS解析的过程是什么,求详细的?
[3] 计算机网络

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值