顶级域名可以以数字结尾吗?我对DNS规则等一无所知,但当我使用PHP的filter_var()函数和FILTER_VALIDATE_EMAIL验证`test@null.com1`时,它会返回true。
顶级域名可以以数字结尾。在此示例中,电子邮件地址似乎有效,因为它符合一般的电子邮件地址格式,但实际上,这不是一个有效的电子邮件地址,因为以数字结尾的域名是无效的。顶级域名可以以数字结尾吗?我对DNS规则等一无所知,但当我使用PHP的filter_var()函数和FILTER_VALIDATE_EMAIL验证`test@null.com1`时,它会返回true。
顶级域名可以以数字结尾。在此示例中,电子邮件地址似乎有效,因为它符合一般的电子邮件地址格式,但实际上,这不是一个有效的电子邮件地址,因为以数字结尾的域名是无效的。com1
是一个有效的顶级域名3com
不是(“第一个字符必须是字母字符。”)42
也不是(同样的原因)1
也不是(同样的原因)a
也不是(“不允许单个字符名称或昵称。”)这是创建DNS的RFC之一,如今我们所知道的。为了兼容性,它将主机名定义为标签序列,其中标签的定义如下:
它们必须以字母开头,以字母或数字结尾,并且在内部字符中仅包含字母,数字和连字符。长度也有一些限制。标签必须少于63个字符。
TLD是其他标签中的一个标签(TLD中的L)。根据上述规则,com1
是一个有效的标签,因此是一个有效的TLD,而3com
则不是。这直接带来了以下修正案。
这通过更改一条规则修正了先前的RFC:
在RFC-952 [DNS:4]中指定了合法Internet主机名的语法。主机名语法的一个方面已经改变:对第一个字符的限制放宽,允许使用字母或数字。主机软件必须支持这种更自由的语法。这也涉及顶级域名,但是给出了:
网络主机的完全限定域名或其IP地址,作为由“.”分隔的四个十进制数字组成的集合。 完全限定域名的形式如RFC 1034 [13]第3.5节和RFC 1123 [5]第2.1节所述:由“.”分隔的一系列域标签,每个域标签以字母数字字符开头和结尾,可能还包含“-”字符。 最右边的域标签永远不会以数字开头,这在语法上将所有域名与IP地址区分开来。
这是为了介绍国际化域名(IDN),它说:
DNS名称中允许使用任何字符或位组合(如八位组)。然而,大多数应用程序要求采用首选格式。这种首选格式是顶级域名(TLD)名称中唯一允许的格式。通常情况下,它也是在TLD注册的大多数二级名称中唯一允许的格式,尽管某些通常不被用户看到的名称遵守其他规则。它源于用于命名主机(即“主机名”规则)的原始ARPANET规则,并且可能更好地描述为“LDH规则”,即允许使用的字符。更新后的LDH规则规定,构成域名的标签(由句点分隔的单词或字符串)必须仅包含ASCII [ASCII]字母和数字字符以及连字符。不允许使用其他符号或标点符号字符,也不能有空格。如果使用连字符,则不得出现在标签的开头或结尾。还有一个额外的规则,基本上要求顶级域名名称不全是数字。没有定义任何内容,但提供了一些有趣的事实:
根域名服务器收到了大量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的客户端计算机无法加入该域。[...]此行为是按设计进行的。”这最终解释了为什么纯数字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.
.42
的顶级域名作为一个实验,而且它成功了。请重新阅读上面RFC1123章节的最后一段。 - undefined实际上,目前有相当多的顶级域名包含数字:
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。从概念上讲,TLD 中并没有阻止数字的存在,未来也许会有数字顶级域名。
目前还没有包含数字的 TLDs - 该函数可能不会针对已知的 TLDs 进行测试(因为它可能会发生变化),而是按字典顺序进行测试。
192.0.1.42
也可以是TLD为42
的域名1
的子名称(过去曾经有一个关于TLD .42的实验,但是在ICANN之外进行。只要域名从未全部为数字,则可以正常工作)。 - Patrick Mevzek
FILTER_VALIDATE_EMAIL
只是一个基本的测试。 - PeeHaa