应用层协议DNS

grantlee 2015-05-24

DNS简介

来自百度百科的定义:

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。

相对来说:

1.DNS是一个由分层的DNS服务器实现的分布式数据库;

2.一个使得主机能够查询分布式数据库的应用层协议。

3.DNS协议运行在UDP之上,使用53号端口。

DNS功能

为了标识主机,大家一般都是习惯用主机名来标识,比如说www.baidu.com,虽然这样子的主机名对于用户名来说非常的好记,但是在网络中却没有提供任何有用的位置信息,因此主机也使用了IP地址来进行了相应的标识。而DNS的主要功能就是实现主机名到IP地址转换的目录服务。

1.提供主机名到IP地址的映射;

2.主机别名;

3.邮件服务器别名;

4.负载分配。

DNS报文

在所有的DNS服务器中都存储了资源记录(RR),在RR中提供了主机名到IP地址的映射。

资源记录中包含了一下字段:

(Name,Value,Type,TTL)

TTL是该记录的生存时间,它决定了资源记录从缓存中删除的时间。而Name和Value的值取决于Type。

当Type=A时,则Name是主机名,Value是该主机名对应的IP地址。因此类型A的资源类型提供了标准的主机名到IP地址的映射。

当Type=NS时,则Name是个域名(如foo.com),而Value则是个知道如何获取该域中主机IP地址的权威DNS服务器的主机名。这个记录用于沿着查询链来路由DNS查询。

当Type=CNAME时,则Value是别名为Name的主机对应的规范主机名。该记录能够像查询的主机提供一个主机名对应的规范主机名。如(baidu.com)。

当Type=MX时,则Value是个别名为Name的邮件服务器的规范主机名。

由于DNS只有两种报文,即查询报文与回答报文,而且两种报文有着相同的格式,如下图所示:

 
应用层协议DNS
 

  前12个字节是首部区域,其中有几个字段。第一个字段(标识符)是一个16比特的数,用于标识该查询。这个标识符会被复制到对查询的回答报文中,以便让客户用它来匹配发送的请求和接收到的回答。标志字段中含有若干标志。1比特的“查询/回答”标志位指出报文是查询报文(0)还是回答报文(1)。当某DNS服务器是所请求名字的权威DNS服务器时,1比特的“权威的”标志位被置在回答报文中。如果客户(主机或者DNS服务器)在该DNS服务器没有某记录时希望它执行递归查询,将设置1比特的“希望递归”标志位。如果该DNS服务器支持递归查询,在它的回答报文中会对1比特的“递归可用”标志位置位。在该首部中,还有4个有关数量的字段,这些字段指出了在首部后的4类数据区域出现的数量。

问题区域包含着正在进行的查询信息。该区域包括:1.名字字段,指出正在被查询的主机名字;2.类型名字,它指出有关该名字的正被询问的问题类型,例如主机地址是与一个名字相关联(类型A)还是与某个名字的邮件服务器相关联(类型MX)。

在来自DNS服务器的回答中,回答区域包含了对最初请求的名字的资源记录。前面有提起过每个资源记录中有Type字段,Value字段和TTL字段。在回答报文中的回答区域中可以包含多条RR,因此一个主机名能够有多个IP地址。

权威区域包含了其他权威服务器的记录。

附加区域包含了其他有帮助的记录。

大家如果想要知道更加详细的DNS报文,可以去这个网页       http://blog.chinaunix.net/uid-24875436-id-3088461.html

或者是

http://blog.chinaunix.net/uid-12077794-id-91657.html

 

相关推荐

oLeiShen / 0评论 2020-05-26