DNS消息格式

消息类型

DNS消息包含三种类型:

  • 请求
  • 响应
  • 更新

请求和响应在原始标准中定义,更新在RFC 2136中定义。

DNS通用消息格式

DNS通用消息格式如下:

DNS消息头

DNS消息头包含以下字段:

字段名称 描述
Transaction ID 16比特,标识一次DNS交互。由请求端生成,响应端返回,用于将响应报文对应到请求报文
Flags: 16比特,包含各种标记,标记定义如下:
Request/response 1比特,为0时表示请求,为1时表示响应
Operation code 4比特,表示操作码,0x0表示查询
Authoritative answer 1比特,表示响应者是域名的权威名字服务器
Truncation 截断标志位,1比特,为1时表示响应超过512字节,已被截断
Recursion desired 1比特,表示递归查询
Recursion available 1比特,为1时表示响应值可以处理递归查询
Reserved 3比特,保留字段,为0
Return code 4比特,返回码。0表示成功响应,0x3表示域名错误,域名在权威名字服务器上不存在
Question Resource Record count 16比特,表示问题个数
Answer Resource Record count 16比特,表示回答个数
Authority Resource Record count 16比特,表示权威资源记录个数
Additional Resource Record count 16比特,表示额外资源记录个数

问题字段

该字段表示查询的域名,包含以下三个字段:

  • Question Name:查询名,由一组labels组成,为length-value格式,1字节表示长度,尾随数据(即label)。例如对于域名www.baidu.com,表示为0x03www0x05baidu0x03com,其中十六进制数表示长度。
  • Question Type:16比特,表示查询类型,有以下类型:
    • 0x01 Host (A) record
    • 0x02 Name server (NS) record
    • 0x05 Alias (CNAME) record
    • 0x0C Reverse-lookup (PTR) record
    • 0x0F Mail exchange (MX) record
    • 0x21 Service (SRV) record
    • 0xFB Incremental zone transfer (IXFR) record
    • 0xFC Standard zone transfer (AXFR) record
    • 0xFF All records
  • Question Class:表示查询类

DNS资源记录

回答、授权、额外信息字段均采用资源记录(Resource Record)格式,定义如下:

字段名称 描述
Resource Record Name DNS域名,其格式与问题字段中的查询名相同,但是为了节省数据,如果之前出现了相同的名字,则此处的值为之前相同名字相对报文中DNS起始数据的位置。如问题的查询名为www.baidu.com,回答字段中的资源记录名字与之相同,因此其值为0xc0 0x0c(0xc0表示引用,0x0c表示查询名相对DNS起始数据的位置是12)
Resource Record Type 16比特,资源记录类型,与问题字段中查询类型相同
Resource Record Class 16比特,资源记录类(IN: 0x0001)
Time-to-Live 32比特,TTL
Resource Data Length 16比特,资源数据长度
Resource Data 资源数据
时间: 2024-11-05 13:30:37

DNS消息格式的相关文章

XMPP——xmpp客户端、服务器、网关以及地址和消息格式详解

接着上一篇文章继续学习和总结.. XMPP客户端 XMPP 系统的一个设计标准是必须支持简单的客户端.事实上,XMPP 系统架构对客户端只有很少的几个限制.一个XMPP 客户端必须支持的功能有: 通过 TCP 套接字与XMPP 服务器进行通信: 解析组织好的 XML 信息包: 理解消息数据类型. 至于对客户端为何要求如此简单,概括来说就是,xmpp把相关更多功能实现都放在了服务器端去实现和处理,这样使得客户端相对解放出来..这使得客户端编写变得非常容易,更新系统功能也同样变得容易. XMPP 客

[9] MQTT,mosquitto,Eclipse Paho---MQTT消息格式之SUBACK(消息订阅应答)消息分析

0.前言 在上一节中(MQTT消息格式之SUBSCRIBE(消息订阅)消息分析),客户端发送了订阅的消息,这个时候,服务器端收到订阅主题的MQTT消息之后,肯定需要给一个应答,这个应答信息就是SUBACK(消息订阅应答).消息订阅应答相对来说比较简单. 1.准备步骤 (1) 首先打开WireShark软件,并启动监听 (2) 在Eclipse里面运行下面的代码 [java] view plaincopy import org.eclipse.paho.client.mqttv3.MqttClie

