域名里那个小短横,故事比你想的多
域名里到底能放几个连字符?这事比你想的有意思多了
你有没有想过,一个域名里到底能塞进去多少个横杠(就是键盘上那个 "-")?
我之前也没想过,直到某天突然好奇了一下。结果这一查不得了,顺着网线挖出了一堆三十多年前的老古董标准。只能说,这答案吧……比你预想的精彩多了。
先说结论——其实挺绕的
理论上,一个域名里最多能连续放 59 个连字符。
但实际上嘛……懂的都懂。答案取决于你查的是哪个 RFC 规范、用的是哪个 TLD 注册局,以及——大概没人真的去管这事儿管了二十多年。
先把时间倒回去看看
先说说早年间的事。
1978 年那会儿,互联网刚起步,相关的标准文件里把那个横杠字符叫做"减号"而不是连字符。RFC 608 规定主机名可以用字母、数字和减号,限制只有两条:第一个字符必须是字母,最后一个字符不能是减号。
到了 1981 年,RFC 810 把这个规则正式写进了域名语法规范里,用的是现在看起来特别古老的编程记号:
<name> ::= <let>[*[<let-or-digit-or-hyphen>]<let-or-digit>]
翻译成人话就是:以字母开头,结尾是字母或数字,中间随便你怎么折腾。
1989 年的 RFC 952 差不多把这个规则沿用下来了,措辞稍微清爽了一点点。然后是 1987 年的 RFC 1035,这个经常被引用为"推荐域名语法"标准。它再次确认:每一段标签必须以字母开头、以字母或数字结尾,中间部分只能是字母、数字和连字符。
注意到没有?对连续连字符的数量,根本没做任何限制。
国际化域名来搅局了
这事本来一直挺稳的,直到 2010 年,IDN(国际化域名) 登场了。
这些域名用 xn-- 这个前缀来支持非 ASCII 字符(比如中文、日文)。然后事情就开始有意思起来了。
RFC 5891 引入了一条新规则:"Unicode 字符串的第三和第四个字符位置,不能出现 '--'(两个连续的连字符)。"
为啥要有这条?
因为 xn-- 这个前缀,拆开来看第三和第四位正好就是 --。这条规则就是为了防止混淆。
也就是说,如果你的域名以 xn 开头,那这条规则跟你没关系。其他人的话,第三和第四位就不能是两个连续的连字符。
那按这个逻辑,你从第四位开始放连字符,一直放到第 62 位,理论上最多能有 59 个连续的连字符。像 abc---[…]---z.com 这样的域名应该能正常工作。
……大概吧?
现实打脸:TLD 限制
但问题是,标准这东西吧,说白了就是建议,除非有人真的去执行。
每个顶级域名的注册局都可以自己定规矩,通常比 RFC 的要求还要严格。
有的注册局禁止某些词汇,有的压根不接受 IDN 注册,有的专门防着你冒充公共后缀。
然后还有南苏丹的 .ss 注册局,据说他们一个连字符都不让用。零。连一个都不行。
Nominet(管 .uk 的)虽然没有明文规定连字符限制,但他们不让注册 xn-- 开头的域名。
总的来说,大多数注册局会允许你注册带很多连字符的域名——但"大多数"不等于"全部"。
离谱案例:这些域名根本不该存在
接下来这部分就比较好玩了。
互联网底层跑着一大堆老系统、边缘案例和"差不多就行"的实现。有人真的去扒了扒,发现了几百个违反现代规则的域名。
挑几个说:
0-------------------------------------------------------------0.com—— 1999 年注册的,现在已经下线了0-------------------------------------------------------------5.com—— 2001 年注册的,居然还在运行a-------------------------------------------------------------a.com—— 61 个连字符。对,六十一个大横杠。这个网站到现在还能打开,页面看起来跟 2000 年那会儿一模一样
没错,61 个连续连字符的域名,2024 年了还能访问。
还有一个 zz--icann-monitoring.uk,2024 年才注册的,早就过了 IDN 规则制定的年代。但因为 Nominet 不让注册 xn-- 域名,这个从技术上讲反而是合规的。
还有一些看起来像是随机生成的域名,搞不好是拿来当命令控制服务器用的。图案挺有意思,有兴趣的可以自己研究研究。
对你有啥影响?
说实话,可能啥影响都没有。大部分域名注册商本来就会拦住你,不让你注册太离谱的域名。
但了解一下这些规则还是有用的,尤其是:
- 在程序里做域名验证——你得知道规则才能写对
- 处理国际化域名——
xn--的例外情况你得搞清楚 - 审计现有系统——检查有没有合规问题
- 就是好奇——想了解互联网底层到底是咋回事
互联网标准这东西,是几十年来不断演进的活文档,是人们在当时解决实际问题一点点攒出来的。连字符规则其实就是灵活性和清晰度之间的平衡——跟人类的大多数系统一样,时间长了总会积累一些奇奇怪怪的边角料。
下次选域名的时候,建议还是整一个简单好记的。但现在你知道了:如果真的想的话,技术上你是可以注册 hello------------------------------------------world.com 的。
你大概率不会去这么做。
但理论上,完全可以。