Can(域名)子域名中是否有下划线"_"?

Dan*_*nos 195 subdomain dns standards

子域名(域名)可以_在其中加下下划线吗?

bor*_*yer 333

这里给出的答案大多数都是假的.在域名中使用下划线是完全合法的.让我引用标准RFC 2181第11节"名称语法":

DNS本身仅对可用于标识资源记录的特定标签设置一个限制.该限制涉及标签的长度和全名.[...] DNS协议的实现不得对可以使用的标签施加任何限制.特别是,DNS服务器不得拒绝为区域提供服务,因为它包含某些DNS客户端程序可能无法接受的标签.

另请参阅原始DNS规范RFC 1034,第3.5节"首选名称语法",但请仔细阅读.

具有下划线的域在野外非常常见.检查_jabber._tcp.gmail.com_sip._udp.apnic.net.

这里提到的其他RFC处理不同的事情.最初的问题是域名.如果问题是主机名(或URL,包括主机名),那么这是不同的,相关标准是RFC 1123,第2.1节"主机名和数字",它将主机名限制为字母 - 数字 - 连字符.

  • +1"域名"和"主机名"之间的区别 (65认同)
  • 我很困惑,1034说"标签必须遵循ARPANET主机名的规则.它们必须以字母开头,以字母或数字结尾,内部字符只有字母,数字和连字符." 哪一部分允许下划线? (4认同)
  • 问题(除非它被编辑)是关于子域即ie.主机名.你对事实陈述没有错,除非根据问题目前的措辞指出答案是错误的. (3认同)
  • 措辞令人困惑。网址不能包含下划线。URL始终是FQDN,不是主机名。FQDN可以具有一个空的主机名,在这种情况下,FQDN =域。_jabber._tcp.gmail.com不是域,而是FQDN。由于网址中不能包含下划线,因此您可能永远无法购买带下划线的域名。因此,从DNS语法的角度来看,即使是域名也可能带有下划线,除非是本地域名,否则您将永远不会遇到下划线。 (2认同)
  • 我看不到 rfc1123 2.1 中提到任何有关允许连字符的引用。我可以在 rfc952 中看到名称可以是 <let-or-digit-or-hyphen>。你指的是这个吗? (2认同)
  • “标签必须遵循 ARPANET 主机名的规则。” RFC 1034 中的第 3.5 节首选名称语法。这些是偏好,而不是 DNS 的要求。该部分以“DNS 规范尝试尽可能通用”开头。第 3.2 节以“使用特殊字符、前导数字等的节点标签可能会破坏依赖于更严格的选择的旧软件”结尾。- 因为允许任意八位字节字符串,所以唯一的限制是每个标签 0 到 63 个八位字节以及名称中总共 255 个八位字节(包括标签长度)。 (2认同)
  • @Alnitak我很困惑,**网站域是主机名还是域名?**你能给我仅1个以“_”开头的域名示例吗?我可以在浏览器中测试它? (2认同)
  • @Accountant- URL 的“域名”部分用于查找“A”或“AAAA”记录。因此,它必须进一步限制为合法_主机名_集(因为A和AAAA记录指向_主机_)。 (2认同)

Dav*_*fer 89

关于术语的说明,以促进Bortzmeyer的回答

人们应该清楚定义.如下所用:

  • domain nameDNS数据库中资源标识符
  • label点之间的域名的一部分
  • hostname是一种特殊类型的域名,用于标识Internet主机

主机受到的限制RFC 952RFC 1123的轻微放松

RFC 2181明确指出域名和主机名之间存在差异:

... [事实]任何二进制标签都可以有MX记录并不意味着任何二进制名称都可以用作电子邮件地址的主机部分......

所以主机名中的下划线是禁止的,域名中的下划线是不行的.

在实践中,人们可能会看到带有下划线的主机名.正如" 健壮性原则"所说的那样:"在你所发送的内容中要保守,在你所接受的内容中保持自由".

关于编码的说明

在21世纪,事实证明主机名域名可能会国际化!这意味着如果标签包含超出允许集的字符,则需要编码.

特别是,它允许一个编码_主机名(更新2017-07:这是值得怀疑的,看评论的_.还是不能在主机名中使用实际上,它甚至不能在国际化标签使用)

国际化的第一个RFC是2003年3月的RFC 3490,"将应用程序中的域名国际化(IDNA)".今天,我们有:

您可能还想查看维基百科条目

RFC 5890还引入了术语LDH(字母,数字,连字符)标签标签中使用主机名,并说:

这是在主机名(RFC 952)中使用的经典标签形式,尽管有一些额外的限制.它的语法与RFC 1123修改后的RFC 1034第3.5节中的"首选名称语法"相同.简而言之,它是由ASCII字母,数字和连字符组成的字符串,并且连字符不能进一步限制出现在字符串的开头或结尾.与所有DNS标签一样,其总长度不得超过63个八位字节.

回到简单的时代,这个互联网草案主机名国际化的早期提案.具有国际字符的主机名可以使用例如"RACE"编码来编码.

"RACE编码"提案的作者指出:

