通过DNS数据包解释DNS协议各个字段含义

这篇具有很好参考价值的文章主要介绍了通过DNS数据包解释DNS协议各个字段含义。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

通常来说,想要对DNS最为权威和全面的定义见RFC文档,这里。但是本文不是一篇面面俱到的DNS说明文档,是从使用示例出发,使用wireshark对于一个具体的DNS请求进行分析和呈现,并介绍DNS中最常见的一些字段的含义。

域名的出现是为了方便人们记住网络中的公开服务的地址,所以域名一般使用特定意义的字符串表示,例如csdn.net。但是网络空间对于主机的标识是IP地址,IP地址分为IPv4以及IPV6,例如192.168.0.1。使用数字表示地址对于机器来说是友好的,方便存储,寻址等运算。人记住的是域名,机器记住的是IP地址,为了完成人机之间的交互,DNS就出现了。DNS全称叫做domain name system,DNS的本质就是域名到IP的映射表。当然构建这张表很容易,但是如何在网络空间中用好这张表,需要软件和硬件的配合。这里的软件就是指我们通常所说的DNS协议,这里的硬件就是网络空间中存在的各种各样的DNS服务器。

DNS示例

DNS请求从业务逻辑上来讲是十分的简单,如下图1所示:
通过DNS数据包解释DNS协议各个字段含义
图1

  1. 源地址192.168.0.103对目的地址192.168.0.1发起DNS请求。
  2. 192.168.0.1对于p3p.sogou.com域名对应的IP地址进行了响应。

其中192.168.0.103是请求解析的客户端,192.168.0.1是本地的DNS服务器地址,p3p.sogou.com域名对应的IP地址有多个,包括49.7.176.34以及49.7.176.60等多个IP地址。上述是对于DNS整个业务逻辑上的描述,其请求和响应字段的解析如下。

无论是DNS请求消息还是响应消息,RFC1035中DNS消息的整体结构如下图2:
通过DNS数据包解释DNS协议各个字段含义
图2

其中header部分是每个DNS消息都具备的,根据header的不同,决定了该DNS请求和响应内容结构的不同。

DNS 头部

Header结构如下图3:
通过DNS数据包解释DNS协议各个字段含义
图3

对应图1的请求头示例如下图4:
通过DNS数据包解释DNS协议各个字段含义
图4
对应图2的响应头示例如下图5:
通过DNS数据包解释DNS协议各个字段含义
图5

transaction ID
无论对于TCP还是UDP来说,一条流上是能承载多个请求和响应的。因此通信双方为了区分一条流上出现的请求和相应对,使用了transaction ID在应用层加以区分,称之为一次事物交互。可看到图4和图5使用同一个transaction ID表示这一一堆请求和响应。
QR

  • QR字段依据第一个bit位的不同,后续的每个bit表示的含义是不同的。如果第一个标志位是0,表示这是一个DNS请求,如图4。如果第一个标志位为1,表示这是一个DNS响应如图5。
    OPCODE
    该字段一共使用4个bit表示。0表示标准的DNS请求。1表示反向DNS请求,通常DNS通过域名请求IP,反向DNS表示通过IP请求域名。但是在使用nslookup做反向DNS请求的时候,该字段值仍然是0,实际使用的是请求的type字段表示反向DNS,如图6。OPCODE为2表示请求服务器的状态。OPCODE3-15属于保留使用。
    通过DNS数据包解释DNS协议各个字段含义

图6

AA
AA即Authoritative Answer,表示权威的响应。当响应的服务器并非域名注册时候所设定的DNS服务器的时候,DNS 响应中该值都是0,如图5。当响应的服务器是域名登记时候指定的DNS服务器时候,值为1。该字段用来提醒非注册指定DNS解析服务器的响应可能存在问题。
TC
由于IP承载层的限制,上层消息过大的时候会发生分片传输,DNS应用层使用该标志位表示DNS消息是否截断。0表示是一个完整的DNS消息,1表示发生截断,如图4/5所示。
RD
Recursion desired,DNS的查询方式包含递归查询和迭代查询,该标志位为1表示请求DNS服务器采用递归查询的方式,为0表示客户端采用迭代查询方式,递归查询比较常见,如图4/5所示。关于两种查询方式会单独进行介绍。
RA
该字段在DNS响应中有意义,为1的时候表示服务器支持递归查询的方式,如上图5所示。
Z
保留位,为未来规划使用,如图4/5所示。
AD
在图3中Z保留位是3位,但是在图4/5中,Z只占了1位。这一因为RFC1035编写的时间为1987年,非常的古老,期间经历过多次的修订,如下图7:
通过DNS数据包解释DNS协议各个字段含义

