热门推荐
DNS篇之DNS协议详解
2024-11-01 15:33

1、什么是DNS

DNS篇之DNS协议详解

域名系统(Domain Name System缩写DNS,Domain Name被译为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

D N S的一个基本特性是使用超高速缓存。即当一个名字服务器收到有关映射的信息(主
机名字到 I P地址)时,它会将该信息存放在高速缓存中。这样若以后遇到相同的映射请求
就能直接使用缓存中的结果而无需通过其他服务器查询。
 

2、DNS顶级域

顶级域名被分为三个部分
1) arpa是一个用作地址到名字转换的特殊域 。
2) 7个3字符长的普通域。有些书也将这些域称为组织域。
3) 所有2字符长的域均是基于ISO3166中定义的国家代码,这些域被称为国家域,或地理域

顶级域名(Top level domain,简称TLD)由美国的ICANN机构管理

域描述com商业组织edu教育机构gov其他美国政府部门int国际组织mil美国军事网点net网络org其他组织

3、DNS查询过程

由于 ICANN 管理着所有的顶级域名,所以它是最高一级的域名节点,被称为根域名(root domain)。在有些场合,www.example.com 被写成www.example.com. ,即最后还会多出一个点。这个点就是根域名。

理论上,所有域名查询都必须先查询根域名,因为只有根域名才能告诉你,某个顶级域名由哪台服务器管理。事实上也确实如此,ICANN 维护着一张列表,里面记载着顶级域名和对应的托管商。

比如,我要访问www.example.com ,就必须先询问 ICANN 的根域名列表,它会告诉我.com域名由 Verisign 托管,我必须去找 Verisign,它会告诉我example.com服务器在哪里。

由于根域名列表很少变化,大多数 DNS 服务商都会提供它的缓存,所以根域名的查询事实上不是那么频繁。

保存 DNS 根区文件的服务器,就叫做 DNS 根域名服务器(root name server)。

递归查询客户端向本地 DNS 服务器(即首选DNS服务器)发出请求后,一直处于等待状态,直到本地名称服务器返回查询结果。当客户端向本地 DNS 服务器发出请求后,本地 DNS 服务器查询本机缓存,如果有记录,则直接返回;如果没有,则本地 DNS 服务器以客户端的身份将查询请求发给根域名服务器,这个过程是递归查询过程。如果递归查询未查出结果,则开始进行迭代查询。

迭代查询本地 DNS 服务器以客户端的身份将查询请求发给根域名服务器后,根域名服务器通过查询返回给本地 DNS 服务器 .com 顶级名称服务器的IP地址;本地DNS服务器收到 .com 顶级名称服务器的IP地址后继续向.com顶级名称服务器发出请求,顶级名称服务器收到请求后查询缓存,如果有记录则直接返回本地DNS服务器,如果没有,则返回baidu.com二级名称服务器的IP地址;本地名称服务器继续发出请求,二级名称服务器同样查找缓存返回www.baidu.com的IP地址。(最多127级域)。本地 DNS 服务器向根服务器的查询就是迭代查询。

一次完整的查询请求经过的流程: Client -->hosts文件 -->DNS Service Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…

1、

DNS查询响应的一般格式 标识标志问题数资源记录数授权资源记录数附加资源记录数                                                    查询问题                                         回答(资源记录数可变)                                         授权(资源记录数可变)                                        附加信息(资源记录数可变

这个报文由12个字节的首部和4个可变的字段组成。

标识字段:由客户程序设置并由服务器返回结果。客户程序通过它来确定响应与查询是否匹配。

标志字段:16 bit的标志字段被划分为若干子字段

标志位字段含义 QR(1 bit)0表示查询报文, 1表示响应报文opcode(4 bit)0表示标准查询,1表示反向查询,2表示服务器状态请求AA(1 bit)授权回答 (authoritative answer)TC (1 bit)可截断的 (truncated),使用UDP时,它表示当应答的总长度超过512字节时,只返回前512个字节RD(1 bit)期望递归( recursion desired)。在一个查询中设置,并在响应中返回。这个标志告诉域名服务器必须处理这个查询,也称为一个递归查询。如果该位为 0,且被请求的名字服务器没有一个授权回答,它就返回一个能解答该查询的其他名字服务器列表,这称为迭代查询。RA(1 bit)可用递归。如果域名服务器支持递归查询,则在响应中将该比特设置为 1。大多数域名服务器都提供递归查询,除了某些根服务器。zero(3 bit)必须为0rcode(4 bit

0(没有差错)、3(名字差错)2(服务器错误

名字差错只有从一个授权名字服务器上返回,它表示在查询中制定的域名不存在。


随后的 4个16 bit 字段说明最后 4个变长字段中包含的条目数。对于查询报文,问题( question )数通常是 1,而其他3项则均为0。类似地,对于应答报文,回答数至少是 1,剩下的两项可以是0或非0。

2、DNS查询报文中的问题部分

DNS查询报文中问题部分的格式                                                         查询名查询类型查询类

查询名:即要请求的域名,它是一个或多个标识符的序列。每个标识符以首字节的计数值来说明随后标识符的字节长度,每个名字以最后字节为 0结束,长度为0的标识符是根标识符。如下图报文06表示了teredo长度,04表示ipv6的长度,以此类推,最后以00结束。计数字节的值必须是 0 ~ 63的数,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

最常用的查询类型是 A类型,表示期望获得查询名的 I P地址。一个P T R查询则请求获得一个I P地址对应的域名。

查询类通常是1(IN,指互联网地址

3、DNS响应报文中的资源记录部分
     DNS报文中最后的三个字段,回答字段、授权字段和附加信息字段,均采用一种称为资源记录RR( Resource Record)的相同格式。
 

DNS资源记录格式                                                         域名(可变长度)类型类                                                       生存时间资源数据长度资源数据(可变长度)                                                     资源数据(可变长度

如下图抓包展示的回答字段的值

域名是记录中资源数据对应的名字。它的格式和前面介绍的查询名字段格式相同。

类型说明RR的类型码。它的值和前面介绍的查询类型值是一样的。类通常为internet数据。

生存时间字段是客户程序保留该资源记录的秒数。

资源数据长度说明资源数据的数量。该数据的格式依赖于类型字段的值。对于类型 1( A记录)资源数据是4字节的I P地址。

我们已经见到了一些不同类型的资源记录(RR:IP地址查询为A类型,指针查询为类型PTR。也已看到了由名字服务器返回的资源记录:回答RR、授权RR和附加信息RR。现有大约20种不同类型的资源记录,下面将介绍其中的一些。

类型数值描述A1域名的IPv4地址AAAA34域名的IPv6地址CNAME5域名的别名,可以理解为域名的重定向,主要方便IP地址的变更NS2指定哪个域名服务器可以解析该域名的子域名SOA6授权机构记录,记录ns中哪个是主服务器。PTR12根据IP反向查找域名HINFO13主机信息:包括说明主机CPU和操作系统的两个字符串。并非所有的站点均提供它们系统的HINFO记录MX15mtp邮箱域名的IP地址。给client端指明某个域名的邮件服务器地址AXFR252对区域转换的请求ANY255对所有记录的请求

DNS-nslookup与dig的使用,这是发送DNS请求两个常用的工具

    以上就是本篇文章【DNS篇之DNS协议详解】的全部内容了,欢迎阅览 ! 文章地址:http://mdekt.bhha.com.cn/quote/108.html 
     行业      资讯      企业新闻      行情      企业黄页      同类资讯      网站地图      返回首页 康宝晨资讯移动站 http://weazh.bhha.com.cn/ , 查看更多