【问题标题】:How many A records can fit in a single DNS response?一个 DNS 响应中可以容纳多少 A 记录?
【发布时间】:2011-07-22 19:13:34
【问题描述】:

DNS 响应的大小限制是多少?例如,单个 DNS 响应中可以存在多少个“A”resource records? DNS 响应应该仍然可以缓存。

【问题讨论】:

  • UDP 还是 TCP? (如果响应太大,DNS 将回退到 TCP。)

标签: math dns protocols


【解决方案1】:

根据this RFC,该限制基于 UDP 消息大小限制,即 512 个八位字节。 EDNS 标准支持具有几乎无限响应大小的协商响应,但在撰写本文时(2011 年 3 月),只有 65% 的客户端支持它(这意味着您不能真正依赖它)

【讨论】:

  • 真正的 EDNS 限制是 64k 字节,大多数服务器的上限是 4k。
  • 附注该文档是互联网草稿。它还不是 RFC。
【解决方案2】:

保证支持的最大 DNS 消息大小为 512 字节。

其中 12 个已被标头用完(参见 RFC 1035 的 §4.1.1)。

问题部分接下来出现,但长度可变 - 具体来说是:

  • 域名(有线格式)
  • QTYPEQCLASS 各两个字节

因此,您的域名越长,您留给答案的空间就越少。

假设使用 标签压缩(第 4.1.4 节),每个 A 记录将需要:

  • 压缩指针两个字节
  • TYPECLASS 各有两个字节
  • TTL 四个字节
  • RDLENGTH 的两个字节
  • 四个字节用于 A 记录数据本身

即每个 A 记录 16 个字节(第 4.1.3 节)。

您应该如果可能还应将您的 NS 记录包含在 Authority Section 中。

考虑到所有这些,您可能会将大约 25 条记录压缩到一个响应中。

【讨论】:

    猜你喜欢
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 2011-02-10
    相关资源
    最近更新 更多