DNS报文格式(RFC1035)

2、资源记录定义(RR definitions)
    2.1 格式
         后面分析报文的时候详细解释。
    2.2 类型值(TYPE values)
         类型主要用在资源记录中,注意下面的值是QTYPE的一个子集。
        类型           值和含义
         A               1 a host address
         NS              2 an authoritative name server
         ====
         TXT             16 text strings
    2.3 查询类型(QTYPE values)
         查询类型出现在问题字段中,查询类型是类型的一个超集,所有的类型都是可用的查询类型,其他查询类型如下:
         AXFR            252 A request for a transfer of an entire zone
         MAILB           253 A request for mailbox-related records (MB, MG or MR)
         MAILA           254 A request for mail agent RRs (Obsolete - see MX)
         *               255 A request for all records
  ====

二、报文

1、报文格式(Format)
    dns请求和应答都是用相同的报文格式,分成5个段(有的报文段在不同的情况下可能为空),如下:
    +---------------------+
    |        Header       | 报文头
    +---------------------+
    |       Question      | 查询的问题
    +---------------------+
    |        Answer       | 应答
    +---------------------+
    |      Authority      | 授权应答
    +---------------------+
    |      Additional     | 附加信息
    +---------------------+
    Header段是必须存在的,它定义了报文是请求还是应答,也定义了其他段是否需要存在,以及是标准查询还是其他。
    Question段描述了查询的问题,包括查询类型(QTYPE),查询类(QCLASS),以及查询的域名(QNAME)。剩下的3个段包含相同的格式:一系列可能为空的资源记录(RRs)。Answer段包含回答问题的RRs;授权段包含授权域名服务器的RRs;附加段包含和请求相关的,但是不是必须回答的RRs。
    1.1 Header的格式
        报文头包含如下字段:
                                    1 1 1 1 1 1
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                      ID                       |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |QR|   Opcode |AA|TC|RD|RA|   Z    |   RCODE   |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                    QDCOUNT                    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                    ANCOUNT                    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                    NSCOUNT                    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                    ARCOUNT                    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
        各字段分别解释如下:
        ID      请求客户端设置的16位标示,服务器给出应答的时候会带相同的标示字段回来,这样请求客户端就可以区分不同的请求应答了。
        QR      1个比特位用来区分是请求(0)还是应答(1)。
        OPCODE 4个比特位用来设置查询的种类,应答的时候会带相同值,可用的值如下:
                0               标准查询 (QUERY)
                1               反向查询 (IQUERY)
                2               服务器状态查询 (STATUS)
                3-15            保留值,暂时未使用
        AA      授权应答(Authoritative Answer) - 这个比特位在应答的时候才有意义,指出给出应答的服务器是查询域名的授权解析服务器。
                注意因为别名的存在,应答可能存在多个主域名,这个AA位对应请求名,或者应答中的第一个主域名。
  =====
    1.2 Question的格式
        在大多数查询中,Question段包含着问题(question),比如,指定问什么。这个段包含QDCOUNT(usually 1)个问题,每个问题为下面的格式:
                                    1 1 1 1 1 1
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                                               |
    /                     QNAME                     /
    /                                               /
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                     QTYPE                     |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                     QCLASS                    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
        字段含义如下
        QNAME   域名被编码为一些labels序列,每个labels包含一个字节表示后续字符串长度,以及这个字符串,以0长度和空字符串来表示域名结束。注意这个字段可能为奇数字节,不需要进行边界填充对齐。
        QTYPE   2个字节表示查询类型,.取值可以为任何可用的类型值,以及通配码来表示所有的资源记录。
        QCLASS 2个字节表示查询的协议类,比如,IN代表Internet。

摘自:http://blog.csdn.net/tigerjibo/article/details/6827736

时间: 2024-11-07 12:28:47

DNS报文格式(RFC1035)的相关文章

TCP报文格式,TCP的三次握手和四次挥手&hosts文件

1.TCP报文格式 TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接 序号(4字节=32位): 37 59 56 75 用来标识TCP发端向TCP收端发送的数据字节流 确认序号(4字节=32位): 由于该报文为SYN报文,ACK标志为0,故没有确认序号(ACK标志为1时确认序号才有效)TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1 一旦连接建立,该值将始终发送(同ACK标志) 头部长度:该字段占用4位,用来表示报文首部