[6] MQTT,mosquitto,Eclipse Paho---MQTT消息格式之CONNECT消息格式分析

在"[3] MQTT,mosquitto,Eclipse Paho---如何使用 Eclipse Paho MQTT工具来发送订阅MQTT消息?"一文中我已经和大家简单讲述了如何使用Eclipse Paho MQTT.那么当我们点击"Connect"按钮,究竟在TCP协议层发生了什么?如何通过MQTT规定的协议和TCP的二进制数据进行对比,从而更加深入的学习MQTT的消息格式呢?笔者将带领大家以CONNECT消息格式为例子,分析第一个MQTT的消息格式, MQTT的

Kafka的消息格式

Commit Log Kafka储存消息的文件被它叫做log,按照Kafka文档的说法是: Each partition is an ordered, immutable sequence of messages that is continually appended to—a commit log 这反应出来的Kafka的行为是:消息被不断地append到文件末尾,而且消息是不可变的. 这种行为源于Kafka想要实现的功能:高吞吐量,多副本,消息持久化.这种简单的log形式的文件结构能够更好

简易聊天程序教程(一)自定义异常和消息格式

源代码下载链接:http://download.csdn.net/detail/sky453589103/9514686 如果有什么问题,欢迎留言. 自定义异常的目的是为了更好的表示出错的原因,能够针对不同的异常执行不同的处理. 异常的自定义是简单的,只是简单的继承了Exception类.下面给出所有聊天程序的异常类的基类的ChatException的定义: package SimpleChat; public class ChatException extends Exception{ /**

[7] MQTT,mosquitto,Eclipse Paho---MQTT消息格式之CONNACK消息分析

在上节中([6] MQTT,mosquitto,Eclipse Paho---MQTT消息格式之CONNECT消息格式分析)我们分析了CONNECT消息格式,我们知道CONNECT消息是客户端发送出去的,作为对客户端的连接请求,服务器端同样会有一个消息的返回,这个消息就是CONNACK的消息.我们在发出去CONNECT消息后,如果WireShark抓包工具依然开启的话,将会抓到类似于下面的TCP消息,其16进制为:20 02 00 00,那么其代表什么意思呢? 首先我们来看CONNACK的消息格

微信企业号消息格式有哪些限制?

消息格式有哪些限制? 文字:长度不得超过600字. 图片:大小不超过2M,格式:bmp,png,jpeg,jpg,gif. 语音:大小不超过5M,长度不超过60s,格式:mp3,wma,wav,amr. 视频:大小不超过20M, 格式: rm, rmvb, wmv, avi, mpg, mpeg, mp4. 文件:大小不超过10M,格式:txt,xml,pdf,zip,doc,ppt,xls,docx,pptx,xlsx. 注意素材库素材的格式限制和消息的格式限制是保持一致的.(素材库的作用说明

pgbouncer中增加消息格式解析和调试信息后,导致链接失败的问题

由于之前增加了解析postgresQL消息的功能,为打印每个消息的内容,在另外一个protooutput.h的文件中增加了每种消息格式的inline打印函数.为了知道代码中每次采用log_debug宏打印出来的信息的location.于是修改了log_debug宏,增加打印__FILE__,__LINE__,__func__的功能.增加完成后代码的大致情况如下: 打印消息内容的protooutput.h文件中有下面的函数: log_debug修改后的代码如下: 其中LOG_TRACE_RUN宏就

MQTT-SN协议乱翻之消息格式

前言 紧接着上篇初步介绍,本文为第二篇,主要梳理MQTT-SN 1.2协议中定义的消息格式. 通用消息格式 消息头 其它可变部分 2/4字节表示 N字节组成 消息头部 长度 消息类型 1或3个字节 1个字节 长度要么是1个字节,要么3个字节表示,并且自身也会包含在其内.一个字节可表示256长度,一般情况下,完全够用了. 只需要判断第一个字节是否为 0x01,若是那么长度为3个字节表示,剩下的两个字节会表示真正的消息长度,最大长度为65535 否则长度就是一个字节表示,256个长度,大部分消息长度