gpt4 book ai didi

lua - NodeMCU UDP DNS 请求格式

转载 作者:行者123 更新时间:2023-12-04 21:06:50 24 4
gpt4 key购买 nike

我在看 this example建立在 NodeMCU 平台上的强制门户,我试图了解 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 的几个小节时。

无论如何,我继续 fork CaptiveIntraweb并注释了 DNS 代码。我也submitted a PR随着我的更改,它有望在 future 的版本中被拉到上游。您可以在那里阅读整篇文章(它详细介绍了每个 DNS 字段),但以下是作者所做工作的重点:

  • 前两个字节是从请求中解析出的 ID 字段的副本
  • 接下来的 10 个字节是一个预制的 header ,包括数据包的类型等 (..._str1)。
  • 接下来的 X 字节是从请求
  • 请求的 NAME 的副本。
  • 接下来的 4 个字节是问题数据的其余部分(类型/类别),接下来的 14 个字节是压缩的 NAME,以及响应的类型/类别/ttl/长度 (..._str2)。
  • 最后,最后四个字节是节点的 IP。
  • 关于lua - NodeMCU UDP DNS 请求格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43524492/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com