3.3 国际化域名中的字符及注册政策
IDNA2008采用了包含性模式,即:如果某个字符不属于Unicode字符集,则IDNA2008认为该字符的码位在IDN中是无效的,但可以通过例外情况来单独包含该字符。在IDNA2008使用新版本的Unicode字符集时,通常会有全新的字符码位,这些字符码位可用于建立运算法则及表格文件(见RFC 5892)的字符列表的浏览模式,并描述这些字符码位的分类名称和适用性。注意:即使属于协议有效分类中字符,也不可以不加选择地使用,因为其中某些字符的使用是和应用环境规则相关联的。
3.3.1 Unicode字符和类型
从IDNA2003的字符排除模式到IDNA2008的字符包含性模式的变化涉及IDN中可接受字符列表的最新规范标准。在IDNA2003中,字符的有效性独立于环境,并且永远是固定的,但已经证明完全环境独立是不切实际的例如,某些字符(Unicode字符集中的控制字符)需要合理地使用某些文本(依赖于环境),并没有对其他方面造成明显的影响,但IDNA2003完全禁止了这类字符。现在已经达成共识:在某些条件下,这类字符需要恰当地使用某些语言和文本。通常,环境规则有助于在不同的文本中处理字符(有可能是完全被禁止的字符)。IDNA2008将Unicode字符分成四类:协议有效、要求环境规则、不接受和未赋值。
3.3.1.1 协议有效
在IDN中使用协议有效(PVALID)的字符时会受到协议有效字符环境规则限制或者使用协议有效字符的整个字符串的其他规则限制。例如,包含“从右到左”属性的字符的任何域名字段必须在符合Bidi(Bi-Directional)规则的环境(见RFC 5893)中使用。
3.3.1.2 要求环境规则
在IDN中,虽然使用某些字符是不恰当的,但这些字符对某些文本来说是必要的,其中两个最常用的字符是零宽连接字符(ZWJ字符,其Unicode码位是U+200D)和零宽非连接字符(ZWNJ字符,其Unicode码位是U+200C)。这些字符要求进行特别处理,因为它们也不会被普遍接受(Unicode会认为它们是标点符号或特殊符号),只能在有限的环境中被接受。
(1)环境规则限制。带有环境规则限制的字符会被认为要求环境规则类型的字符,并且该类字符会与一个环境规则具有关联性。环境规则会定义在特定字符串中使用某个字符是否有效;定义该环境规则本身是否能够用于域名查询和域名注册;需要表明禁止加入的字符及类似的字符(称为环境连接字符)与其他要求环境规则处理的字符(环境其他)之间的区别。环境规则不会完全避免可能造成混淆或问题的字符,其目的是将这些字符的应用限定到字母(字母具有较少的环境规则),域名注册管理机构要对使用这些字符时进行的处理了如指掌。例如,在使用印度字母进行域名注册时,如果需要使用ZWJ字符和ZWNJ字符,则应该明白这些字符在哪里具有视觉效果,以及它们在哪里没有效果,并做出相应的域名注册规则。在使用拉丁字母或者斯拉夫字母进行域名注册时,可能会用到一些特殊的字符,目前对使用这些特殊字符会导致的异常结果知之甚少,因此域名注册管理者应避免接受包含这些特殊字符的域名。
(2)环境规则应用。环境规则具有描述性,必须对实际的环境规则进行定义,否则环境规则是无效的。如果存在要求环境规则类型的字符,则环境规则要具有真实(在符号的任何位置使用字符)、错误(在任何符号中不使用字符)或者一套程序规则(其中详细规定接受字符的环境)的定义。相对于怎样为每个字符准确地建立正确的规则来说,识别每个字符是很容易的。在字符集的某个版本中,一种常用的环境规则是设置无效数值,和无效数值有关的字符不允许出现在域名字段中。当然,字符集的后期版本可以进行更新,将无效数值变为有效数值。
3.3.1.3 不接受
有些字符不适合在IDN中使用,因此要在域名注册和域名查询过程中排除这些字符,即不接受类型的字符。不接受类型的字符包括已经从Unicode字符集中去除的字符。如果一个字符被错误地分类为不接受类型,并且这种错误会造成很大的问题,那么唯一的解决方法就是将该字符引入Unicode字符集,并将其分类为协议有效类型。如果某个字符符合以下一个或多个条件,那么该字符将被设置为不接受型类型字符。
(1)某个字符在兼容性上等于其他字符。使用更为精确的Unicode术语描述,即某个字符进行规格化处理后会变成其他字符。
(2)某个字符只有大写形式,或者通过Unicode格式折叠后会映射成其他字符的某种形式。
(3)某个字符是一个记号或者标点符号,或者是用于构成字母和数字的非字母、数字或记号。
3.3.1.4 未赋值
为了便于处理和编制表格,在Unicode字符集中未赋值的字符会被看成特殊的字符,即未赋值类型的字符。在域名字段中,禁止使用未赋值类型的字符。限制未赋值类型的字符是因为这些字符的属性不确定,直到将实际的码位分配给它们为止。如果在要查询的域名字段中包含未赋值类型的字符,则这些字符在后期会被赋值为要求环境规则类型的字符。在这种情况下,IDNA2003可能会允许查询包含未赋值类型字符的域名字段,但更新后的软件版本会限制查询同样的域名字段(这主要取决于环境规则)。应当明确的是,在任何情况下,域名字段中都不应使用未赋值类型的字符。
3.3.2 域名注册政策
当上述规则不足够定义域名注册政策时,域名注册管理机构应当制定额外的限制政策来减少混淆和其他问题。例如,通常情况下,人们认为含有一个以上书写体字母的域名字段是不好的实践,因此有些域名注册管理机构会限制含有少量书写体字母的域名字段。对于大多数字母来说,可以使用不同的技巧(如在RFC 3743及RFC 4290中描述的技巧),以及通过中文域名协调联合会提供的表格中的中文来阐明,这有助于解决用户的识别问题。
域名注册规定只使用U-label格式和/或A-label格式,旨在确保域名注册管理机构能完全理解正在注册的域名。该规定不应被理解成要求域名注册管理机构提供特定代码序列的字符。各级DNS的管理政策和应用都需要遵守该规定,不仅仅是顶级域名(TLD)或者二级域名(SLD)的注册。
3.3.3 分层限制条件
对于安全性、混淆性或者其他有关IDN的问题,目前并没有一种万能的解决方案,因此IDNA2008以规范、标准的形式定义了不同的方法和措施,如字符规则。建立域名注册字表是第一种措施,关于在特定应用环境中怎样应用或者限制这些字符的规则是第二种措施,这两种措施合起来构成了在IDNA2008协议中可以实现的限制条件。正如前文所述,域名注册管理机构会限制注册的内容,并制定了一些规则,这一方面可以优化混淆和风险,另一方面还可将国际化域名易记的特性表现得最大化。