DNS域名协议的具体格式

一、说明

  1、提供DNS协议的服务器监听在UDP的53端口。

 

  2、客户端发送DNS协议请求和服务器返回结果都是相同的协议格式。

 

  3、有的头部是客户端使用,有的是服务器使用。

 

二、主要格式

 DNS协议的UDP协议报文格式如下:

2字节事务ID(客户端和服务端都设置) 

2字节标志:说明操作和状态。

2字节问题信息个数

2字节结果信息个数

2字节授权记录个数

2字节附加信息个数

 

负载数据(按照顺序设置)

   说明:

      请求报文只有问题信息。

      服务器回复报文有问题信息和结果信息,可能有授权信息和附加信息。

 

三、说明

  1、事务号

       事务号由客户端生成。

       客户端发送的事务号和服务端返回的事务号是一致的(不一致就请求失败)。

 

  2、标志的组成

    方向(1位比特): 值为0表示查询,由客户端设置;1表示响应,由服务端设置。

    操作码(4位比特):由客户端设置。

          0x00代表标准查询;

          0x01代表反向查询;

          0x02代表服务器状态请求;

     授权回答(1位比特):服务端设置;值为1代表是。

     截断标志TC(1位比特):服务端设置;值为1代表是。

     期望递归(1位):客户端设置,1代表是。

     递归可用(1位比特):服务端设置,1代表是。

     保留位(3位比特):设为默认值0。

     响应码(4位比特):

         0x00代表无错误

         0x01代表格式错误

         0x02代表服务器错误。

         0x03代表名字错误。

         0x04代表没有实现。

         0x05代表拒绝。

 

  3、问题个数、回答个数、授权信息个数、附加个数

        设置为一个整数值,代表后面会出现指定个数的基本单元。

        例如:问题数为1,代表后面有1个问题信息。

 

  4、负载数据

        负载数据部分是很多个连续的基本单元组成。

        按照问题信息、回答信息、授权信息、附加信息的顺序存放。

 

例如:

        问题信息有2个,就先放置2个问题信息,再放置后面的回答信息。

        有0个问题信息,就忽略它,继续放置后面回答信息。

 

四、域名信息的字节格式

  1、已知有域名"www.qq.com"

  2、按照字符"."分割。

  分割成的每部分结果:

www

qq

com

  3、在每个字符串的前面用1字节来说明字符串的字节长度。

      按照顺序拼接,用字节值0结尾。

      把结果打印成字符的结果如下:

3www2qq3com0

 

    压缩格式:如果第1个字节的前面2位比特是11,那么后面14位比特代表指针的偏移量(0代表第1个字节)。

    例如:假设是指针,并且偏移量是45,就从第46个字节开始读域名,直到0字节结束。

 

五、负载数据基本单元的格式

  (一)问题信息单元格式

域名信息的字节序列(长度可变)

2字节类型(值为1代表IPV4地址)

2字节种类(值为1代表Internet网络)

 说明:类型中1代表ipv4地址,28代表ipv6地址。

 

  (二)回答、授权、附加信息单元格式

域名信息字节序列(长度可变)

2字节类型

2字节种类

4字节生存时间

2字节负载长度

负载数据(长度指定)

  说明:

        域名信息、类型、种类的格式和问题信息相同。

        负载数据的字节长度由前面2字节负载长度指定;

        例如ipv4地址占4字节,ipv6占16字节。

        负载数据的IP地址每个字节需要自己用字符"."连接;IPV6需要":"连接。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值