图7

在RFC2535中对保留字段进行了修订,如下图8:
通过DNS数据包解释DNS协议各个字段含义
图8
因此AD的含义表示响应数据是否经过DNS服务器认证,该标志位在响应中才有实际的意义,如图5。
CD
表示没有经过服务器认证的数据是否可以接受,0表示不可接受,1表示接受,如图4/5。
RCODE
Response code,4位响应码,用来表示服务器可能存在的错误。0表示没错误,1表示DNS请求格式错误/服务器无法解析请求,2表示服务器自身问题无法解析请求。其他数值出现的频次较少,出现后可以自行查阅RFC1035文档。
QDCOUNT
2个字节表示后续查询的域名数量,图4中的值为1,对应请求中只有一个记录。
ANCOUNT
2个字节表示DNS服务器响应中条目数,如图5,有5个响应记录,因为一个域名可能对应着多个IP地址,因此出现5次响应记录。
NSCOUNT
2个字节表示经过服务器认证的记录个数,如图4/5,认证记录如图2中的结构。
ARCOUNT
2个字节表示是否存在附加信息记录个数,如图4/5,附加信息如图2中的结构。

DNS请求字段

RFC 1035定义的请求消息内容如下图9:
通过DNS数据包解释DNS协议各个字段含义
图9
QNAME
该字段表示的是请求的域名内容,由于域名字符串是变长的,因此该部分内容使用特殊编码方式,长度+字符内容,并以ASCII码0作为结束。
QTYPE
该字段使用两个字节表示请求记录的类型,如图4所示,数字1代表的是A记录,即从域名到IP地址的解析。除此之外DNS还支持诸多的其他解析请求类型,如下图10。其中CNAME表示一个别名记录;NS 表示查询DNS服务器的IP地址记录;PTR表示一个反向查询的记录,即IP到DNS的映射记录;MX表示域名到邮件服务器地址的映射记录,比如根据邮箱后缀查找对应的邮件服务器地址就属于这种场景。
QCLASS
在早期的网络中是考虑到互联网之外的其他网络的,如图11。但是现在的DNS请求中该字段基本为1,因为其他种类的网络基本消失了。
通过DNS数据包解释DNS协议各个字段含义
图10

通过DNS数据包解释DNS协议各个字段含义
图11

DNS响应字段

RFC 1035定义的请求消息内容如下图12:
通过DNS数据包解释DNS协议各个字段含义
图12

其中NAME,TYPE,CLASS的含义和请求中的内容是相同的,其他字段的含义如下:
TTL
4个字节表示DNS记录建议被缓存的秒数。
RDLENGTH
两个字节表示RDDATA部分的数据长度、
RDDATA
变长数据表示解析的内容,对应图5中解析后的IP地址。

通过DNS数据包解释DNS协议各个字段含义
上述通过RFC文档和实际的DNS数据包,对于DNS各个字段进行了介绍,后续会介绍DNS两种查询的方式。

本文为CSDN村中少年原创文章,未经允许不得转载,博主链接这里。文章来源地址https://www.toymoban.com/news/detail-486640.html

