子域名(域名)中可以有下划线_
吗?
发布于 2010-02-02 17:59:18
这里给出的大多数答案都是false。在域名中使用下划线是完全合法的。让我引用一下标准,RFC 2181, section 11, "Name syntax"
域名系统本身仅对可用于标识资源记录的特定标签施加一个限制。这一限制与标签的长度和全名有关。..。DNS协议的实现不得对可使用的标签施加任何限制。特别是,DNS服务器不能拒绝为区域提供服务,因为它包含的标签可能是某些DNS客户端程序不能接受的。
另请参阅原始DNS规范RFC 1034,第3.5节“首选名称语法”,但请仔细阅读。
带下划线的域在野外非常常见。检查_jabber._tcp.gmail.com
或_sip._udp.apnic.net
。
这里提到的其他RFC处理不同的事情。最初的问题是针对域名的。如果问题是针对主机名(或针对包含主机名的URL),那么这就不同了,相关标准是RFC 1123的2.1节“主机名和数字”,它将主机名限制为字母-数字-连字符。
发布于 2013-01-31 17:23:09
关于术语的注释,以进一步支持Bortzmeyer的回答
一个人应该清楚定义。如下所示:
域名是域名系统中资源的标识符database
主机名受RFC 952和slight relaxation of RFC 1123的限制
RFC 2181明确指出域名和主机名之间是有区别的:
...the任何二进制标签都可以有MX记录的事实并不意味着任何二进制名都可以用作电子邮件地址的主机部分...
因此,主机名中的下划线是禁忌,域名中的下划线是可以的。
在实践中,很可能会看到带下划线的主机名。正如Robustness Principle所说:“在你发送的东西上要保守,在你接受的东西上要自由。”
关于编码的说明
在21世纪,事实证明,主机名和域名都可能国际化!这意味着在标签包含允许集之外的字符的情况下采用编码。
特别是,它允许在主机名中编码_
(更新2017-07:这是值得怀疑的,请参阅评论。_
仍然不能在主机名中使用。事实上,它甚至不能在国际化标签中使用。)
第一个国际化的RFC是2003年3月的RFC 3490,“在应用程序中国际化域名(IDNA)”。今天,我们有:
您可能还需要检查Wikipedia Entry
RFC 5890为主机名中使用的标签引入了术语LDH (Letter-Digit-Hypen) label,并表示:
这是在主机名(RFC952)中使用的经典标签形式,但有一些额外的限制。它的语法与RFC1123修改的RFC1034的3.5节中描述的“优选名称语法”相同。简而言之,它是一个由ASCII字母、数字和连字符组成的字符串,但进一步限制连字符不能出现在字符串的开头或结尾。与所有DNS标签一样,其总长度不得超过63个二进制八位数。
回到更简单的时代,this Internet draft是主机名国际化的早期建议。可以使用例如'RACE' encoding对具有国际字符的主机名进行编码。
“RACE编码”提案的作者注意到:
根据RFC1035,主机部分必须不区分大小写,以字母或数字开头和结尾,并且仅包含字母、数字和连字符("-")。当然,这排除了任何国际化的字符,以及ASCII字符库中的许多其他字符。此外,域名部分的长度必须为63个八位字节或更短...所有包含国际化字符的转换后名称部分都以字符串"bq--“开头。(...)之所以选择字符串"bq--“,是因为在本规范产生之前,它极不可能存在于主机部件中。
发布于 2012-07-23 17:47:48
还有一件事你可能需要知道:如果url的主机或子域部分包含下划线,则IE9 (尚未测试其他版本)不能写入cookie。
所以要小心这一点。:-)
https://stackoverflow.com/questions/2180465
复制相似问题