根据RFC 1035,主机部分必须不区分大小写,以字母或数字开头和结尾,并且只包含字母,数字和连字符(" - ").当然,这不包括任何国际化字符,以及ASCII字符集中的许多其他字符.此外,域名部分的长度必须为63个八位字节或更短.所有包含国际化字符的转换后的名称部分都以字符串"bq--"开头.(...)选择字符串"bq--"是因为在生成此规范之前,它不太可能存在于主机部件中.

  • @Nelda.techspiress 已经有一段时间了,但根据 [RFC 1034:域名 - 概念和设施](https://tools.ietf.org/html/rfc1034),所谓的域`bar 的“子域” .baz.`(例如)只是在`bar.baz.` 下分层的域名集合,例如`a.bar.baz.`、`fgbar.baz.`、`h.bar.baz。 ` 等。这个“子域”可能包含也可能不包含实际的_主机名_。 (2认同)
  • 在日常使用中,人们可能倾向于错误地将字符串`a.bar.baz`(域名)称为字符串`bar.baz`(另一个域名)的“子域”。域名(DNS 数据库资源)`a.bar.baz` 和`bar.baz` 可能是也可能不是_hostnames_。 (2认同)

Kai*_*ern 47

还有一件事您可能需要知道:如果url的主机或子域部分包含下划线,IE9(尚未测试其他版本)无法写入cookie.

所以要小心.:-)

  • 更相关:MS关心这个吗? (15认同)
  • MS说,["这种行为是设计上的"](https://support.microsoft.com/en-us/kb/316112). (11认同)
  • 我们刚刚在一个项目中实现了这一点 - 而且我即将对那里奇怪的IE问题感到疯狂.直到我们在子域中发现下划线.; O) (3认同)
  • 在IE10中仍然存在问题.MS知道这个吗? (3认同)
  • 可在IE7中重现:http://stackoverflow.com/questions/794243/internet-explorer-ignores-cookies-on-some-domains-cannot-read-or-set-cookies (2认同)

And*_*zek 9

澄清bortzmeyerDavid Tonhofer,域名和子域名称标签可以包含前导下划线,但不包含其他地方.

正如David Tonhofer写的那样,标签是中间部分,应该遵循LDH规则,除非指定服务标签和端口标签以区别于常规标签.然后它们必须出现在标签的开头,该标签应该是服务名称和端口号注册表中的"短名称" ,没有前导0的端口号或协议(即tcp,udp).这些服务标签进一步限制为15个字符.

  • RFC2782指定带有下划线的服务记录子域前缀.
  • RFC6698指定在TLSA证书记录中使用下划线为端口号添加前缀.

David Tonhofer的回答相反,IDN不允许编码下划线('_'U + 005F LOW LINE)或任何其他无效的ASCII字符.

来自RFC5890

[..]通过引入IDNA创建了两个新的LDH标签子集.这些被称为保留LDH标签(R-LDH标签)和非保留LDH标签(NR-LDH标签).保留的LDH标签(在某些其他上下文中称为"标记域名")具有在第三和第四个字符中包含" - " 但在其他方面符合LDH标签规则的属性.

Punycode直接将所有ASCII码点编码为ASCII,包括下划线.产生的R-LDH不符合LDH标签规则.例如,?_.com将被编码为xn--_-zmb.com违反规则.可能有一个单应码点看起来像一个可以合法编码的下划线(也许是'_'U + FF3F全宽低线),但这些类型的码点在RFC IgnitProperties下作为Noncharacter_Code_Point 被RFC5892分类为DISALLOWED .

RACE(另一个提议的IDN编码方案)不被IETF接受为标准,不应使用.

  • 最后。不敢相信这是整个页面中唯一一篇讨论 punycode 的帖子。 (2认同)

KHA*_*LFE 8

截至 2023 年,Google 搜索中出现的网站的子域名包含下划线,例如https://my_sarisari_store.typepad.com


Ted*_*ron 6

我按照RFC1034的链接阅读了大部分内容,并惊讶地发现:

标签必须遵循ARPANET主机名的规则.它们必须以字母开头,以字母或数字结尾,并且内部字符仅包含字母,数字和连字符.长度也有一些限制.标签不得超过63个字符.

为了澄清,域名由标记组成,这些标签用点"."分隔.此规范必须过时,因为它没有提到使用下划线.如果有人在不知道它已经过时的情况下绊倒了这个规范,我就能理解这种混乱.它已经过时了,不是吗?

我按照RFC2181的链接阅读了一些内容.特别是涉及权威或规范名称的问题以及制作有效DNS标签的问题.

如前所述,它表示只有一个长度限制,然后总结它读取:

(关于名称和有效标签)

这些已经充分说明,但规格似乎有时会被忽略.我们寻求加强现有规范.

让我想知道"只有长度限制"是否"足够".我们是否会开始看到像@#$%这样的域名!不久?互联网搞砸了不够?

  • 不,它不是过时的.RFC1034是关于*主机名*的规范,*域名*的特例,它是DNS数据库中资源的通用标识符.例如,URI的"主机"部分是相当宽松地定义的(http://tools.ietf.org/html/rfc3986#section-3.2.2),但RFC注意到:"由注册名称标识的主机是通常用于在本地定义的主机或服务名称注册表中查找的字符序列...用于在DNS中查找的注册名称使用[RFC1034]的第3.5节和[RFC1123]的第2.1节中定义的语法. (3认同)

use*_*489 5

最近 CAB 论坛 (*) 决定

含有任何DNSNAME条目下划线字符和具有超过30天的有效期中的所有证书必须被撤销之前2019年1月15日,https://cabforum.org/2018/11/12/ballot-sc-12- dnsnames 中的下划线日落/

这意味着您不再允许在具有 ssl/tls 证书的域中使用下划线。

(*) 证书颁发机构浏览器论坛(CA/浏览器论坛)是领先的证书颁发者(定义见下文第 2.1(a)(1) 和 (2) 节)和 Internet 浏览器软件和其他应用程序供应商的自愿聚会使用证书(证书使用者,定义见下文第 2.1(a)(3) 节)。