到了这里,关于通过DNS数据包解释DNS协议各个字段含义的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 二、QT工程中各个文件代表的含义

    其中TARGET可以通过更改名字生成不同.exe文件如下: 从TARGET = 01_FirstProject 变为TARGET = 01_SecondProject Core核心模块 GUI图形模块 Network网络通信模块 Mulitmedia多媒体模块 SQL数据库模块 Test测试模块 Widgets窗口中的内容单独的写到这个模块中

    2024年02月12日
    浏览(38)
  • 宽带猫指示灯各个的含义及日常问题解答

    如今很多家庭依然还是采用猫拨号上网,尽管猫一般也很少坏,但又时候也容易出各种网络问题,我们可以通过猫上面的指示灯来判断大致的问题,以下一起来看看猫指示灯的含义与常见问题解答。 热点相关:什么是猫(modem) 猫和路由器连接方法 猫指示灯的含义与常见问

    2024年02月05日
    浏览(58)
  • 常用的各种硬件接口/端口中各个引脚代表的含义(持续更新)

    参考:https://blog.csdn.net/qlexcel/article/details/117429653,https://www.usbzh.com/article/detail-144.html 参考:https://blog.csdn.net/qlexcel/article/details/117431413,https://blog.csdn.net/HandsomeHong/article/details/119823915,https://blog.csdn.net/dongxiaodongvip/article/details/119834444 母头引脚如下, 公头引脚如下 引脚定义:

    2024年02月02日
    浏览(38)
  • AD使用中各个层的含义,阻焊层与驻焊层的区别;

    top layer - 顶层 bottom layer - 底层 mechanical-机械层 keepout layer-禁止布线层 top overlay-顶层丝印层 bottom overlay-底层丝印层 top paste-顶层助焊层 bottom paste-底层助焊层 top solder-顶层阻焊层 bottom solder-底层阻焊层 drill guide-过孔引导层 drill drawing-过孔钻孔层 multilayer-多层 AD最难理解的就是

    2024年02月06日
    浏览(41)
  • Microsoft SQL Server 2012 CONVERT(VARCHAR(100), GETDATE(), 0); 各个数字的含义

    如果是2016以上的,可以直接诶去官网查看,官网链接: CAST 和 CONVERT (Transact-SQL) - SQL Server | Microsoft Learn 这里给的链接是2016的,可以坐上角调整数据库版本,然后搜索convert 这是我的数据库版本:Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)   Oct 19 2012 13:38:57   Copyright (c) Microsoft

    2024年02月19日
    浏览(44)
  • webrtc sdp各字段含义

    WebRTC使用Session Description Protocol(SDP)实现传输协议的协商和描述。以下是SDP中常见的字段及其含义: v:协议版本号 o:会话创建者的标识符、会话ID、和会话版本号 s:会话名称 t:会话时间描述(会话开始和会话结束时间) a:会话级别的属性描述,例如:带宽限制、编解码

    2024年02月10日
    浏览(44)
  • MQTT协议图解,一文看懂MQTT协议数据包(真实报文数据解析解释)

    本文主要介绍MQTT协议的结构和具体的2条报文数据解析,帮忙更简单、快速地理解mqtt协议,如果要深入了解实现完整的协议,可以查看文章最后的完整协议文档做更深入的研究。 MQTT协议在lot领域是使用的最广泛的通用协议,在一般企业级物联网产品开发中,通常会考虑的协

    2023年04月16日
    浏览(43)
  • Ceph入门到精通-FAQ-display ospf error中,各个Error值的含义是什么

    发布时间:  2015-02-13  |   浏览次数:  4738  |   下载次数:  0  |   文档编号: EKB1000068090 目录 问题描述解决方案 Q:display ospf error中,各个Error值的含义是什么? A: 1、General packet errors: 通用报文错误计数: − IP: received my own packet:收到源地址是自己IP地址发送的报文。

    2024年02月11日
    浏览(44)
  • mysql中explain的字段含义

    在MySQL中,EXPLAIN语句用于分析查询语句的执行计划。它返回一组关于查询执行的信息,其中包括一些重要的字段。以下是一些常见的字段及其含义: 1、id: 查询的标识符,表示查询的顺序。如果查询是复合查询(包含子查询或联接),则会出现多个id。 2、select_type: 表示查

    2024年02月12日
    浏览(37)
  • git提交规范,fix,feat的字段含义

    主要是在提交代码时标识本次提交的属性 feat : 新功能(feature) fix : 修补bug docs : 文档(documentation) style : 格式(不影响代码运行的变动) refactor : 重构(即不是新增功能,也不是修改bug的代码变动) chore : 构建过程或辅助工具的变动 revert : 撤销,版本回退 perf : 性能优化

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包