转_结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)

转自: http://blog.chinaunix.net/uid-9112803-id-3212041.html 摘要: 本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析. 一.概述 TCP是面向连接的可靠传输协议,两个进程互发数据之前需要建立连接,这里的连接只不过是端系统中分配的一些缓存和状态变量,中间的分组交换机不维护任何连接状态信息.连接建立整个过程如下(即三次握手协议): 首先,客户机发送一个特

DHCP原理及报文格式

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是IETF为实现IP的自动配置而设计的协议,它可以为客户机自动分配IP地址.子网掩码以及缺省网关.DNS服务器的IP地址等TCP/IP参数.了解DHCP工作过程可以帮助我们排除有关DHCP服务遇到的问题.DHCP 协议是基于UDP层(这也就是说在snort检测过程中,只能看UDP的包)之上的应用,dhcp使用udp携带报文,udp封装在ip数据包中发送.我们先来看下dhcp报文格式 OP:若是cl

DHCP报文格式

DHCP报文格式 报文格式 DHCP报文是承载于UDP上的高层协议报文,采用67(DHCP服务器)和68(DHCP客户端)两个端口号. DHCP的报文格式如下图所示. 图1 DHCP报文格式 DHCP报文中各字段的含义: 字段 长度 含义 OP 1字节 表示报文的类型: 1:客户端请求报文 2:服务器响应报文 htype 1字节 表示硬件地址的类型.对于以太网,该类型的值为“1”. hlen 1字节 表示硬件地址的长度,单位是字节.对于以太网,该值为6. Hops 1字节 跳数.客户端设置为0,

HTTP报文格式

 HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文. 请求报文 一个HTTP请求报文由请求行(request line).请求头部(header).空行和请求数据4个部分组成,下图给出了请求报文的一般格式. (1)请求行 请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.例如,GET /index.html HTTP/1.1. HTTP协议的请求方法有GET.POST.HEA

SOAP学习,构建实际的报文格式

因为需要做一个SOAP的接口对接,对方环境没有弄好不能抓包,也只会调用不懂格式构成,我们只想做个轻量级的接口,不需要支持SOAP的具体格式,只需要针对接口指定的具体参数名,解析字符串就可以了. 所以需要通过抓包确定一下soap的报文格式,方便做字符串解析和报文拼装. 因此准备构建一个php的soap环境,进行抓包. 当前环境 centos6.3系统,默认php不支持soap,下载了php5.6版本 编译 ./configure  '--with-libxml-dir=/usr/lib' '--w

报文格式【定长报文】

定长报文简介 定长报文,是目前使用最广泛的报文,同时比较简单的报文格式.理解起来也较为简单,但定长报文也有自身的局限性.其中最大的问题在于,如果定义域的长度需要加长,这时候相关的配置与程序代码都需要进行相应的改变,所以维护很不方便. 定长报文,就是使用固定的长度来表示一个信息.本报文格式常见于金融银行业,所以以银行开户场景为例说明,例如银行柜面开户时,需要记录开户人的姓名,假定用户名用30个字节来表示,这样应该就可以满足国人的需要,15个汉字长度.当然我们这里也有开户时间的需要,那我们假定为8位

LLDP报文格式

前面已经知道了Floodlight Controller是通过从SW发送LLDP帧来获得链路信息的,链路层发现协议(L2)是通过在本地网络中广播LLDP报文来通告自己的设备信息,从而服务于拓扑计算,(wikipedia:LLDP information is sent by devices from each of their interfaces at a fixed interval, in the form of an Ethernet frame. Each frame contains

ARP地址解析协议<四>——ARP地址规格参数和通用地址及报文格式

1.ARP的基本操作: 就是本地网络中的一对请求和响应的传输. 理解:源(要发送IP数据报的设备)发送一个包含目的地(接收数据报的一方)信息的广播,目的地则使用单播向该源发回一个响应,告诉源那个目的地的MAC地址. 2.ARP报文类型: 首先,在ARP中发送了2种不同的报文,分别是,从源到目的地和从目的地到源.发送方是发送报文,目标方是接收报文.发送方和目标方的身份对每个报文都不一样,根据具体的情况而定. 3.发送方和目标方的身份是如何用于请求和回答的呢? 首先,再先介绍4个关键词: 请求.回答