gpt4 book ai didi

dns - DNS 名称的最大长度是多少

转载 作者:行者123 更新时间:2023-12-03 10:33:17 38 4
gpt4 key购买 nike

我看到几个提到 DNS 名称(域名)的最大字符串长度为 253 个字符。维基百科似乎指的是这篇旧博文:

https://en.wikipedia.org/wiki/Hostname
http://blogs.msdn.com/b/oldnewthing/archive/2012/04/12/10292868.aspx

另一方面,如果我理解RFC,这篇文章是错误的。 DNS 名称最大字符串长度应为 250 个 ASCII 字符,而不是基于以下字节序列的 253 个字符,根据 RFC1035最大为 255 字节:

To simplify implementations, the total length of a domain name (i.e., label octets and label length octets) is restricted to 255 octets or less.



根据 RFC1035,域名的组成如下:

a domain name represented as a sequence of labels, where each label consists of a length octet followed by that number of octets. The domain name terminates with the zero length octet for the null label of the root. Note that this field may be an odd number of octets; no padding is used.



这意味着以下字段组成了域名:
  • 标签长度 ( LL ): 1 字节
  • 标签名称 ( LN ):63 字节(最大)
    因为标签长度最大值只能是 00111111(因为
    前两个位保留用于特殊功能,如指针)
  • 空标签 ( NL ):1 字节(代表根域)

  • 格式应始终为(与博客文章不同):

    LL + LN [ LL + LN ...] + 荷兰

    这意味着最大长度应该是(1 个字节 = 1 个字符 = 1 个八位字节):

    LL (1) + LN (63) + LL (1) + LN (63) + LL (1) + LN (63) LL (1) + LN (61) + 荷兰 (1) = 255 字节

    所以如果我们只计算字符串部分( LN s),我们得到:

    63 + 63 + 63 + 61 = 最多 250 个字符。

    我是否遗漏了什么,或者我们应该更新一些维基百科引用资料?我不确定的唯一部分是 Null 标签是 255 字节的一部分。

    最佳答案

    以你的方式计算,域名a.b.c.d.e.将被认为是五个字符长。它怀疑没有多少人会发现这种计数方式有用。这种计数方式也使最大长度随标签数量而变化,因此当您有四个标签时,最大长度为 250 个字符,但如果您有 127 个标签,则最大长度仅为 127 个字符。

    可以这样想:当我们打印供人类使用的域名时,我们确实打印了长度字节,只是将它们打印为句点(除第一个长度字节外的所有字符)。如果我们不这样做,我们将无法分辨 a.b.c. 之间的区别。和 abc. .由于我们打印它们,因此在计算长度时应该包括它们。使用这种计数方式,最大长度始终为 253 个字符(包括最后一个句点,根的非打印零八位字节为 255)。

    换句话说,如果您有最多 250 个 ASCII 字符(字母、数字、破折号),考虑到标签的最小数量是 4,您还需要在它们之间添加 3 个可打印点,总计 253 个可打印字符(省略了第一个长度字节和空标签)。

    下面的示例(粗体是可打印的字符,LL 打印为点):

    LL (1) + LN (63) + LL (1) + LN (63) + LL (1) + LN (63) + LL (1) + LN (61) + NL (1) = 255 字节

    所以包括点的新计算将变成:

    63 + 1 + 63 + 1 + 63 + 1 + 61 = 25 3 最大字符数。

    关于dns - DNS 名称的最大长度是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32290167/

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