NodeMCU UDP DNS 请求格式
Posted
技术标签:
【中文标题】NodeMCU UDP DNS 请求格式【英文标题】:NodeMCU UDP DNS request format 【发布时间】:2017-09-17 09:08:37 【问题描述】:我正在查看基于 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 地址响应每个请求,但我不确定其他字节在做什么.
【问题讨论】:
您是在询问 DNS 消息格式吗?如果是这样(我有疑问),那么我建议 tcpipguide.com/free/… 或 technet.microsoft.com/en-us/library/dd197470(v=ws.10).aspx - 当然除了 RFC2136。 【参考方案1】:哇!当人们决定提前对几乎整个数据包进行预格式化时,总是很棘手,尤其是当它跨越 RFC 的几个小节时。
无论如何,我继续分叉 CaptiveIntraweb 并注释了 DNS 代码。我还 submitted a PR 进行了更改,因此希望在将来的版本中将其拉到上游。您可以在那里阅读整篇文章(它详细介绍了每个 DNS 字段),但这里是作者所做工作的重点:
-
前两个字节是从请求中解析的 ID 字段的副本
接下来的 10 个字节是预制的标头,包括数据包类型等 (..._str1)。
接下来的 X 字节是请求中请求的 NAME 的副本
接下来的 4 个字节是其余的问题数据(类型/类),接下来的 14 个字节是压缩的 NAME,以及响应的类型/类/ttl/长度 (..._str2)。李>
最后,最后四个字节是节点的IP。
【讨论】:
非常详细的cmets,他们提供的信息非常丰富!以上是关于NodeMCU UDP DNS 请求格式的主要内容,如果未能解决你的问题,请参考以下文章
netty系列之:在netty中使用UDP协议请求DNS服务器
ESP8266, NodeMCU, soft AP - UDP server-like soft AP, 独立接入点