捕获名称服务器:
21:54:35.391126 IP resolver.7538 > server.domain: 57385% [1au] A? www.domain.de. (42)
什么是百分号57385%是什么意思?据我所知,57385是客户序列号,加号意味着RD位设置.
第二个问题:ARCOUNT在查询中做了什么?据我了解tcpdump手册页,[1au]意味着tcpdump将此视为协议异常 – 就像我一样.我在很多查询中都看到了这一点.
解决方法
阅读源卢克:)
来自tcpdump / print-domain.c:
printf("%d%s%s%s",EXTRACT_16BITS(&np->id),ns_ops[DNS_OPCODE(np)],DNS_RD(np) ? "+" : "",DNS_CD(np) ? "%" : "");
所以%表示“禁用检查”,据我所知,RFC4035表示解析器未强制对服务器上的RR进行身份验证.
来自bind / lib / bind / resolv / res_mkquery.c:
int res_nopt(res_state statp,int n0,/*%< current offset in buffer */ u_char *buf,/*%< buffer to put query */ int buflen,/*%< size of buffer */ int anslen) /*%< UDP answer buffer size */ { [...] hp->arcount = htons(ntohs(hp->arcount) + 1);
根据RFC2671,解析器包含附加数据是完全合法的,并且这会使UDP数据包大小超过512字节限制.所以Ladadadada在这方面的假设是正确的.
感谢您的时间和抱歉我之前没有阅读过来源…