DNS系统
1、DNS的授权:
网络信息中心NIC负责分配顶极域和委派其他指定地区域的授权机构。一个独立管理的DNS子树称为一个区域,许多二极域将他们的子域划分为更小的区域。当一个系统加入到一个区域中时,该区域的DNS管理者为该新系统申请一个域名和一个IP地址,并将他们加入到名字服务器的数据库中。 一个名字服务器负责一个或多个区域,一个区域的管理者必须为该区域提供一个主名字服务器和至少一个辅助名字服务器。 每个主名字服务器都必须知道根名字服务器的IP地址,根服务器必须知道所有二极域中每个授权名字服务器的名字和IP地址。
2、DNS报文格式:由12个字节首部和4个长度可变的字段组成。
标识 |
标志 |
问题数 |
资源记录数 |
授权资源记录数 |
额外资源记录数 |
查询问题 |
问答(资源记录数可变) |
授权(资源记录数可变) |
额外信息(资源记录数可变) |
◆ 标识字段由客户程序设置并由路由器返回结果。客户程序通过它来确定响应与查询是否匹配。 ◆ 标志字段被划分为若干子字段:
QR |
opcode |
AA |
TC |
RD |
RA |
(zero) |
rcode |
QR-1位,0表示查询,1表示响应报文。 Opcode-4位,0表示标准查询,1表示反向查询,2表示服务器状态请求。 AA-1位,表示授权回答。 TC-1位,表示时可截断的,使用UDP时,它表示应当的总长度超过512字节时,只返回前512个字节。 RD-1位,表示期望递归。该位能在一个查询中设置,并在响应中返回。这个标志告诉名字服务器必须处理这个查询。如果该位为0,且被请求的名字服务器没有一个授权回答,它就返回一个能解答该查询的其他名字服务器列表,这称为叠代查询。 RA-1位,表示可用递归。如果名字服务器支持递归查询,则在响应中将该位置为1。 Rcode-4位返回码,0表示没有差错,3表示名字差错。名字差错只有从一个授权服务器上返回,它表示在查询中指定的域名不存在。 随后的4个16位的字段说明最后4个变长字段中包含的条目数。对于查询报文,问题数通常是1,而其他3项均为0。对于应答报文,问答数至少为1,剩下的2项可以是0或非0。
3、DNS查询报文中的问题部分:
格式如下,通常只有一个问题。
查询名是要查找的名字,它是一个或多个标识符的序列。每个标识符以首字节的计数值来说明随后标识符的字节长度,每个名字以最后字节为0结束,长度为0的标识符是根标识符。计数字节的值必须为0-63,因为标识符的最大长度仅为63。该字段无需以整32为为边界,即无需填充字节。
举例:gemini.tuc.noao.edu的存储: 6gemini3tuc4noao3edu0
每个问题有一个查询类型,而每个响应(资源记录)也一个类型。最常见的查询类型是A类型(值为1),表示期望获得查询名的IP地址,一个PTR查询(值为12)则请求获得一个IP地址对应的域名。 查询类一般是1,指互联网地址。
4、DNS响应报文中的资源记录部分:
DNS报文中的最后三个字段,回答字段、授权字段和附加信息字段,均采用一种称为资源记录(RR)的相同格式。RR格式如下:
域名是记录中资源数据对应的名字,它的格式和前面的查询名字段格式一样。 类型说明RR的类型码,它和前面的查询类型值是一样的。通常为1,表示互联网数据。 生存时间是客户程序保留该资源记录的秒数,资源记录通常的生存时间为2天。 资源数据长度说明资源数据的数量,该数据的格式依赖域类型字段的值,对于类型A资源数据是4字节的IP地址。
5、指针查询:给定IP地址,返回与该地址对应的域名。
例如顶极域名edu和它下面的noao域,对应的是网络号为140.252的B类网络。noao.edu的下一级必须是该IP地址的第一个字节(这里是140),再下一级为该IP地址的下一个字节(这里是252)。由于DNS名字是由DNS树的底部逐步向上书写的。这意味者IP地址为140.252.13.33的主机,它的DNS名字是33.13.252.140.noao.edu。
6、主机名检查:
当IP数据报到达一个作为服务器的主机时,无论时UDP数据报还是TCP连接请求,服务器进程所能获得的是客户的IP地址和端口号,某些服务器需要客户的IP地址来获得在DNS中的指针记录。
7、 资源记录:
IP地址查询为A类型,指针查询为类型PTR。名字服务器返回的资源记录:回答RR、授权RR和附加信息RR。
(1) A-一个A记录定义了一个IP地址。
(2) PTR-指针记录用于指针查询,IP地址被看作是noao.edu域下的一个域名。
(3) CNAME-表示规范名字,用来表示一个域名,而有规范名字的域名通常叫做别名。某些FTP服务器使用它向其他的系统提供一个易于记忆的别名。
(4) HINFO-表示主机信息,包括说明主机CPU和操作系统的两个字符串。
(5) MX-邮件交换记录。功能:如果有邮件要发往use@foo.com,就将邮件发送到relay1.uu.net。
(6) NS-名字服务器记录。它说明一个域的授权名字服务器,它由域名表示。
8、 高速缓存:
为了减少Internet上的DNS通信量,所有的名字服务器均使用高速缓存。
9、 用UDP还是TCP:
DNS均支持UDP和TCP,端口号都是53。当查询请求响应的长度超过了512个字节,而仅返回前512个字节,在这种情况下,名字解析器通常使用TCP重发原来的查询请求。既然DNS主要使用UDP,因此好的重传和超时程序就很重要了。
|