第3章 国际化域名应用基础
3.1 国际化域名应用简介
3.1.1 国际化域名应用的发展背景
互联网是一个基于开放系统互联模型的网络,域名是互联网上的基础服务,是用于识别和定位互联网上计算机层次结构的名称标识,与计算机的互联网地址相对应。基于域名可以提供WWW、电子邮件、FTP等应用服务。
国际化域名(Internationalized Domain Names,IDN)也称为多语种域名,是指在域名字段里含有非ASCII字符的域名。例如,含有日文字符的域名为日文域名、含有中文字符的域名为中文域名。在互联网发展初期,域名只能使用63个ASCII字符(“a~z”“A~Z”“0~9”“-”),如www.cnnic.cn.。随着互联网的迅猛发展,20世纪90年代末,国际互联网界提出将原本只能使用63个ASCII字符的域名采用本地语言文字来表示,也就出现了对多语种域名或国际化域名的需求。
2003年3月,IETF发布了有关IDN的3个核心技术标准:RFC 3490、RFC 3491和RFC 3492。这3个技术标准奠定了IDN的技术体系基础。从2008年开始,IETF针对IDN遇到的问题,又对IDN进行了改进,并在2010年8月5日正式发布了5个有关IDN的技术标准:RFC 5890、RFC 5891、RFC 5892、RFC 5893和RFC 5894。
随着互联网的发展,以及中文用户数量的不断增加,对于中文域名的需求也在增加。中文域名和传统的英文域名有较大差别,例如,域名字段的分隔符(中文句点和英文句点)不同,中文字符有多种形式(包括简体、繁体、异体、古体等),且中文域名的字符集比英文域名的字符集大很多。
我国制定了关于中文域名的国内行业标准,其中《基于国际多语种域名体系的中文域名总体技术要求》(YD/T 2142—2010)和《基于国际多语种域名体系的中文域名的编码处理技术要求》(YD/T 2143—2010)已由工业和信息化部正式发布实施。
《基于国际多语种域名体系的中文域名总体技术要求》主要规定了如何在应用程序中实现对中文域名的支持,并规定了中文域名的注册指南。《基于国际多语种域名体系的中文域名的编码处理技术要求》主要规定了如何利用Punycode编码将中文域名转化为ASCII字符形式的域名。
IDN有助于全球的互联网用户以其首选的语言使用互联网标识,并有助于各公司以各自国家和地区的当地语言保持同一品牌身份。以IDN为基础的中文域名的问世,是世界网络业的一个重大突破,它克服了互联网世界的语言障碍,使全球不以英语为母语的广大华人网民可以通过自己的语言上网,从而可以更加真实地体验“网络无国界”。中文域名的应用有助于中文信息交流,提高中文信息服务业的发展水平及其在全球信息服务业中的地位,进一步带动以电子商务为核心的新经济发展等。
我国于2010年申请获得“.中国”和“.中國”中文顶级域名,并于当年7月完成入根,已运营至今,成功地为全球的华人网民提供了良好体验。
3.1.2 国际化域名应用的适用性与功能性
国际化域名应用(Internationalized Domain Names in Application,IDNA)标准旨在解决Unicode扩展字符的问题,以便在域名中使用这些扩展字符。IDNA没有改变DNS的运行方式,它只是DNS上的一种应用程序,该应用程序继续使用准确匹配的查询服务。这种匹配很好地为现有的应用程序提供了服务,用户只需要知道输入应用程序中(如网络浏览器和电子邮件客户端)域名的准确拼写即可。引入较大字符集会使错误拼写的可能性变大,尤其在某些情况下,某些字符有极其相似的外观,如在名片中,在视觉上会造成匹配几个Unicode码位或几种序列的码位,从而造成混淆。
IDNA标准不强制要求其他应用程序符合其要求,也不会追溯性地改变这些应用程序。应用程序可以使用IDNA来支持IDN,同时也可以使用现有的基础设施来维持其互用性。对于想要在公共DNS中使用非ASCII字符的应用程序来说,IDNA是唯一的选择。如果应用程序要使用IDNA,则需要应用程序支持IDNA标准,并且要在前端处理留出更多的空间,尤其是要在用户界面中留出更多的空间。
对IDN解决方案的讨论主要集中在转换的问题上,以及IDN如何在没有更新所有组成内容时发挥作用。IETF的IDN工作组没有选择激进的技术路线,IDN依赖于用户应用程序、域名解析器及域名服务器,以使用户能以可接受的编码形式来应用IDN。IETF的IDN工作组采取基于DNS框架之上的技术解决方案。
IDNA不要求改变DNS协议、域名服务器或用户计算机的域名解析器,允许通过两种方式来引入IDN:一是通过避免更新现有的互联网基础设施(如DNS和电子邮件传输代理等互联网基础服务)来使用IDN;二是通过ACE编码形式的A-label来使用IDN。
3.1.3 国际化域名应用的易懂性和可预测性
国际化域名应用2008版本(IDNA2008)的目标之一是改善用户对IDNA工作原理的理解,以及确定使用的字符,因此增强国际化域名的易懂性和可预测性是IDNA的重要设计目标之一。系统终端的应用程序在提高IDNA的易懂性方面发挥着重要作用,但应用程序在处理国际化域名时通常会遇到一些问题。例如,如果系统的字体中没有包含某个字符,那么就无法显示该字符。当系统的字体没有某个字符时,IDNA并没有给出应用程序应如何处理的建议,这是因为IDNA很少控制显示功能。
如果系统的内部字符采用Unicode编码,那么通过本地字符集和Unicode字符集的转换可以解决上述问题。如果系统的本地字符集不具有所需的字符或采用了不同的字符编码,就需要加入特殊的逻辑,以避免或减少信息的损失。转换本地字符集和Unicode字符集时的主要困难是如何精确地识别本地字符集,并采用正确的转换方式。更为困难的情况是,本地字符集在编码时使用的假设条件并不是Unicode字符集使用的假设条件,这些差别通常不会容易地被明确的转换或解释。
在使用IDNA之前,IDNA2008会把原本属于IDNA协议(如IDNA2003)的一部分处理,如字符映射以及其他调整,移到字符串预处理过程中,其目的是在显示、转换和存储过程中更多地使用完全有效的A-label或U-label,这有利于提高易懂性和可预测性。仔细观察预处理过程可以看到,它会引出以下问题:预处理应当怎样做、预处理在什么时候会变得有害、如何兼容IDNA2003环境下的域名字段等。