是否可以创建包含特殊字符的 DNS 子域?
Is it possible to create a DNS subdomain containing special characters?
是否可以创建包含特殊字符的 DNS 子域?
例如,根据 DNS 的 RFC,*.example.com 或 $.example.com 是否有效?
根据RFC 1034, domain name label can consist of letter, digit or hyphen (and it must begin with letter and end with letter or digit), so $
is not allowed. The exception that has special treatment is *
, used for wildcards, and explained in more detail in RFC 4592
您问题的简短回答归结为 "Yes, but no, but sometimes yes"。
在协议层面,DNS字符串(包括名称)被编码为长度+数据,所以数据可以是任何东西。因此 *
和 $
完全没问题。
协议之上的级别是人名级别。在 that 级别上,您可以使用的名称有限制。自 80 年代以来,主要限制归结为字母、数字和 -
(只要它不在标签的开头或结尾)。所以这样 *
和 $
是被禁止的(除了 *
因为标签的整个内容有特殊的含义)。
最重要的是,现在我们有了国际化的名字。这是一种将任何 Unicode 字符串编码为符合上述规则的形式的方法。这样,我们就可以拥有对人类来说看起来像 räksmörgås.se
而内部看起来像 xn--rksmrgs-5wao1o.se
的名字。开头的 xn--
是一个前缀,表示这是一个编码名称。你仍然不能在你的名字中使用 *
或 $
,但你可能会在 Unicode 中找到其他看起来足够接近并且你 可以 使用的东西。 .. 这本身就是一个安全问题。
所有这些的规范分散在太多的 RFC 中。如果您好奇,请启动 here 并从那里访问许多链接。
是否可以创建包含特殊字符的 DNS 子域?
例如,根据 DNS 的 RFC,*.example.com 或 $.example.com 是否有效?
根据RFC 1034, domain name label can consist of letter, digit or hyphen (and it must begin with letter and end with letter or digit), so $
is not allowed. The exception that has special treatment is *
, used for wildcards, and explained in more detail in RFC 4592
您问题的简短回答归结为 "Yes, but no, but sometimes yes"。
在协议层面,DNS字符串(包括名称)被编码为长度+数据,所以数据可以是任何东西。因此 *
和 $
完全没问题。
协议之上的级别是人名级别。在 that 级别上,您可以使用的名称有限制。自 80 年代以来,主要限制归结为字母、数字和 -
(只要它不在标签的开头或结尾)。所以这样 *
和 $
是被禁止的(除了 *
因为标签的整个内容有特殊的含义)。
最重要的是,现在我们有了国际化的名字。这是一种将任何 Unicode 字符串编码为符合上述规则的形式的方法。这样,我们就可以拥有对人类来说看起来像 räksmörgås.se
而内部看起来像 xn--rksmrgs-5wao1o.se
的名字。开头的 xn--
是一个前缀,表示这是一个编码名称。你仍然不能在你的名字中使用 *
或 $
,但你可能会在 Unicode 中找到其他看起来足够接近并且你 可以 使用的东西。 .. 这本身就是一个安全问题。
所有这些的规范分散在太多的 RFC 中。如果您好奇,请启动 here 并从那里访问许多链接。