一般来说,我从注册商 D.I. 那里购买了一个域名。在负责的 dns-server 的设置中,他指定了他的 ip 地址,然后打开了一个套接字(端口 53)来监听数据报。通过firefox浏览器,输入购买的域名,收到一条dns消息,开始解析。
研究了rfc-1035并基于这些知识,我解析了标题、问题部分、答案,但还有一个附加部分。信息,我只是静止了几天,我无法理解它的结构,尽管 rfc 声明答案部分,权力和附加具有相同的结构,即 在记录的开头,域名(标签或指针)等。
在第一行的图像中,第二行中 dns 请求的符号表示被解释为数字,所有字符和数字都由一个 Sheffer 笔划分隔,以便于阅读。图片中没有dns头,但说明这是一个请求,问题部分(A型)有1-record,附加部分有1-record。信息。换句话说,图像以域名的第一个标签开始。
在红线之后,一个我不理解的签名开始,但这是疑问部分之后的第一个字节。消息按原样显示。big-endian 和“unsigned char”数字:
帮助请。
让我们试着弄清楚
根据 rfc-1035,RR 以域名开头,后跟两个八位字节编码记录类型 (TYPE)。
在您的情况下,域名是
0
根。一种类型 -0 41
。我们在wiki中了解到类型 41 是支持EDNSOPT
所需的伪记录类型我们去rfc6891看一下OPT记录的结构:
所以,我们有 NAME
0
, TYPE -0 41
。接下来是 UDP 数据包大小的 2 个八位字节 -5 200
即 5 << 8 + 200 = 1480。然后是四个八位字节的 RCODE 和标志。它们的结构分别描述:
从您的示例中可以看出:
0
0
1
0
并且 RDLEN 的大小完成了一切
0
,也就是说,没有额外的选项。简而言之,发送方发送 DO 标志以表明它愿意接收 RR 响应中的 DNSSEC 记录。