可以子域名(域名)有下划线_
在其中?
Answer 1:
这里给出的答案大多数都是假的 。 这是完全合法的拥有域名的下划线。 让我引用的标准, RFC 2181,第11条,“名称语法” :
DNS本身仅放置在一个可用于识别资源记录特定的标签限制。 这一个限制涉及标签的长度和全名。 [...]的DNS协议的实现必须不会对可用于标签的任何限制。 特别是,DNS服务器必须不拒绝服务的区域,因为它包含的标签,是无法令人接受一些DNS客户端程序。
又见原始DNS规范, RFC 1034 ,第3.5节“首选名称语法”,但仔细阅读。
用下划线域是在野外很常见。 检查_jabber._tcp.gmail.com
或_sip._udp.apnic.net
。
其他RFC这里所说的处理不同的事情。 原来的问题是为域名 。 如果问题是主机名 (或网址,其中包括一个主机名),那么这是不同的,相关的标准是RFC 1123 ,第2.1节“主机名称和编号”,这限制了主机名的字母,数字,连字符。
Answer 2:
关于术语的说明,在赞助到Bortzmeyer做了大量的答案
每个人都应该清楚的定义。 这里所使用的:
- 域名是一个资源在DNS数据库标识符
- 标签 是域名的一部分,点与点之间
- 主机名是一种特殊类型的域名标识Internet主机
该主机受到的限制RFC 952和RFC 1123的轻微放松
RFC 2181清楚地表明,有一个域名和主机名之间的区别:
... [在于]任何二进制标签可以有一个MX记录并不意味着任何二进制名称可以用作电子邮件地址的主机部分...
因此,在主机名下划线是一个没有没有,凸显了域名是一个-OK。
在实践中,可能会看到有下划线的主机名 。 作为稳健性原则说:“对于你发送的保守,自由主义在你接受什么样的”。
在编码的注意事项
在21世纪,事实证明, 主机名和域名可以被国际化! 这意味着求助于编码在包含属于允许的组以外的字符的标签的情况下。
特别是,它允许一个编码_
的主机名 (更新2017-07:这是值得怀疑的,看评论的_
。仍然无法在主机名中使用实际上,它甚至不能在国际化标签使用)
国际化的第一个RFC是RFC 3490 2003年3月,“国际化的应用域名(IDNA)”。 今天,我们有:
- RFC 5890 “IDNA:定义和文档框架”
- RFC 5891 “IDNA:协议”
- RFC 5892 “的Unicode代码点和IDNA”
- RFC 5893 “为IDNA从右到左写的”
- RFC 5894 “IDNA:背景,解释和理由”
- RFC 5895 “字符映射为2008 IDNA”
您可能还需要检查维基百科条目
RFC 5890还引入了术语LDH(字母,数字,连字符)标签在使用主机名和说标签 :
这是所使用的,尽管有一些额外的限制古典标签形式,在主机名(RFC 952)。 其语法是相同的,描述为在RFC 1034的第3.5节“优选名称语法”,由RFC 1123简言之修饰,它是一种由ASCII字母,数字的字符串,并与进一步的限制连字符即连字符不能出现在字符串的开头或结尾。 像所有的DNS标签,它的总长度不得超过63个字节。
让我们再回到简单的时代, 这个互联网草案是主机名国际化的早期提议。 与国际字符主机名可以使用,例如,被编码“RACE”编码 。
在“RACE编码”建议笔记的作者:
根据RFC 1035,主机部分必须是不区分大小写,开头和字母或数字结束,并且只包含字母,数字和连字符(“ - ”)。 这,当然,不包括任何国际字符,以及在ASCII字符集许多其他字符。 另外,域名部分必须63个八位字节或在长度短....包含国际字符开始字符串“bq--”所有后转换名部分。 (......)“bq--”被选中,是因为它是极不可能制作本规范之前的主机部分存在的字符串。
Answer 3:
还有,你可能需要知道一个额外的东西:如果URL的主机或子域部分包含下划线,IE9(没有测试其它版本),可以不写饼干。
所以,要小心一点。 :-)
Answer 4:
明确Bortzmeyer做了大量和大卫Tonhofer ,域名和子域名标签可以包含前导下划线,但在其他地方。
正如大卫Tonhofer写道,标签是在两者之间最时段部件,应遵循指定服务标签和端口标签时从常规标签区分它们除了 LDH规则。 然后,他们必须出现在它应该是从“短名称”标签的开始服务名称和端口号登记 ,不带前导零的端口号,或者协议(即TCP,UDP)。 这些服务标签进一步限制到15个字符。
- RFC2782指定前缀服务记录的子域用下划线。
- RFC6698规定在TLSA证书记录下划线前缀的端口号。
相反, 大卫Tonhofer的回答,印尼不会允许编码下划线('_” U + 005F低线)或任何其他无效的ASCII字符。
从RFC5890
[..] LDH标签的两个新的子集通过引入IDNA的创建。 这些被称为保留LDH标签(R-LDH标签)和非保留LDH标签(NR-LDH标签)。 保留LDH标签,被称为在其他一些上下文“标签域名”,有它们所包含的财产“ - ”中的第三和第四个字符,但其中另有符合LDH标签规则 。
的Punycode编码直接所有ASCII码点为ASCII,包括下划线。 得到的R-LDH不符合的LDH的标签规则。 例如, Σ_.com
将被编码为xn--_-zmb.com
违反的规则。 有可能是一个单应码点,它看起来像可以合法进行编码(也许“_” U + FF3F全角低线)下划线,但如通过这些DISALLOWED码点种类的将被分类RFC5892下2.3 IgnorableProperties作为Noncharacter_Code_Point。
RACE(其他拟议IDN编码方案)不被接受作为由IETF标准并且不应当被使用。
Answer 5:
我跟着链接,RFC1034和阅读大部分,惊讶地看到这一点:
标签必须遵循ARPANET主机名规则。 他们必须以字母开头,以字母或数字结尾,并作为内部字符的只有字母,数字和连字符。 也有对长度有一定的限制。 标签必须为63个字符或更少。
对于澄清,一个域名是由这是用点分隔的标签“” 这种规范必须是过时的,因为它没有提到使用下划线的。 我可以理解的混乱,如果有人绊倒这个天赋不知道它已经过时了。 这是过时的,不是吗?
我跟着链接,RFC2181和阅读一些。 尤其是当它涉及到的是什么权威,或规范,名称和什么使一个有效的DNS标签问题的问题。
正如前面贴吧指出这里只有一个长度的限制,然后,将读取来概括:
(有关名称和有效的标签)
这些都已经得到了充分说明,但规格似乎有时会被忽略。 我们寻求加强现有的规范。
那种让我想知道,如果“长度仅限制”是“足够”。 难道我们将开始看到像@#$%的域名! 不久? 不上网搞砸了还不够吗?
Answer 6:
在这里我从2 Java世界美分:
从星火斯卡拉控制台,与Java 8:
scala> new java.net.URI("spark://spark_master").getHost
res10: String = null
scala> new java.net.URI("spark://spark-master").getHost
res11: String = spark-master
scala> new java.net.URI("spark://spark_master.google.fr").getHost
res12: String = null
scala> new java.net.URI("spark://spark.master.google.fr").getHost
res13: String = spark.master.google.fr
scala> new java.net.URI("spark://spark-master.google.fr:3434").getHost
res14: String = spark-master.google.fr
scala> new java.net.URI("spark://spark-master.goo_gle.fr:3434").getHost
res15: String = null
这绝对是一个坏主意^^
Answer 7:
个人TLD的可以将自己的规则和限制在域的名字 ,因为他们认为合适的,例如,以适应当地的语言。
例如,根据CIRA ,加拿大.ca
域名被允许:
信件
a
经z
,和下面的重音符号:é ë ê è â à æ ô œ ù û ü ç î ï ÿ
。 请注意,域名不区分大小写。 这意味着将不会有大写字母和小写字母(之间进行区分A
=a
);数字
0123456789
,和连字符(”
-
虽然它不能被用来启动或终止域名)。
的最大长度为63个字符,每除外重音字符减少了由4个字符该限制。
( 来源 )
顺便说一下,这允许约4 Quadragintillion域名的可能性(不计算子域),用于点-CA域。
Answer 8:
最近,CAB论坛(*)决定,
含有任何DNSNAME条目下划线字符和具有超过30天的有效期中的所有证书必须先于2019年1月15日,被撤销https://cabforum.org/2018/11/12/ballot-sc-12-日落的-下划线合dnsnames /
这意味着,你不再允许,将有一个SSL / TLS证书域使用下划线。
(*)的证书颁发机构的浏览器论坛(CA /浏览器论坛)是领先的证书颁发者在自愿的聚会(如第2.1(a)所述(1)和(2)所示)和互联网浏览器软件和其他应用程序的供应商是使用证书(证书消费者,如在第2.1节中定义的(a)(3)所示)。
Answer 9:
如果你不希望它解决在互联网上。
你不能有: http://my_subdomain.example.com无效。
你可以有: http://my-subdomain.example.com连字符。