微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

lua – NodeMCU UDP DNS请求格式

我正在寻找建立在NodeMCU平台上的 this example强制门户网站,我正在努力了解DNS请求的工作原理. (相关文件是dns-liar.lua)我或多或少地解码了响应的内容,但不知道它的每个部分是做什么的,而且我找不到任何显示类似数据包结构的在线资源.

NodeMCU的IP:

a.b.c.d

请求:

|A|B| ... |(13th byte) \0 terminated string (str)| ...

响应:(以“|”分隔的字节数)

|A|B|x80|x00|x00|x01|x00|x01|x00|x00|x00|x00|str|x00|x01|x00|x01|xC0|x0C|x00|x01|x00|x01|x00|x00|x03|x00|x00|x04|a|b|c|d|

我认为str可能是要搜索的域,而abcd只是NodeMCU用自己的IP地址响应每个请求,但我不确定其他任何字节是做什么的.

解决方法

呼!当人们决定提前格式化几乎整个数据包时,这总是很棘手,特别是当它跨越RFC的几个子部分时.

无论如何,我继续前进并分叉CaptiveIntraweb评论了DNS代码.我还有submitted a PR我的更改所以它有望在未来的版本中被拉上游.您可以在那里阅读整个内容(它详细介绍了每个DNS字段),但以下是作者正在做的事情的重点:

>前两个字节是从请求中解析的ID字段的副本>接下来的10个字节是预制的标题,包括数据包的类型等等(…_ str1).>下一个X字节是请求中请求的NAME的副本>接下来的4个字节是问题数据的其余部分(类型/类),接下来的14个字节是压缩的NAME,以及响应的类型/ class / ttl / length(…_ str2).>最后,最后四个字节是节点的IP.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