java 域名的最大长度

nfs0ujit  于 2023-01-01  发布在  Java
关注(0)|答案(3)|浏览(120)

我注意到google library中的class com.google.common.net.InternetDomainName包含了以下常量:

private static final int MAX_LENGTH = 253;

下面的代码在创建InternetDomainName示例期间检查长度:

checkArgument(name.length() <= MAX_LENGTH, "Domain name too long: '%s':", name);

但RFC-2181规定:

A full domain name is limited to 255 octets (including the separators).

那么,什么是有效的域名最大长度?

jmo0nnb3

jmo0nnb31#

这是直接从wikipedia
完整域名的文本表示形式不能超过253个字符。在DNS的内部二进制表示形式中,最大长度需要255个八位字节的存储空间,因为它还存储名称的长度。
这是来自RFC 1035的:
每个标签都表示为一个八位字节长度字段,后跟该八位字节数。由于每个域名都以根的空标签结尾,因此域名以长度字节零结尾。

rbpvctlc

rbpvctlc2#

TLDR

如果您只想将域 * 用作网站 *,则限制为:255个字符。
如果您只想将域 * 与电子邮件 * 一起使用,则限制为:253个字符。

源-作为网站

RFC2821(2001年4月)建立了255-字符限制的域名和RFC5321(2008年10月)保留了这一标准。
4.5.3.1.2.定义域操作
域名或号码的最大总长度为255个字符。

源-用于电子邮件

根据我们在RFC821(1982年8月)中看到的内容,电子邮件地址的格式必须为a@example.com。SMTP中的to字段不能超过255个字符。最短的本地部分a是一个字符,@是一个字符,这样域只剩下253个字符。

w8f9ii69

w8f9ii693#

根据RFC1123第2.1节,* 主机软件必须处理最多63个字符的主机名,并且应该处理最多255个字符的主机名;这意味着它应该能够接受和处理最多63个字符的任意长度的主机名,并且应该能够接受和处理最多255个字符的主机名(如果可能)。*

相关问题