我看到几个提到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个字节:
为了简化实现,域名的总长度(即,标签八位字节和标签长度八位字节)被限制为255个八位字节或更少.
根据RFC1035,域名的组成如下:
域名表示为标签序列,其中每个标签由长度八位字节后跟该八位字节数组成.域名以根的空标签的零长度八位字节终止.注意,该字段可以是奇数个八位字节; 没有使用填充.
这意味着以下字段构成域名:
格式应始终是(与博客文章不同):
LL + LN [ LL + LN ...] + NL
这意味着最大长度应为(1字节= 1个字符= 1个八位字节):
LL(1)+ LN(63)+ LL(1)+ LN(63)+ LL(1)+ LN(63)LL(1)+ LN(61)+ NL(1)= 255字节
因此,如果我们仅计算字符串部分(LN s),我们得到:
63 + 63 + 63 + 61 =最多250个字符.
我错过了什么,或者我们应该更新一些维基百科的参考文献?我不确定的唯一部分是关于Null标签是255字节的一部分.