いますぐ使える国際化ドメイン名の理論と実践
〜アプリケーションとネットワークのIDNへの対応〜
米谷嘉朗
JPNIC IDN-TF/NTTソフトウェア
2003/2/11
間もなく、国際化ドメイン名(Internationalized Domain Name:以降IDNと表記)がインターネットの標準技術として利用できるようになります。IDNとは、従来のドメイン名で使用可能な英数字以外の文字、例えば漢字や仮名を、ドメイン名として使えるようにする技術のことを指し、国際化ドメイン名の技術により、日本語ドメイン名が実現できるようになります。そのIDN技術の仕組みとアプリケーションでの対応方法、IDN対応のネットワークにする方法を、それぞれページを追って紹介していきます。 |
IDNの標準化は、1998年7月にAPNG(Asia Pacific Networking Group)にWGが設立されアジアで最初に議論が開始しました。その後2000年初めにインターネットで使用されるプロトコルの標準化を行っているIETF(The Internet Engineering Task Force)にIDN WGが設立されて、議論の舞台はIETFに移り、インターネットの標準(Standard Track)プロトコルとして検討されるようになりました。それからほぼ3年という歳月をかけて2003年3月に、アジアを発信地としたドメイン名を国際化するという新しいプロトコルが誕生したのです。
◆識別子の国際化 |
図1 各国の自国語ドメインのイメージ |
この解説では、IDNがどのような技術に基づいているのか、利用者や運用者はどのような対応が必要なのかについて述べていきます。
1.IDN技術の仕組み |
ドメイン名とはインターネット上の資源に一意に定まる論理的な名前を付与するものです。そしてDNS(Domain Name System)により物理アドレス(IPアドレス)などに変換されます。一方、ドメイン名は多くのアプリケーションプロトコルにおいてプロトコル要素の一部として利用されています。そのため、ドメイン名の名前解決を行うDNSはインターネットで最も重要な基盤技術の1つであり、安定運用が求められています。
DNSやドメイン名への仕様の追加や変更は、インターネット全体に大きな影響を及ぼしかねないため、IDNワーキンググループが設立されてすぐに、IAB(Internet Architecture Board)はIDNに対する懸念として、既存プロトコルとの互換性維持(RFC 2825)と一元的なDNS階層構造の維持(RFC 2826)を求める2つのInformational RFCを発行しました。
従って、IDNワーキンググループでは既存プロトコルとの下位互換性を保ちつつ、ドメイン名の階層構造に依存しないように最大の注意を払いながら、ドメイン名を国際化する方式を検討しました。
IDNにおいては、早い時期に使用する文字セットとしてUnicodeの採用が合意されていましたが、Unicodeの文字をどのように符号化してネットワーク上で伝えるかについては多くの議論が行われ、ASCII文字(厳密にいうと、ドメイン名で使用可能な英数字とハイフンの37文字)のみで表現するASCII Compatible Encoding(以降ACEと表記)とすることが合意されました。ACEを採用することで、DNSサーバやメールサーバなどインターネットに広く普及しているASCII文字のみの使用を前提とした既存インフラへの影響を最小限となりました。
その結果、Unicodeの符号化には数多くのACEアルゴリズムが提案されたなかから、効率に優れたPunycode(RFC
3492) が採用されました。
Punycodeはpuny(小さい、取るに足らないなどの意)とcodeの合成語で、Unicodeと音が似ていること、プログラムが小さいこと、少ない文字数(英数字とハイフンの37文字)でIDNを表現できることを理由に、アルゴリズム考案者が命名したものです。
IDNを表現するために特別に設計されたPunycodeの特徴は以下のとおりです。
- ASCII文字はASCII文字で表現する(コード変換しない)。
- 非ASCII文字は文字コード順に並べ替え、前の文字との文字コードの差分
と元の文字位置を数値化する。 - 数値化された文字データを、特別な演算でASCII文字に変換する。
符号化の概念を非常に単純化して紹介します。
1. ASCII文字のくくり出しと並べ替え
2. 前の文字との文字コードの差分と元の文字位置(A)の数値化 3. 数値化された文字データ(B)を特別な演算でASCII文字に変換 ■逆変換例 |
この例を見て分かるとおり、単純に36進数化した場合、逆変換の際にASCII文字化された部分の区切りが判読できませんので(22MPとOCJなのか、22MとPOCJなのかなど)、実際のPunycodeでは36進数に固定せず、元の文字列から計算で求められる複数のN進数(25進数や30進数など)を使用し、符号化された数値の区切りが容易に求められるよう工夫されています。実際のPunycodeでは「3年B組」は「3B-W52DZ04I」に変換されます。
Unicodeでは、ディスプレイ上に表示されたり印刷されたりしたときには全く同じに見える同一の文字でも、文字コードの並びとしては異なる文字列であることがあります。これは、ほかの文字セットとの互換性のために設けられた互換文字や、合成用文字の存在が原因です。ドメイン名は識別子であるため、同じ名前は同じ文字列として照合される必要がありますが、上記のUnicodeの多様性はこの照合を困難にするため、IDNとして入力されたUnicode文字列を前処理し、同じ文字列となる可能性を最大限にする必要があります。IDNではこの前処理をNAMEPREP(Name Preparation:以降NAMEPREPと表記、RFC 3491)として標準化の一部としています。
NAMEPREPでは、以下の3ステップで処理が行われます。
- Map
Unicodeの規格として決められているCase MappingsのCase foldingを使用し、大文字・小文字など文字種(Case)のある文字の文字種を統一する。例えば、このステップでAはaに変換される。 - Normalize
Unicodeの規格として決められているUnicode Normalization FormsのNFKCを使用し、互換文字の統一や合成用文字の合成を行う。 例えば、このステップで(半角の)カは(全角の)カに変換される。 - Prohibit
コントロール文字などIDNとして使用が不適切な文字(使用禁止文字)をチェックする。使用されていれば、前処理はエラーとする。例えば空白文字(スペース)など。
NAMEPREPで検討された前処理の概念は、インターネットプロトコルで使用される国際化された文字列の前処理方式の枠組みとして一般化され、STRINGPREP(Preparation of Internationalized Strings)と名付けられてRFC 3454として発行されています。
ここまで見てきたPunycodeおよびNAMEPREPは、重要なIDNの要素技術ですが、それらをどのように適用するかが規定されていなければ、NAMEPREPされていない文字列がPunycodeに変換され、照合に失敗するといったことが生じてしまうため、IDNA(Internationalizing Domain Names in Applications、RFC 3490)がその規定を与えています。
IDNAの基本的な考え方は以下のとおりです。
- すべてのIDNはドメイン名をプロトコル要素として扱うアプリケーションによって処理されなければならない。
- IDNをプロトコル要素としてネットワークに送信する際は、IDNをラベルに分解し、ラベルごとにNAMEPREPしPunycodeに変換しなければならない。Punycodeに変換したラベルには、それがPunycodeであることを示す識別子(プレフィクス)を前置しなければならない(ACE Prefix)
- プロトコル要素としてネットワークから受信したACE Prefix付きのPunycodeをIDNとして表示する際は、Punycodeから逆変換した文字列がNAMEPREPされているか確認し、NAMEPREPされていなければIDNではないと判断する(逆変換した結果を表示してはいけない)。
また、フォントがないなどの理由で逆変換した結果を表示できない場合は、ACE Prefix付きのPunycodeのまま表示する。
ACE Prefixはxn--の形式で、IDNAのRFCの中で規定されています。
IDNは、IDNAの処理を経ることで、Punycodeと完全に1対1に対応付けられます。つまり、Punycodeのみに対応したアプリケーションは、IDNに対応しているとはいえないことになります。
更新履歴 |
ページ目次 |
1 IDN技術の仕組み 2 アプリケーションでの対応方法(利用者の対応) 3 IDN対応のネットワークにする方法(管理者の対応) |
関連リンク | |
集中連載:DNSの仕組みと運用 |
「Master of IP Network総合インデックス」 |
- 完全HTTPS化のメリットと極意を大規模Webサービス――ピクシブ、クックパッド、ヤフーの事例から探る (2017/7/13)
2017年6月21日、ピクシブのオフィスで、同社主催の「大規模HTTPS導入Night」が開催された。大規模Webサービスで完全HTTPS化を行うに当たっての技術的、および非技術的な悩みや成果をテーマに、ヤフー、クックパッド、ピクシブの3社が、それぞれの事例について語り合った - ソラコムは、あなたの気が付かないうちに、少しずつ「次」へ進んでいる (2017/7/6)
ソラコムは、「トランスポート技術への非依存」度を高めている。当初はIoT用格安SIMというイメージもあったが、徐々に脱皮しようとしている。パブリッククラウドと同様、付加サービスでユーザーをつかんでいるからだ - Cisco SystemsのIntent-based Networkingは、どうネットワークエンジニアの仕事を変えるか (2017/7/4)
Cisco Systemsは2017年6月、同社イベントCisco Live 2017で、「THE NETWORK. INTUITIVE.」あるいは「Intent-based Networking」といった言葉を使い、ネットワークの構築・運用、そしてネットワークエンジニアの仕事を変えていくと説明した。これはどういうことなのだろうか - ifconfig 〜(IP)ネットワーク環境の確認/設定を行う (2017/7/3)
ifconfigは、LinuxやmacOSなど、主にUNIX系OSで用いるネットワーク環境の状態確認、設定のためのコマンドだ。IPアドレスやサブネットマスク、ブロードキャストアドレスなどの基本的な設定ができる他、イーサネットフレームの最大転送サイズ(MTU)の変更や、VLAN疑似デバイスの作成も可能だ。
|
|