DNS工作原理讲解-创新互联

我们通常使用域名来访问目标机器,而不是直接使用其IP地址,那么域名与IP地址之间存在什么样子的转化关系呢?想要了解他们之间的转化关系,我们不得不提域名查询服务。域名查询服务具有很多种实现方式,例如:NIS(Network Information Service,网络信息服务)、DNS和本地静态文件等。本次主要讲解DNS。

成都创新互联是一家专业提供清徐企业网站建设,专注与成都做网站、成都网站制作、H5技术、小程序制作等业务。10年已为清徐众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
  1. DNS请求/应答报文详解

    DNS是一套分布式的域名服务系统。每个DNS服务器中都存放着大量的域名与IP地址之间的映射,并且是动态更新的。众多网络客户端程序是通过DNS协议去域名服务器中查询目标IP地址的。DNS查询与应答报文格式如下图所示:


0                                                                     15 16                                                                  31

16位标识位(ID)
16位标志位
16位请求记录数目16位应答记录数目
16位授权记录数目16位额外记录数目
32位查询记录信息
应答记录信息(长度可变)
授权记录信息(长度可变)
额外记录信息(长度可变)

    16位标识字段是用来标记一对查询/应答报文的,通过查询该字段来确定返回的应答报文是由哪一个查询报文发出的。


    16位标志字段是用来协商通信方式和返回通信状态的,DNS头部报文标识字段的具体细节如下图所示:


QRopcode
AA
TCRD
RAzero
rcode
1位4位1位1位1位1位3位4位

    各个标识符的含义分别是:


  • QR:查询/应答标识,0标识查询,1标识应答。

  • opcode:定义查询和应答的类型。0标识标准查询,1标识反向查询(根据IP地址查询域名),2标识请求服务器状态。

  • AA:授权服务器应答标识。1标识域名服务器是授权服务器。

  • TC:截断标识,仅当DNS报文使用UDP服务时使用。因为UDP数据包有长度限制,当长度过长时会被截断。1标识DNS报文长度超过512字节,并被截断。

  • RD:递归查询标识。1标识执行递归查询,即DNS服务器无法解析某一个主机名,则它向其它DNS服务器继续查询,如此反复,直到它解析到目标主机名并返回给客户端。0标识迭代查询,即DNS服务器无法解析目标主机时,它将查询到的其它DNS服务器的IP地址返回给客户端,供客户端进行参考。

  • RA:允许递归标识。此字段在应答字段中使用,1标识DNS服务器支持递归查询。

  • zero:默认为0,属于保留字段。

  • rcode:4位返回码,标识应答状态。常用值有0(无错误)和3(域名不存在)

    接下来的四个字段分别指出了DNS报文最后四个字段的资源记录数目。对查询报文而言,它一般包含一个查询问题,而应答记录数目、授权记录数目、额外记录数目为0.对于应答报文而言,应答记录数目至少是1,而授权记录数目和额外记录数目可为0或非0.

    查询问题格式如下:


0                                                                    15 16                                                                 31

查询名
16位查询类型16位查询类
    查询名以一定的格式封装了要查询的主机域名。16位查询类型表示如何执行查询操作,常见的查询操作如下所示:

  •    类型A:值是1,表示获取目标主机的IP地址。

  •   类型CNAME:值是5,表示获取目标主机的别名。

  •   类型PTR:值是12,表示反向查询。

    16位查询类通常是1,表示获取因特网地址(IP地址)

    应答字段、授权字段、额外字段都采用了资源记录格式。资源记录格式如下所示:

    0                                                                15 16                                                            31

    32位域名
    16位类型16位类
    32位生存时间
    16位资源记录数据长度
    资源数据
    资源数据

      表中的32位域名是该记录中与资源对应的名字,其格式与查询记录中的查询域名所对应的格式一样。16位类型和16位类与DNS中查询记录中对应的字段格式一样。

      32位生存时间表示该查询记录结果可被客户端缓存多久,单位:秒。

      16位资源记录数据长度和资源数据字段的内容取决于类型字段。对于A类型而言,资源数据是32位IPV4地址,而资源记录长度为4(单位:字节)。

    至此,我们简要地介绍了DNS协议,接下来我们以具体例子来看DNS协议。


2. Linux下访问DNS服务

    我们要访问DNS服务,就必须要先知道DNS服务器的IP地址。Linux使用/etc/resolv.conf文件来存放DNS服务器的IP地址。在Ubuntu上,该文件的内容如下:


DNS工作原理讲解

    第一个IP地址代表DNS服务器地址。


    Linux下一个常用的访问DNS服务器的客户端程序是host,比如下面的命令是向着DNS服务器127.0.0.1查询机器www.baidu.com的IP地址:

DNS工作原理讲解

    host命令的输出告诉我们,机器名www.baidu.com是www.a.shifen.com的别名,并且该别名对应着两个IP地址。host命令使用DNS协议和DNS服务器通信,其-t选项告诉DNS协议使用哪种查询类型。我们这里使用的是A类型,即通过机器的域名获取其IP地址(但实际返回资源中还包含着机器的别名)。关于host命令的详细使用方法,请参考man手册。

3.使用TCPDUMP观察DNS通信过程

  为了看清楚DNS通信过程,下面我们将从Ubuntu上面运行host命令一查询主机www.baidu.com对应的IP地址,并使用tcpdump抓取这一过程中LAN上传输的以太网帧的数据包,具体操作如下:

DNS工作原理讲解

 这一次执行tcpdump抓包时,我们使用“port domain”来过滤数据包,表示只抓取domain域名服务的数据包,即DNS查询和应答报文,tcpdump的输出如下:


DNS工作原理讲解

    这两个数据包开始的“IP”指出,他们后面描述的内容是IP数据报。tcpdump以“IP地址:端口号”的形式来描述通信的某一端:以“>”表示数据传输方向,“>”前面是源端,后面是目的端。第一个数据包是测试机器Ubuntu(IP地址是192.168.48.2.53)发送的DNS查询报文(目标端口53是DNS服务器使用的端口,这一点我们在前面介绍过),第二个数据包是服务器反馈的DNS应答报文。





另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前标题:DNS工作原理讲解-创新互联
文章转载:http://bzwzjz.com/article/dogjsc.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 手机网站设计 成都网站建设 定制网站建设多少钱 营销型网站建设 自适应网站建设 手机网站建设 营销型网站建设 网站建设公司 成都网站制作 成都网站设计制作公司 四川成都网站设计 做网站设计 成都网站设计 移动手机网站制作 定制网站制作 高端网站设计 重庆外贸网站建设 四川成都网站建设 成都网站设计 高端网站设计推广 成都企业网站设计 成都响应式网站建设