我有个问题。我在互联网上阅读了各种 RFC 和许多信息。我读到通过 UDP 的 DNS 有 512 字节的限制。我想编写一个 python 程序,使用这个最大限制来创建一个生成良好的 DNS 请求。使用 UDP 而不是 TCP DNS 实现非常重要。我曾尝试使用公共库,但他们没有使用 RFC 所说的可以使用的 512 字节。
使用 ~ 512 字节在单个请求中发送如此多的数据也很重要。
感谢您的帮助!
让我们让它发生!;)
您不应该对您的 DNS 请求完全强制 512 字节限制或 UDP 传输。RFC 1035对传输(第 4.2 节)的确切说法是datagrams are preferred for queries due to their lower overhead and better performance
.
也就是说,在适用的情况下,UDP优先作为更轻量级的传输,这主要是请求大小的问题。经验法则是通过 UDP 传输长度小于 512 字节的请求,通过 TCP 传输长度超过 512 字节的请求。(但也有例外,如zone refresh activities
第 4.2 节所述。)
大多数流行的 Python DNS 库(如dnspython)在使用高级查询时可以正确处理这个问题。无需重新发明轮子。
512字节的限制是针对dns消息的,不是专门针对请求的,限制只对responses有效,response可以包含Resource Records。
对于请求,您仅限于域名的 253 个字节。
您也许可以手动创建一个包含资源记录的查询,但它可能会被您的本地 dns 服务器删除。