DNS报文格式
1、基础结构部分:是报文首部,包含6个字段,共12个字节。
事务ID:16位的ID标识,用于区分请求和响应报文,对于请求报文和其对应的应答报文,该字段的值是相同的。
标志:16位的标志字段,又分为多个子字段。
QR:查询请求/响应的标志信息,查询请求时,值为0;响应时,值为1。
Opcode:操作码,0表示标准查询;1表示反向查询;2表示服务器状态请求。
AA:授权应答,该字段在响应报文中有效,值为1时,表示名称服务器是权威服务器;值为0时,表示不是权威服务器。
TC:表示是否被截断,值为1时,表示响应已超过512字节并已被截断,只返回前512个字节。
RD:期望递归,该字段能在一个查询中设置,并在响应中返回,此标志告诉名称服务器必须处理这个查询,这种方式被称为一个递归查询,如果该位为0,且被请求的名称服务器没有一个授权回答,它将返回一个能解答该查询的其他名称服务器列表,这种方式被称为迭代查询。
RA:可用递归,该字段只出现在响应报文中,当值为1时,表示服务器支持递归查询。
Z:保留字段,在所有的请求和应答报文中,它的值必须为0。
rcode:返回码字段,表示响应的差错状态,当值为0时,表示没有错误;当值为1时,表示报文格式错误(Format error),服务器不能理解请求的报文;当值为2时,表示域名服务器失败(Server failure),因为服务器的原因导致没办法处理这个请求;当值为3时,表示名字错误(Name Error),只有对授权域名解析服务器有意义,指出解析的域名不存在;当值为4时,表示查询类型不支持(Not Implemented),即域名服务器不支持查询类型;当值为5时,表示拒绝(Refused),一般是服务器由于设置的策略拒绝给出应答,如服务器不希望对某些请求者给出应答。
问题计数:16位整数,表示问题节中的记录数。
权威名称服务器计数:16位整数,表示权威信息节中的资源记录数。
附加资源记录数:16位整数,表示附加信息节中的资源记录数。
2、问题部分:保存查询的问题,每个问题由3个字段组成。
待查询域名:长度不固定,由具体域名决定,按“.”切分成若干部分,再依次保存,每个部分由一个前导计数字节开头,记录当前部分的字符数。
查询类型:常见类型有A记录(IP地址)、AAAA记录(IPv6地址)等。
类:通常为1,表示TCP/IP互联网地址。
3、资源记录部分:服务端处理查询请求后,将结果作为资源记录保存在答案以及其后两节中,答案节、授权信息节和附加信息节均由一条或多条资源记录组成,记录数目保存在头部中的对应字段。
被查询域名:与问题记录相同。
查询类型:与问题记录相同。
类:与问题记录相同。
有效期:域名记录一般不会频繁改动,所以在有效期内可以将结果缓存起来,降低请求频率。
数据长度:即查询结果的长度。
数据:即查询结果,如果查询类型是A记录,那查询结果就是一个IP地址,保存于资源记录中的数据字段;而数据长度字段值为4,因为IP地址的长度为32位,折合4字节。
相关问题与解答
1、什么是DNS报文?
DNS报文是在DNS协议中传输的数据包,用于在客户端和服务器之间传递域名解析的请求和响应,它遵循特定的格式,包括基础结构部分、问题部分和资源记录部分。
2、DNS报文的基础结构部分有哪些字段?它们各自的含义是什么?
基础结构部分包含事务ID、标志、问题计数、回答资源记录数、权威名称服务器计数、附加资源记录数这6个字段,事务ID用于区分请求和响应报文;标志字段包含QR、Opcode、AA、TC、RD、RA、Z、rcode等多个子字段,分别表示查询请求/响应的标志、操作码、授权应答、是否被截断、期望递归、可用递归、保留字段和返回码等信息;问题计数、回答资源记录数、权威名称服务器计数、附加资源记录数则分别表示相应部分的记录数量。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/136491.html