Tom*_*ime 5 domain-name-system
我有一个包含 3 个 TXT 记录的 DNS 域:
$ORIGIN example.com.
@ IN TXT "thing one veryveryveryveryveryverylong"
@ IN TXT "thing two veryveryveryveryveryverylong"
@ IN TXT "thing three veryveryveryveryveryverylong"
Run Code Online (Sandbox Code Playgroud)
当我执行 DNS 查询 ( dig example.com. txt
) 时,回复适合 UDP 数据包,因为有效负载小于 512 字节(导致数据包小于 576 字节)。
但是我知道如果回复足够长,它将被截断并且 DNS 客户端将不得不使用 TCP 重复请求,TCP 具有更长的长度限制。
如何在不生成 DNS 记录和查询的情况下计算我是否超过了长度限制?
我假设这个公式是这样的:
N: the number of TXT records on that label.
P: the number of bytes in all the TXT records.
S: the total number of text segments (TXT records can have multiple text segments per record)
UDP is required if N*a + P*b + S*c is more than 512
Run Code Online (Sandbox Code Playgroud)
a、b 和 c 的值是什么?
(还是我走错方向了?)
在实践中,您不应该在实现 TXT 记录之前尝试预先计算它们的确切响应大小。有许多变数在起作用,其中一些是您无法控制的。大多数管理员根据他们从权威服务器观察到的现有 TXT 记录响应的大小进行概括,并称之为一天。由于您的问题的重点是如何避免泛化,因此该答案将重点关注为什么难以使用精确计算。
(这个答案不应被视为支持或反对试图保持在 512 字节内的声明,它是对用于这样做的方法的评论。)
sDNSHeader + sQuestion + sAnswer + sAuthority + sAdditional
Run Code Online (Sandbox Code Playgroud)
您能编写一个程序或脚本来为您完成所有这些计算吗?当然。对您要解决的问题是否很好地利用了时间?可能不是。使用区域内现有的 TXT 记录作为粗略的大小指南,如果增长超过 512 字节是一个问题,请确保您熟悉利用 TXT 记录的相关标准中内置的任何“包含”功能。(SPF等)
归档时间: |
|
查看次数: |
3680 次 |
最近记录: |