Punycode 域名 (UName) 是否存储使用的 IDN table?

Does a Punycode domain name (UName) store the IDN table used?

我创建了一个域名,例如:même.vip
我可以在数据库中看到该域名已使用 IDN table: "fr".

注册

但是,'ê' 可以是葡萄牙语、挪威语等...

我想了解谁在使用 IDN table 此处...

因此,我最好的机会是了解 Punycode 域名是否包含使用 table 的信息。如果不是:那么我知道它是数据库或注册表中的某些服务,在 EPP 命令之后。
(当然,如果 punycode 确实包含 IDN table,那么我还有更多工作要做!)

Does a Punycode domain name (UName) store the IDN table used?

TL;DR: 没有。

你混合了很多东西,但很难总结所有东西(我在 https://webmasters.stackexchange.com/a/122160/75842 做了一个非常详细的回答,应该对你有帮助)。

对于计算机,ê 是葡萄牙语还是挪威语在 DNS 级别上没有区别。与在 Unicode 级别相同,ê 是 "U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX" 只是被定义为“拉丁”字符,无论哪种语言可能使用它。

简而言之:

  • IETF 发明了 Punycode 算法,更准确地说是 IDNA 标准,只是为了确保人们可以(几乎)使用其域名中的任何字符。因此,该算法只是将“任何 Unicode 字符串”转换为“以 xn--”开头的 ASCII 字符串

  • 域名行业、ICANN 和所有注册管理机构,然后在此基础上决定规则。例如,有一个主要规则“你不能在同一个字符串中混合来自多个脚本的字符”,主要是为了避免 IDN 同形异义词攻击(所以不是真正的技术限制);我上面的回答详细介绍了这一点。

  • 在 EPP 级别,各种参与者创建了各种扩展,这里没有真正标准化的“IDN”规范。这也是为什么你会发现人们谈论“脚本”,其他人谈论“语言”,其他人谈论“曲目”等等。这是一团糟(Unicode 只谈论脚本,而不谈论语言)。一些注册表不使用任何扩展名,而另一些则使用。有些人希望您始终传递 IDN“table”(又名 script/language/whatever)参考,有些人只在某些情况下需要它。例如,查看 https://www.verisign.com/en_US/channel-resources/domain-registry-products/idn/idn-policy/registration-rules/index.xhtml; 上的 Verisign IDN 实践,它归结为“所有 IDN 注册都需要一个语言标签;其中一些附加到特定的可能字符列表”

您可以在理论上找到所有但实际上只能找到 https://www.iana.org/domains/idn-tables 中存在的大部分 IDN table,并且您可以看到它们是每个注册管理机构的,表明这些额外信息实际上没有编码域名的 ASCII 形式,经过 Punycode 算法转换后。

I am trying to understand who is assuming the IDN table here...

不应有假设(由注册服务商提供或未提供)或不需要 IDN table(注册管理机构将根据找到的字符反向进行 Punycode 转换并决定,table 它应该在其中)。

I can see the EPP transaction - it is not using the IDN extension and therefore cannot supply an IDN table to the server, even if it wanted to

哪个注册表?如果您是注册服务商,实际上注册管理机构应该能够帮助您并回答此类问题。请注意,大多数时候(我可以写“一直”,但我不确定是否存在反例,或者至少我现在想到了 none),在 EPP domain:check 期间你只是在 domain:create 期间传递不带任何 IDN 扩展名的名称(以 ASCII 形式),同时传递 IDN 扩展名(如果有)。这也意味着 domain:check 可能无法为您提供正确的完整答复,只是因为在那个时候并不是所有事情都是已知的。

请参阅这些关于 IDN 扩展的 EPP 文档: