JPドメイン名のサービス案内、ドメイン名・DNSに関連する情報提供サイト


JPRS トピックス&コラム No.007


国際化ドメイン名を実現する3つの技術


国際化ドメイン名は http://ドメイン名例.jp/ のように、従来英数字と一部記号のみが使用可能であったドメイン名を、それ以外の文字列も使用できるように機能拡張したものです。
今回は、国際化ドメイン名を実現するための基本的な3つの技術について解説します。

国際化ドメイン名を実現する3つの技術

 国際化ドメイン名は、Punycode、Nameprep、IDNAという3つの技術の組み合わせにより実現されています。それら3つのしくみについて、順に説明していきましょう。
 このような背景から、DNSでは主な通信プロトコルとしてUDPが採用され、TCPは権威DNSサーバー間のゾーン転送やある程度の長さを超えるDNS メッセージを取り扱う際にのみ使用されるように設計されました。そして、UDPにおいて取り扱い可能なDNSメッセージの最大長は当初、512バイトまでと定められました。

1. インターネット基盤への影響を最小限に ~Punycode~

 インターネットにおいてプロトコルの国際化を行う場合、文字コードとしてUnicodeが使用され、文字列の符合化方式としてRFC 3629で規定されているUTF-8が使用されることが主流となっています。UTF-8は従来のASCIIと上位互換性があるため、従来のプロトコル仕様に与える影響を少なくすることができます。
 国際化ドメイン名においても、文字コードにUnicodeを採用することは早い段階で合意されていました。しかし、標準化の過程において、DNSはインターネットの基本部分を構成する基盤技術として重要な役割を担っており、符号化方式として8ビットコードを含むUTF-8をそのままの形で採用した場合、既存のDNSインフラに悪影響をおよぼすことが懸念されました。
 そのため、国際化ドメイン名ではUnicode文字列の符合化方式としてUTF-8ではなく、Punycode(ピュニコード)と呼ばれる方式が開発・採用されました。
PunycodeはRFC 3492で規定されており、Unicode文字列をドメイン名として従来から使用可能であったアルファベット・数字・ハイフンで表現するものです。

図1Punycodeを用いた符号化
図 1 Punycodeを用いた符号化

2. 名前の前処理 ~Nameprep~

 Unicodeでは、「e」のようなアクセント記号のある文字が「文字」と「アクセント」の2つの文字コードで構成されている場合と、「アクセントつき文字」の1つの文字コードで構成されている場合があります。これらは全く同一の文字であるため、異なる文字コードであっても別のドメイン名と認識されるべきではありません。
 また、全角文字と半角文字のような、ドメイン名として取り扱う場合に同一であると判断したいものもあります。このような要求を実現するため国際化ドメイン名では入力された文字列に対し、一定の方法で事前処理を行うことにより、予期しない不都合の発生を防止する方式が採用されました。この変換は名前の前処理(Name Preparation)と呼ばれており、文字種の統一(Mapping)正規化(Normalization)、禁止文字の排除(Prohibited Output)という3つの処理により構成されています。またこれらの3つの処理を合わせて単に正規化と呼ぶ場合もあり、以後本稿ではこの表現に従います。
 国際化ドメイン名ではRFC 3491 で規定されているNameprep(ネームプレップ)という方法で正規化が行われます。Nameprepによる正規化のうち、主なものを図2に示します(*1)。

図2Nameprepにより行われる主な正規化
図 2 Nameprepにより行われる主な正規化

3. 全ての処理はアプリケーションで ~IDNA~

 国際化ドメイン名ではこれまでに説明したNameprepによる正規化、およびドメイン名データを送受信する際のPunycodeによる符合化・復号化は全て、Webブラウザ等の各ユーザ側アプリケーションで行う必要があります。この方式はIDNA(IDN in Applications)と呼ばれ、RFC 3490で規定されています。
 ここまでで説明したPunycode、Nameprep、IDNAの関係を図3に示します。

図3Punycode、Nameprep、IDNA の関係
図 3 Punycode、Nameprep、IDNAの関係

国際化ドメイン名と日本語ドメイン名

 ここで「国際化ドメイン名」と「日本語ドメイン名」の関係について説明しておきましょう。
 国際化ドメイン名(Internationalized Domain Name)はインターネットプロトコルの正式名称として、標準的に使用されています。それに対し日本語ドメイン名は、日本語の文字列で表現された、国際化ドメイン名の一部分ということになります。
 また、JPRSが提供している「日本語JPドメイン名」では、国際化ドメイン名として利用可能な文字列のうち、ひらがな、カタカナ、漢字(JISコードの第一水準/第二水準)、およびそれらに準ずる記号(々、・など)のみを取り扱えるように、JPドメイン名の技術細則により登録可能な文字列を定めています。

図4日本語JPドメイン名の主な仕様
図 4 日本語JPドメイン名の主な仕様

国際化ドメイン名への対応

 国際化ドメイン名の標準化方式としてIDNAが採用されたことにより、国際化(日本語)ドメイン名を利用する場合、Webブラウザやメールソフト等のアプリケーションにおいて国際化ドメイン名に対応する作業をそれぞれ個別に行う必要があります

図5国際化ドメイン名に対応した主なWebブラウザ
図 5 国際化ドメイン名に対応した主なWebブラウザ

サーバ側からみた国際化ドメイン名

 一方、DNSサーバやWebサーバ等のサーバ側からみた場合、国際化ドメイン名に関する全ての処理はアプリケーション側で行われるため、サーバ側の設定ファイルにおける国際化ドメイン名の記述としてPunycodeを使用することにより、従来のサーバプログラムを改変することなく国際化ドメイン名に関する設定を行うことができます(図6)。

図6BIND における設定例(named.conf)
図 6 BINDにおける設定例(named.conf)

より便利なインターネットをめざして

 現在ICANNにおいて、トップレベルドメイン(TLD)の国際化の議論が進められています。ICANNからは、早ければ2009年には「.日本」のような、国際化されたTLDが使用開始になる可能性が示されています。
 これまで、さまざまなインターネットプロトコルが国際化されることにより、非英語圏のユーザがインターネットを使用するための障壁が取り除かれてきました。今後もさまざまな分野において、より便利なインターネットをめざした努力が続けられていくことでしょう。


なお、日本語JPドメイン名に関する最新情報につきましては、http://日本語.jp/ をご参照ください。



半角ピリオドへの変換はIDNA(後述)により行われています。


掲載内容は2008年7月のものです。