一、基本概念
1、定义:域名系统(Domain Name System,简称DNS)是互联网的一项核心服务,是一种可以将域名和IP地址相互映射的以层次结构分布的数据库系统,允许终端用户设备将给定的人类可读URL转换为网络可以理解的机器可用IP地址。
2、作用:在互联网中,计算机之间是通过IP地址进行通信的,但IP地址是一串数字,不便于人们记忆和使用,而域名则是具有直观意义的字符串,如“www.baidu.com”,DNS的作用就是将人们熟悉的域名转换为对应的IP地址,使得用户可以通过域名方便地访问网站和其他网络资源。
二、工作原理
1、查询过程
客户端向首选域名服务器查询:当用户在浏览器中输入一个域名时,操作系统会首先向本地配置的首选域名服务器发送查询请求。
首选域名服务器解析:首选域名服务器收到查询后,会先检查本地的资源记录缓存,如果缓存中有该域名对应的IP地址,则直接返回给客户端;如果没有缓存,则会代表客户端向其他域名服务器进行查询,直到得到答案,然后将结果保存到本地缓存中再返回给客户端。
递归查询与迭代查询:如果首选域名服务器无法直接回答一个查询,它可以代表客户端向其他域名服务器进行查询,直到得到答案,这种查询方式称为递归查询,或者它可以代表客户端向其他域名服务器进行查询,直到得到一个确定不能回答的响应,然后它将这个响应返回给客户端,这种查询方式称为迭代查询。
2、域名服务器的类型
根域名服务器:负责管理顶级域名的服务器,是互联网域名解析的起点,全球共有13组根域名服务器,它们分布在世界各地,由不同的机构和组织管理和维护,根域名服务器存储了顶级域名服务器的信息,当收到域名解析请求时,它会告诉本地域名服务器应该去哪个顶级域名服务器查询。
顶级域名服务器:负责管理特定顶级域名下的二级域名服务器的信息。“.com”顶级域名服务器负责管理所有以“.com”结尾的域名的二级域名服务器信息。
权威域名服务器:保存了其所在域中的所有主机的详细信息,包括主机名和对应的IP地址等信息,当一个域名服务器无法回答一个查询时,它会代表客户端向其他域名服务器进行查询,直到得到答案,这种查询方式称为递归查询。
三、DNS报文结构
1、首部
标识:16位字段,用于标识报文,用于匹配查询和响应。
标志:包含多个标志位,如查询/响应标志、递归标志等。
查询记录数:指定查询部分的问题数目。
回答记录数:指定回答部分的记录数目。
授权回答记录数:指定权威部分的记录数目。
附加信息记录数:指定附加部分的记录数目。
2、查询部分
域名:一个以字节为单位的域名列表,表示查询的域名。
查询类型:16位字段,表示查询的资源记录类型。
查询类别:16位字段,表示查询的资源记录类别。
3、回答部分
域名:一个以字节为单位的域名列表,表示查询的域名。
类型:16位字段,表示资源记录的类型。
类别:16位字段,表示资源记录的类别。
生存时间:32位字段,表示资源记录的生存时间。
数据长度:16位字段,表示资源记录数据字段的长度。
资源记录数据:实际的资源记录数据,可以是IPv4地址、IPv6地址、CNAME等。
4、权威部分:类似于回答部分,包含权威服务器的资源记录信息。
5、附加部分:类似于回答部分,包含额外的资源记录信息,通常用于提供额外的信息,如DNSSEC签名等。
四、基于CH394的DNS实现
1、初始化CH394并创建UDP socket:link成功后可通过CH394向DNS服务器发查询报文,DNS服务器ip要与路由器DNS服务器IP一致,目的端口为53。
2、CH394发送查询报文示例
Transaction ID:0x1101
Flags:0x0100 Standard query
Questions:1 * 00 01
Queries
Name:www.wch.cn * 03 77 77 77 03 77 63 68 02 63 6e 00
Type:A (1) (Host Address) * 00 01
Class:IN (0x0001) * 00 01
3、CH394解析回答报文示例
Transaction ID:0x1102
Flags:0x8180 Standard query response, No error * 81 80
Questions:1 * 00 01
Answer RRs:1 * 00 01
Authority RRs:0 * 00 00
Additional RRs:0 * 00 00
Queries
Name:www.wch.cn * 03 77 77 7703 77 63 68 02 63 6e 00
Type:A (1) (Host Address) * 00 01
Class:IN (0x0001) * 00 01
Answers
Name:www.wch.cn * c0 0c
Type:A (1) (Host Address) * 00 01
Class:IN (0x0001) * 00 01
Time to live:2710 (45 minutes, 10 seconds) * 00 00 0a 96
Data length:4 * 00 04
Address:www.wch.cn (58.213.45.186) * 3a d5 2d ba
五、相关问题与解答栏目
问题1:什么是DNS缓存?它有什么作用?
答:DNS缓存是指DNS服务器或客户端将之前查询过的域名与IP地址的映射关系存储下来的过程,当再次查询相同的域名时,可以直接从缓存中获取对应的IP地址,而无需再次进行完整的域名解析过程,从而提高了域名解析的速度和效率,缓存还可以减少对外部DNS服务器的查询请求,降低网络流量和负载。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/123768.html