目录
- 🕒 1. DNS的作用
- 🕒 2. 域名结构
- 🕒 3. 域名分类
- 🕒 4. 域名空间
- 🕒 5. 域名服务器类型
- 🕘 5.1 根域名服务器
- 🕘 5.2 顶级域名服务器
- 🕘 5.3 权限域名服务器
- 🕘 5.4 本地域名服务器
- 🕒 6. 域名解析的过程
- 🕘 6.1 递归查询(较少使用)
- 🕘 6.2 迭代查询
- 🕘 6.3 高速缓存
- 🕒 7. DNS的报文格式
- 🕘 7.1 首部
- 🕤 7.1.1 标识
- 🕤 7.1.2 标志
- 🕤 7.1.3 问题记录数
- 🕤 7.1.4 回答记录数
- 🕤 7.1.5 授权记录数
- 🕤 7.1.6 附加记录数
- 🕘 7.2 问题部分
- 🕘 7.3 回答部分
- 🕘 7.4 授权部分
- 🕘 7.5 附加信息部分
- 🕒 8. DNS的记录类型
- 🕘 8.1 问题记录
- 🕘 8.2 资源记录
- 🕒 9. 实验:了解DNS的工作机制
🕒 1. DNS的作用
我们通过输入网址来访问网页,可实际上计算机间的通信是通过IP地址,所以网址的本质上是IP地址,将网址与IP地址映射起来就是DNS(Domain Name System)的作用
Q:因特网是否可以只适用一台DNS服务器?
A:这种做法不可取。因为因特网的规模很大,如果只有一个服务器,那么一旦其出现故障,整个因特网就会瘫痪。
因此现实中采用层次结构的命名树作为主机的名字(即域名),并使用分布式的域名系统DNS。
DNS使大多数域名都在本地解析,仅少量解析需要在因特网上通信,因此系统效率很高。由于DNS是分布式系统,即使单个计算机出了故障,也不会妨碍整个系统的正常运行。
🕒 2. 域名结构
- 因特网采用层次树状结构的域名结构
- 域名的结构由若干个分量组成,各分量之间用“点”隔开,分别代表不同级别的域名。
… .三级域名.二级域名.顶级域名- 每一级的域名都由英文字母和数字组成,不超过63个字符,不区分大小写字母
- 级别最低的域名写在最左边,而级别最高的顶级域名写在最右边。
- 完整的域名不超过255个字符。
- 域名系统既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。
- 各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由因特网名称与数字地址分配机构ICANN进行管理。
举例:仲恺信科院的域名
🕒 3. 域名分类
顶级域名TLD
(Top Level Domain)分为以下三类:
- 国家顶级域名
nTLD
:采用ISO 3166的规定。如cn表示中国,us表示美国,uk表示英国…… - 通用顶级域名
gTLD
:最常见的通用顶级域名有七个- com(公司企业) 、net(网络服务机构)、org (非营利性组织)、int(国际组织)、edu(美国教育结构)、gov(美国政府部门)、mil(美国军事部门)。
- 反向域
arpa
:用于反向域名解析,即IP地址反向解析为域名。
在国家顶级域名下注册的二级域名均由该国家自行确定。例如,顶级域名为jp的日本,将其教育和企业机构的二级域名定为ac和co,而不用edu和com。
我国则将二级域名划分为以下两类:
- 类别域名 共七个: ac(科研机构)、com (工、商、金融等企业)、edu(教育机构)、gov(政府部门)、net(提供网络服务的机构)、mil(军事机构)和org (非营利性组织)。
- 行政区域名共34个,适用于我国的各省、自治区、直辖市。例如: bj为北京市、sh为上海市、gd为广东省,等等。
注:名称相同的域名其等级未必相同,如.com.cn
和.com
🕒 4. 域名空间
这种按等级管理的命名方法便于维护名字的唯一性,并且也容易设计出一种高效的域名查询机制。需要注意的是,域名只是个逻辑概念,并不代表计算机所在的物理地点。
🕒 5. 域名服务器类型
域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询。显然不能将所有信息都储存在一台域名服务器中。DNS使用分布在各地的域名服务器来实现域名到IP地址的转换。
域名服务器可以划分为以下四种不同的类型:
🕘 5.1 根域名服务器
- 根域名服务器是最高层次的域名服务器。
- 每个根域名服务器都知道所有的顶级域名服务器的域名及其IP地址。
- 因特网上共有
13
个不同IP地址的根域名服务器。尽管我们将这13个根域名服务器中的每一个都视为单个的服务器,但“每台服务器”实际上是由许多分布在世界各地的计算机构成的服务器群集。- 当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个DNS客户最近的一个根域名服务器。
- 这就加快了DNS的查询过程,同时也更合理地利用了因特网的资源。根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的IP地址。
🕘 5.2 顶级域名服务器
- 顶级域名服务器负责管理在该顶级域名服务嚣注册的所有二级域名。
- 当收到DNS查询请求时就给出相应的回答(可能是最后的结果,也可能是下一级权限域名服务器的IP地址)。
🕘 5.3 权限域名服务器
- 权限域名服务器负责管理某个区的域名。
- 每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道其管辖的域名与IP地址的映射关系。
- 另外,权限域名服务器还知道其下级域名服务器的地址。
🕘 5.4 本地域名服务器
- 本地域名服务器不属于上述的域名服务器的等级结构。
- 当一个主机发出DNS请求报文时,这个报文就首先被送往该主机的本地域名服务器。
- 本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中。
- 每一个因特网服务提供者ISP,一个大学,甚至一个大学里的学院,都可以拥有一个本地域名服务器,它有时也称为默认域名服务器。
- 本地域名服务器离用户较近,一般不超过几个路由器的距离,也有可能就在同一个局域网中。本地域名服务器的IP地址需要直接配置在需要域名解析的主机中。
🕒 6. 域名解析的过程
🕘 6.1 递归查询(较少使用)
🕘 6.2 迭代查询
由于递归查询对于被查询的域名服务器负担太大,通常采用以下模式:
- 从请求主机到本地域名服务器的查询是递归查询;
- 而其余的查询是迭代查询。
🕘 6.3 高速缓存
- 为了提高DNS的查询效率,并减轻根域名服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
- 由于域名到IP地址的映射关系并不是永久不变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并删除超过合理时间的项(例如,每个项目只存放两天)。
- 不但在本地域名服务器中需要高速缓存,在用户主机中也很需要。许多用户主机在启动时从本地域名服务器下载域名和IP地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询。同理,主机也需要保持高速缓存中内容的正确性。
🕒 7. DNS的报文格式
- DNS报文使用运输层的UDP协议进行封装,运输层端口号为
53
DNS有两种类型的报文,格式如下:
-
查询报文: 首部 问题部分 \begin{array}{|c|} \hline \text { 首部 } \\ \hline \text { 问题部分 } \\ \hline \end{array} 首部 问题部分
-
响应报文: 首部 问题部分 回答部分 授权部分 附加部分 \begin{array}{|c|} \hline \text { 首部 } \\ \hline \text { 问题部分 } \\ \hline \text { 回答部分 } \\ \hline \text { 授权部分 } \\ \hline \text { 附加部分 } \\ \hline \end{array} 首部 问题部分 回答部分 授权部分 附加部分
🕘 7.1 首部
首部长度为12字节。
🕤 7.1.1 标识
标识字段长度16比特,客户使用该字段进行响应与查询的匹配工作。
🕤 7.1.2 标志
标志字段长度16比特,划分为若干子字段。
- QR (查询/响应):
1
位子字段,定义报文类型 - OpCode(操作码):
4
位子字段,定义查询或响应的类型 - AA(授权回答):
1
位子字段,指示域名服务器是否为权限服务器 - TC(截断):
1
位子字段,表示响应已超过512字节并已截断为512字节 - RD(期望递归):
1
位子字段,表示客户是否希望得到递归回答 - RA(递归可用):
1
位子字段,在响应中置位时,表示可得到递归响应。 - 保留:
3
位子字段,目前置为000。 - rCode(返回码):
4
位子字段,表示在响应中的差错状态
rCode的取值 | 意义 |
---|---|
0 | 无差错 |
1 | 格式差错 |
2 | 域名服务器错误 |
3 | 域参照错误 |
4 | 查询类型不支持 |
5 | 管理上禁止 |
6/15/23 | 保留 |
🕤 7.1.3 问题记录数
问题记录数字段长度16比特,包含了报文的问题部分中的查询记录数
🕤 7.1.4 回答记录数
回答记录数字段长度16比特,包含了响应报文的回答部分中的回答记录数。在查询报文中值是0。
🕤 7.1.5 授权记录数
授权记录数字段长度16比特,包含了响应报文的授权部分中的授权记录数。在查询报文中值是0。
🕤 7.1.6 附加记录数
附加记录数字段长度16比特,包含了响应报文的附加部分中的附加记录数。在查询报文中值是0。
🕘 7.2 问题部分
- 问题部分包括了一个或多个问题记录
- 在查询报文和响应报文中都会出现
- 其格式和记录的类型有关
🕘 7.3 回答部分
- 回答部分包括了一个或多个资源记录
- 只在响应报文中出现,内容是从服务器到客户(解析程序)的回答
- 其格式和记录的类型有关
🕘 7.4 授权部分
- 授权部分包括了一个或多个资源记录
- 只在响应报文中出现,为该查询给出一个或多个权限服务器的相关信息(域名)
- 其格式和记录的类型有关
🕘 7.5 附加信息部分
- 附加信息部分包括了一个或多个资源记录
- 只在响应报文中出现。该部分提供了辅助解析程序的附加信息
- 其格式和记录的类型有关
🕒 8. DNS的记录类型
DNS使用两种类型的记录:
- 问题记录:查询报文和响应报文的问题部分
- 资源记录:响应报文的回答、授权和附加信息部分
🕘 8.1 问题记录
问题记录(question record)用于客户获取服务器上的信息。
- 查询名字字段为可变长度字段,其中包含域名信息
- 查询类型字段长度为16比特,定义查询类型。其取值如表所示:
类型 | 助记符 | 说明 |
---|---|---|
1 | A | 地址:IPv4地址,用于将域名转换为地址 |
2 | NS | 名字服务器。标志了区域的权限服务器 |
5 | CNAME | 规范名称:定义主机的正式名字的别名 |
6 | SOA | 授权开始。标记一个区域的开始 |
11 | WKS | 熟知服务。定义主机提供的网络服务 |
12 | PTR | 指针:用于将IP地址转换为域名 |
13 | HINFO | 主机信息。指明主机使用的硬件和操作系统 |
15 | MX | 邮件交换。将邮件转发到一个邮件服务器 |
28 | AAAA | 地址:IPv6地址 |
252 | AXFR | 请求传送完整区域文件 |
255 | ANY | 请求所有记录 |
- 查询类别字段长度为16比特,定义了使用DNS的特定协议。其取值如表所示:
类型 | 助记符 | 说明 |
---|---|---|
1 | IN | 因特网 |
2 | CSNET | CSNET网络 |
3 | CS | COAS网络 |
4 | HS | 由MIT开发的Hesoid服务器 |
🕘 8.2 资源记录
- 每一个域名都与一条资源记录相关联
- 服务器数据库由许多资源记录组成
- 资源记录也是服务器向客户所返回的信息。
- 域名字段包含了域名的可变长度字段
- 内容是问题记录中的域名的副本
- 域类型字段与问题记录的查询类型字段相同
- 但是查询类型中的最后两个类型不允许使用。
- 域类别字段与问题记录的查询类别字段相同
- 生存时间字段长度为
32
比特,定义了回答的有效期,以秒为单位。 - 资源数据长度字段长度为
16
比特,定义资源数据的长度。 - 资源数据字段为可变长度字段
- 包含了对查询的回答
- 包含了权限服务器的域名
- 包含了一些附加信息
- 该字段的格式和内容取决于类型字段的值。
🕒 9. 实验:了解DNS的工作机制
实验步骤:
一、打开wireshark开始抓包
二、在CMD界面输入ipconfig/flushdns,并ping www.baidu.com
三、在wireshark 显示过滤器设置过滤条件:dns,通过观察数据包分析dns的工作机制
❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页