メインコンテンツへジャンプする

JPNICはインターネットの円滑な運営を支えるための組織です

ロゴ:JPNIC

WHOIS 検索 サイト内検索 WHOISとは? JPNIC WHOIS Gateway
WHOIS検索 サイト内検索

mDNkit 仕様書

全体構成

キットを構成するコンポーネント

mDNkitは次のようなコンポーネントから構成されます。

MDNライブラリ

多言語ドメイン名の変換に関わる基本的な処理を実装したライブラリです。

  • エンコーディング変換
  • NAMEPREP
  • ローカルマッピング
  • DNSメッセージの解析と組み立て

という機能を提供します。 下記のコンポーネントはいずれもこのライブラリを使用して作られています。

また、これらの機能を用いてアプリケーションで多言語ドメイン名の変換を行うためのAPIを提供しています。 これは多言語ドメイン名の処理のアーキテクチャの提案であるIDNAに従ったもので、 このアーキテクチャではクライアントアプリケーション自身が、 多言語ドメイン名に対してNAMEPREPを実行し、 IDNエンコーディングに変換してからリゾルバを呼び出すことになっています。

mdnsproxy

DNSサーバのプロキシサーバとして動作し、 クライアントからのDNSメッセージをDNSサーバに中継し、 またDNSサーバから返されるDNSメッセージをクライアントに中継します。

クライアントから送られてきたDNSメッセージを中継する際には、 メッセージ中のドメイン名を、 クライアントの使用するローカルエンコーディングから、 多言語化されたDNSサーバの使用するエンコーディング (IDNエンコーディング) に変換するとともにNAMEPREPなどを行います。

またDNSサーバから返されたDNSメッセージを中継する際には、 メッセージ中のドメイン名を、 IDNエンコーディングからローカルエンコーディングに変換します。

mdnconv

ゾーンマスタファイルやnamed.confファイルのエンコーディング変換用ツールです。 ローカルエンコーディングで記述されたこれらのファイルを、 多言語化されたDNSサーバが使用するIDNエンコーディングに変換し、 同時にNAMEPREPなども行います。

BIND 9パッチ

BIND 9で多言語ドメイン名を扱えるようにするためのパッチです。 このパッチを適用することにより、dig、 nslookup等のツールにエンコーディング変換やNAMEPREPの機能が付加され、 多言語ドメイン名を扱えるようになります。

runmdn

UNIXアプリケーションを再コンパイルすることなしに多言語ドメイン名を扱えるようにするためのコマンドです。 アプリケーションの実行時にMDNライブラリを動的にリンクすることによりアプリケーションにリンクされている名前解決用の関数に多言語ドメイン名のエンコーディング変換やNAMEPREPの機能が付加されます。 これによりmdnsproxyを使用することなく、 多言語ドメイン名が扱えるようになります。

mDN Wrapper

Windowsベースのアプリケーションで多言語ドメイン名を扱えるようにするための、 WINSOCKに対するWrapper DLLです。 通常、 WindowsアプリケーションはWINSOCKによってドメイン名を解決します。 mDN Wrapperは、WINSOCKの呼び出しをフックして、 多言語ドメイン名のエンコーディングの変換やNAMEPREPを行ないます。 同じようなことはdnsproxyでもできますが、 mDN Wrapperを使った場合には、 アプリケーション毎に異なったローカルエンコーディングを受付けることもできます。

8ビットスルーパッチ

dnsproxyを用いて多言語ドメイン名のエンコーディング変換や正規化等を行う場合、 DNSサーバやリゾルバライブラリにはこれらの機能は必要ありません。 ただしDNSプロトコル上のエンコーディングとしてUTF-8等の8ビットコードを使用する場合、 従来のDNSサーバは使用することができず、 8ビットコードをエラーにせずに通すような改造が必要です。

またローカルエンコーディングがSJIS等の8ビットコードを使用する場合、 やはりリゾルバライブラリにも8ビットコードをそのまま通し、 エラーにしないようにするための改造が必要です。

さらにアプリケーションの中には、独自にドメイン名の検査を行い、 8 ビットコードを通さないものがあります。

このため、本キットでは

  • BIND 8のネームサーバ、リゾルバを8ビットスルーにするためのパッチ
  • WebのキャッシュサーバであるSquidのURL解析部分を8ビットスルーにするためのパッチ

を提供します。 これらの8ビットスルーパッチに関しては特に仕様の記述は行いません。

コンポーネント構成図

各コンポーネントがどこでどのように使われるのかを示したのが次の2枚の図です。

1枚目はmdnsproxyを使用せず、 クライアントアプリケーションが名前変換用のAPIを使用して多言語ドメイン名の処理を行う場合や、 クライアント側のリゾルバで多言語ドメイン名の処理を行う場合の構成図です。

mDNkit components #2

2枚目は多言語ドメイン名の処理をmdnsproxyを利用して行う場合の構成図です。

mDNkit components #1

図中、イタリック体の部分が本キットに含まれるコンポーネントです。

図の上半分はSJISなど、 ローカルエンコーディングが使用される世界で、 下半分はRACEなど多言語化されたDNSが使用するIDNエンコーディングが使用される世界です。 本キットが提供するコンポーネントはこれらの世界をつなぐためのものです。

このページを評価してください

このWebページは役に立ちましたか?
よろしければ回答の理由をご記入ください

それ以外にも、ページの改良点等がございましたら自由にご記入ください。

回答が必要な場合は、お問い合わせ先をご利用ください。

ロゴ:JPNIC

Copyright© 1996-2024 Japan Network Information Center. All Rights Reserved.