顶级域名中的数字是什么意思?

37

顶级域名可以以数字结尾吗?我对DNS规则等一无所知,但当我使用PHP的filter_var()函数和FILTER_VALIDATE_EMAIL验证`test@null.com1`时,它会返回true。

顶级域名可以以数字结尾。在此示例中,电子邮件地址似乎有效,因为它符合一般的电子邮件地址格式,但实际上,这不是一个有效的电子邮件地址,因为以数字结尾的域名是无效的。

从技术上讲,我认为这种顶级域名没有问题。FILTER_VALIDATE_EMAIL 只是一个基本的测试。 - PeeHaa
1
没有电子邮件验证可以替代电子邮件验证,因此虽然验证是一个方便的工具,可以排除明显的错误并减少错误请求的数量,但可能不值得担心额外的可能错误。 - SimonMayer
3个回答

45
顶级域名是否可以以数字结尾?
在技术上是可以的,但如果它是纯数字,则不能成为TLD,根据当前规则和易于理解的原因(与IP地址区分开来)。除非它是IDN TLD,否则不能以数字结尾,这是由ICANN强制执行的原因。
让我们回到一些RFC中,以获得一些更清晰的定义:
RFC 952:DOD INTERNET HOST TABLE SPECIFICATION(1985年10月)
当时这是Internet“主机名”的定义:
“名称”(Net、Host、Gateway或Domain名称)是一个文本字符串,最多可包含24个字符,来自字母表(A-Z)、数字(0-9)、减号(-)和句点(.)。请注意,只有在句点用于分隔“域样式名称”的组件时才允许使用句点。(有关背景,请参见RFC-921,“域名系统实施计划”)。名称中不允许有空格或空格字符。大小写字母之间没有区别。第一个字符必须是字母字符。最后一个字符不能是减号或句点。
请注意,这也有以下内容:
不允许单个字符名称或昵称。
因此,在那个时候:
  • com1是一个有效的顶级域名
  • 3com不是(“第一个字符必须是字母字符。”)
  • 42也不是(同样的原因)
  • 1也不是(同样的原因)
  • a也不是(“不允许单个字符名称或昵称。”)

RFC 1034:域名概念和功能(1987年11月)

这是创建DNS的RFC之一,如今我们所知道的。为了兼容性,它将主机名定义为标签序列,其中标签的定义如下:

它们必须以字母开头,以字母或数字结尾,并且在内部字符中仅包含字母,数字和连字符。长度也有一些限制。标签必须少于63个字符。

TLD是其他标签中的一个标签(TLD中的L)。根据上述规则,com1是一个有效的标签,因此是一个有效的TLD,而3com则不是。这直接带来了以下修正案。

RFC 1123:Internet主机要求-应用和支持(1989年10月)

这通过更改一条规则修正了先前的RFC:

在RFC-952 [DNS:4]中指定了合法Internet主机名的语法。主机名语法的一个方面已经改变:对第一个字符的限制放宽,允许使用字母或数字。主机软件必须支持这种更自由的语法。
因此,在这一点上:
- com1 是一个有效的TLD - 3com 也是有效的 - 42 是有效的 - 1 是有效的 - a 是有效的
对于“数字”TLD的情况,第一个文档中的以下规则适用:
每当用户输入Internet主机的标识时,应该可以输入主机域名或以点分十进制(“#.#.#.#”)形式表示的IP地址。主机应该在查找域名系统之前在语法上检查字符串是否为点分十进制数。
如果可以输入不带这些标识符的点分十进制数,则必须进行完整的语法检查,因为主机域名的一部分现在允许以数字开头并且可以合法地完全是数字(参见第6.1.2.4节)。但是,有效的主机名永远不能具有点分十进制形式#.#.#.#,因为至少最高级别的组件标签将是字母。

RFC 1738: 统一资源定位符(URL)(1994年12月)

这也涉及顶级域名,但是给出了:

网络主机的完全限定域名或其IP地址,作为由“.”分隔的四个十进制数字组成的集合。 完全限定域名的形式如RFC 1034 [13]第3.5节和RFC 1123 [5]第2.1节所述:由“.”分隔的一系列域标签,每个域标签以字母数字字符开头和结尾,可能还包含“-”字符。 最右边的域标签永远不会以数字开头,这在语法上将所有域名与IP地址区分开来。

RFC 3696: 名称检查和转换的应用技术(2004年2月)

这是为了介绍国际化域名(IDN),它说:

DNS名称中允许使用任何字符或位组合(如八位组)。然而,大多数应用程序要求采用首选格式。这种首选格式是顶级域名(TLD)名称中唯一允许的格式。通常情况下,它也是在TLD注册的大多数二级名称中唯一允许的格式,尽管某些通常不被用户看到的名称遵守其他规则。它源于用于命名主机(即“主机名”规则)的原始ARPANET规则,并且可能更好地描述为“LDH规则”,即允许使用的字符。更新后的LDH规则规定,构成域名的标签(由句点分隔的单词或字符串)必须仅包含ASCII [ASCII]字母和数字字符以及连字符。不允许使用其他符号或标点符号字符,也不能有空格。如果使用连字符,则不得出现在标签的开头或结尾。还有一个额外的规则,基本上要求顶级域名名称不全是数字。
事实上,只要涉及IDN,特别是IDN TLDs(包括ccTLD和gTLD),所选择的编码就会生成形式为xn--something的ASCII字符串,其中something可以包含数字,包括末尾,如其他答案所示。
但是,最后一句话中的“额外规则”来源并不是很清楚。
RFC 4697: 观察到的DNS解析错误行为(2006年10月)

没有定义任何内容,但提供了一些有趣的事实:

根域名服务器收到了大量A记录查询,其中QNAME看起来像IPv4地址。

一个可能的解决方案是将这些数字TLD从根区域委派给一组单独的服务器以吸收流量。

这清楚地表明,在实际应用中,确实存在一些应用程序(也许是错误的),但至少在技术上它能够工作,发送查询以获取确实格式化为IPv4地址的名称,因此具有完全数字的"TLD"。

实际上曾经尝试启动一个.42注册表,显然完全超出了ICANN生态系统。 您可以在http://www.dotsauce.com/experimental-numeric-tld-42-domain/上看到它的摘要,并在https://web.archive.org/web/20101222151118/http://register.42registry.org:80/(法语)上查看其主要说明的存档。

尽管它在技术上能够工作,但它并没有走得很远。

它显示,例如,微软基于的操作系统默认根本不考虑纯数字顶级域名,但他们提供了一个补丁:https://support.microsoft.com/en-us/help/947228/error-message-when-you-try-to-join-a-windows-vista-based-client-comput“当您尝试将基于Windows Vista的客户端计算机加入具有纯数字后缀的顶级域名(TLD)时,基于Windows Vista的客户端计算机无法加入该域。[...]此行为是按设计进行的。”

互联网草案draft-liman-tld-names-06:顶级域名规范(2011年11月)

这最终解释了为什么纯数字TLD甚至带有一位数字的TLD有时被认为是无效的,而这不是以上规范的明显结果的原因:

(下面的第2.1节是对上述RFC 1123中内容的引用)

In addition, the DISCUSSION section of Section 2.1 says:

 'However, a valid host name can never have the dotted-decimal form
 #.#.#.#, since at least the highest-level component label will be
 alphabetic.'  [Section 2.1]

Some implementers may have understood the above phrase 'will be alphabetic' to be a protocol restriction.

但它基本上只建议跟随潮流并继续相同的限制:
引用: [RFC0952]和[RFC1123]都没有明确说明这些限制的原因。可能会认为人为因素是一个考虑因素; [RFC1123]似乎暗示其中一个原因是防止点十进制IPv4地址和主机域名之间的混淆。无论如何,可以合理地认为这些限制在一些已部署的软件中被假定,并且更改规则应该谨慎进行。
因此,它提供了这个定义:
引用: traditional-tld-label = 1 * 63(ALPHA)
这个草案从未转换为RFC,因为并不是每个人都同意它。您可以在https://www.ietf.org/mail-archive/web/dnsop/current/msg08866.html找到反对声音的线程;基本上不清楚过去是否有限制,现在我们正在尝试稍微放松一下,还是从一开始就没有限制,而人们错误地实施了系统。
例如,您可以查看关于此Chromium/Chrome错误报告的内容:https://bugs.chromium.org/p/chromium/issues/detail?id=31405 如果使用以数字开头或纯数字开头的顶级域名(如果在数字前有字母,则以数字结尾的顶级域名可以正常工作),则浏览将失败。这被认为不是一个错误,也没有修复,因为浏览器随附了一个TLD列表,因此它可以知道哪些是有效的,哪些不是,除了测试其语法之外。
ICANN新TLD申请指南(2012年6月)可在https://newgtlds.icann.org/en/applicants/agb/guidebook-full-04jun12-en.pdf获取,从第64页开始如下所示:
ASCII标签(即在线传输的标签)必须符合技术标准域名:实现和规范(RFC 1035),DNS规范澄清(RFC 2181)及其更新的任何规定。 ASCII标签必须是有效的主机名,如技术标准DOD Internet Host Table规范(RFC 952),Internet主机要求-应用程序和支持(RFC 1123),名称检查和转换的应用技术(RFC 3696),应用中的国际化域名(IDNA)(RFCs 5890-5894)及其更新。这包括以下内容:ASCII标签必须完全由字母(a-z字母字符)组成,或者该标签必须是有效的IDNA A标签(如下文第II部分所述)进一步限制。特别注意:ASCII标签必须完全由字母(a-z字母字符)组成。这立即禁止任何完整数字,事实上也禁止任何数字,包括结尾处的数字,除了IDN TLDs,其中一个形式为xn--something。请注意,有人直接向ICANN询问了此事,并得到了以下回复,显示在https://domaingang.com/domain-news/icann-applicant-handbook-this-is-why-we-cannot-have-numeric-gtlds/:
请注意,第一轮申请中禁止使用数字顶级域名。在申请人指南(http://newgtlds.icann.org/en/applicants/agb)中,对数字通用顶级域名的禁止源于有关此类域名正常运行能力的一些技术问题。域名经常被用作其他类型标识符(如IP地址)的替代品。
一个顶级域名完全由字母组成通常是软件识别域名的关键因素。如果允许使用“.123”这样的TLD,您可能会拥有一个域名“74.125.244.123”,这将很难与IP地址“74.125.244.123”区分开来。还有其他考虑因素:一些技术标准文档规定TLD必须是字母,这也已经成为软件假设的编码。
AGB中对字母字符的限制旨在限制这些情况,这意味着这种TLD在软件中不太可能有效工作,并限制可能由相同问题导致的潜在安全问题。

有一个非常好的理由,数字不能成为顶级域名。这会消除模糊地址的可能性。例如:如果允许42作为顶级域名,0.42可以成为一个域名,168.0.42可以成为子域名/二级域名,而192.168.0.42则在其下一级。 - undefined
有一个非常好的理由,数字不能成为顶级域名。它会消除模糊地址的可能性。这是不正确的。实际上,曾经有一个叫做.42的顶级域名作为一个实验,而且它成功了。请重新阅读上面RFC1123章节的最后一段。 - undefined

20

实际上,目前有相当多的顶级域名包含数字:

XN--1QQW23A
XN--3BST00M
XN--3DS443G
XN--3E0B707E
XN--45BRJ9C
XN--4GBRIM
XN--55QW42G
XN--55QX5D
XN--6FRZ82G
XN--6QQ986B3XL
XN--80ADXHKS
XN--80AO21A
XN--80ASEHDB
XN--80ASWG
XN--90A3AC
XN--C1AVG
XN--CG4BKI
XN--CLCHC0EA0B2G2A9GCD
XN--CZR694B
XN--CZRU2D
XN--D1ACJ3B
XN--FIQ228C5HS
XN--FIQ64B
XN--FIQS8S
XN--FIQZ9S
XN--FPCRJ9C3D
XN--FZC2C9E2C
XN--GECRJ9C
XN--H2BRJ9C
XN--I1B6B1A6A2E
XN--IO0A7I
XN--J1AMH
XN--J6W193G
XN--KPRW13D
XN--KPRY57D
XN--KPUT3I
XN--L1ACC
XN--LGBBAT1AD8J
XN--MGB9AWBF
XN--MGBA3A4F16A
XN--MGBAAM7A8H
XN--MGBAB2BD
XN--MGBAYH7GPA
XN--MGBBH1A71E
XN--MGBC0A9AZCG
XN--MGBERP4A5D4AR
XN--MGBX4CD0AB
XN--NGBC5AZD
XN--NQV7F
XN--NQV7FS00EMA
XN--O3CW4H
XN--OGBPF8FL
XN--P1AI
XN--PGBS0DH
XN--Q9JYB4C
XN--RHQV96G
XN--S9BRJ9C
XN--SES554G
XN--UNUP4Y
XN--VHQUV
XN--WGBH1C
XN--WGBL6A
XN--XHQ521B
XN--XKC2AL3HYE2A
XN--XKC2DL3A5EE0H
XN--YFRO4I67O
XN--YGBI2AMMX
XN--ZFR164B
您可以在这里查看最新的列表:data.iana.org/TLD/tlds-alpha-by-domain.txt 或者带有描述的列表在这里:swcs.com.au/tld.htm

18

从概念上讲,TLD 中并没有阻止数字的存在,未来也许会有数字顶级域名。

目前还没有包含数字的 TLDs - 该函数可能不会针对已知的 TLDs 进行测试(因为它可能会发生变化),而是按字典顺序进行测试。


5
实际上,目前有一个名为“xn--wgbh1c”的顶级域名正在使用。还有一些其他的:http://www.swcs.com.au/tld.htm。 - insaner
@Oded,你的大部分答案都在第一段中,那么你所说的“概念上”是什么意思?(另外,根据https://newgtlds.icann.org/en/applicants/global-support/faqs/faqs-en,“tlds不能完全由数字组成,否则申请将被拒绝”) - Pacerier
@Pacerier - 那么,事情永远不会改变吗? - Oded
@Pacerier - 不,它意味着在未来的某一天可能会出现一个新的RFC允许它。虽然不太可能,但从概念上讲,这是有可能的。 - Oded
2
将来谁知道,也许会有数字顶级域名。根据RFC3696第2节(2004年2月)的规定,目前不可能使用全数字的顶级域名。这也是ICANN强制执行的规则。它允许任何系统清楚地区分主机名和IP地址,否则192.0.1.42也可以是TLD为42的域名1的子名称(过去曾经有一个关于TLD .42的实验,但是在ICANN之外进行。只要域名从未全部为数字,则可以正常工作)。 - Patrick Mevzek
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接