• 検索結果がありません。

多言語ドメイン名の実装 mdnkit 石曽根信 ( 株 ) SRA 2001/12/04 日本語ドメイン名解説 / mdnkit 1 mdnkit 多言語ドメイン名を扱うためのツールキット 正規化 エンコード変換等を提供するライブラリとコマンド 既存アプリケーシ

N/A
N/A
Protected

Academic year: 2021

シェア "多言語ドメイン名の実装 mdnkit 石曽根信 ( 株 ) SRA 2001/12/04 日本語ドメイン名解説 / mdnkit 1 mdnkit 多言語ドメイン名を扱うためのツールキット 正規化 エンコード変換等を提供するライブラリとコマンド 既存アプリケーシ"

Copied!
11
0
0

読み込み中.... (全文を見る)

全文

(1)

2001/12/04 日本語ドメイン名解説 / mDNkit 1

多言語ドメイン名の実装

多言語ドメイン名の実装

mDNkit

mDNkit

石曽根 信

(株) SRA

[email protected]

mDNkit

mDNkit

z

多言語ドメイン名を扱うためのツールキット

正規化、エンコード変換等を提供するライブラ

リとコマンド

既存アプリケーションを多言語ドメイン対応さ

せるためのツール群

z

フリーソフトウェア

(2)

2001/12/04 日本語ドメイン名解説 / mDNkit 3

mDNkit

mDNkit

の構成

の構成

標準 C ライブラリ

iconv

MDN ライブラリ (libmdn)

mdns-proxy

mdnconv

BIND-9

runmdn

パッチ

MDN

MDN

ライブラリ

ライブラリ

(

(

libmdn

libmdn

)

)

標準 C ライブラリ

iconv

MDN ライブラリ (libmdn)

mdns-proxy

mdnconv

BIND-9

runmdn

パッチ

(3)

2001/12/04 日本語ドメイン名解説 / mDNkit 5

MDN

MDN

ライブラリ

ライブラリ

(

(

libmdn

libmdn

)

)

z

多言語ドメイン名処理の基本機能を提供

するライブラリ

エンコード変換

正規化 (NAMEPREP)

ローカライズ機能

z

現在有力な標準化提案である

IDNA/NAMEPREP/ACE に従い、アプリケー

ションが利用できる API を提供

標準化提案への対応

標準化提案への対応

z

正規化 (NAMEPREP)

国際化ドメイン名を正規化する

z

エンコーディング (ACE)

正規化した名前をエンコーディング変換し、

ASCII文字から構成される文字列に変換する

z

アーキテクチャ (IDNA)

以上の処理を

アプリケーションの中

で実施す

(4)

2001/12/04 日本語ドメイン名解説 / mDNkit 7

IDNA/NAMEPREP/ACE

IDNA/NAMEPREP/ACE

ユーザ

DNSサーバ

アプリケーション

ライブラリ (名前解決等)

正規化

エンコーディング変換

IDNA

NAMEPREP

ACE

アプリケーションでの処理

アプリケーションでの処理

例: 日本語ドメイン名の名前解決

1.

ユーザが入力したドメイン名を受け取る

2.

ドメイン名を正規化する

3.

さらに ACE エンコーディングに変換する

4.

変換したドメイン名を名前解決用関数に渡し

て IPアドレスを検索する

z

MDNライブラリでは2.と3.の処理を行うシ

ンプルなAPIを提供

(5)

2001/12/04 日本語ドメイン名解説 / mDNkit 9

API

API

z

シンプル

初期化、エンコード、デコードの3つ

z

IDNA/NAMEPREP/ACE に準拠

z

パラメータは設定ファイルから読み込み

アプリケーションで指定する必要なし

z

処理の一部をスキップすることができる

アプリケーションにとって不要な処理を省略す

ることが可能

API

API

z

mdn_nameinit(void)

– 初期化 (省略可能) z

mdn_encodename(int actions,

const char *name,

char *to, size_t tolen)

– エンコード (DNS に渡す名前に変換)

z

mdn_decodename(int actions,

const char *name,

char *to, size_t tolen)

(6)

2001/12/04 日本語ドメイン名解説 / mDNkit 11

処理プロセス

処理プロセス

ローカルエンコーディングのドメイン名

ローカル→ UTF 変換

ローカルマッピング

NAMEPREP

UTF→ACE 変換

UTF→ローカル変換

ACE→UTF 変換

ACE に変換されたドメイン名

エ ン コ ー ド デ コ ー ド

NAMEPREP検査

アプリケーションの書き方

アプリケーションの書き方

ソース先頭で

<mdn/api.h>

をインクルー

(アプリケーションの初期化時に

mdn_initname()

で初期化)

名前解決の関数を呼ぶ前に

mdn_encodename()

でエンコード

名前解決関数から返ってきた名前を

mdn_decodename()

でデコード

(7)

2001/12/04 日本語ドメイン名解説 / mDNkit 13

サンプルプログラム

サンプルプログラム

#include <mdn/api.h> … mdn_result_t result; char acename[NAMESIZE]; char localname[NAMESIZE]; struct hostent *hp; … result = mdn_encodename(MDN_ENCODE_APP, input, acename, sizeof(acename)); if (result != mdn_success) { /* error handling */ exit(1); }

サンプルプログラム

サンプルプログラム

(

(

)

)

hp = gethostbyname(acename); if (hp == NULL) { /* error handling */ exit(1); } result = mdn_decodename(MDN_DECODE_APP, hp->h_name, localname, sizeof(localname)); if (result != mdn_success) { /* error handling */ exit(1); } …

(8)

2001/12/04 日本語ドメイン名解説 / mDNkit 15

Perl

Perl

バインディング

バインディング

z

MDNライブラリの機能を Perl 言語から呼

び出すためのモジュール

z

C言語APIとほぼ同等の機能を提供

サンプルスクリプト

サンプルスクリプト

Use MDN::API; Use IO::Socket::INET; my $local_name = ‘日本語.ドメイン名.jp’; # 正規化とエンコーディング変換を行う my $idn_name = MDN::API->encode_name($local_name); # ソケットを作成して接続する my $sock = IO::Socket::INET->new( Proto => ‘tcp’, PeerAddr => $idn_name, PeerAddr => ‘http’);

(9)

2001/12/04 日本語ドメイン名解説 / mDNkit 17

mDNkit

mDNkit

のその他のコンポーネント

のその他のコンポーネント

標準 C ライブラリ

iconv

MDN ライブラリ (libmdn)

mdns-proxy

mdnconv

BIND-9

runmdn

パッチ

mDNkit

mDNkit

のその他のコンポーネント

のその他のコンポーネント

z

正規化・エンコーディング変換フィルタ

mdnconv

z

BIND-9 の dig コマンド等を多言語ドメイン

対応にする

BIND-9 パッチ

z

既存アプリケーションを多言語ドメイン対応

にする

runmdn

(10)

2001/12/04 日本語ドメイン名解説 / mDNkit 19

mdnconv

mdnconv

z

エンコーディング変換と正規化を行うフィル

mdnconv

ローカルエンコー

ディングで書かれ

たゾーンファイル

ACE に変換

されたゾーン

ファイル

DNS

サーバ

エンコード変換 正規化(NAMEPREP)

BIND

BIND

-

-

9

9

パッチ

パッチ

z

BIND-9 付属の dig, host, nslookup を多

言語ドメイン名対応にするためのパッチ

DNS

サーバ

dig

host

nslookup

ユーザ

エンコード変換 正規化(NAMEPREP)

ローカルエンコーディン

ACE に変換された

(11)

2001/12/04 日本語ドメイン名解説 / mDNkit 21

runmdn

runmdn

z

既存の Unix アプリケーションを変更せず

に多言語ドメインの名前解決を可能にする

z

名前解決用関数を動的に入れ替え

共有ライブラリをプリロードして、

gethostbyname

等の関数をオーバライド

z

Windows 用に mDN Wrapper というものも

存在

WINSOCK DLL を入れ替える

手方法と注意

手方法と注意

z

ソースの入手先

http://www.nic.ad.jp/jp/research/idn/

最新版はバージョン 2.1 (もうすぐ 2.2?)

z

iconv が必要

文字コード変換のためのAPI

ローカルエンコーディング (EUC-JP等) のサポー

トのために内部的に使用

システムに備わっていなければ入手しておく

必要がある

参照

関連したドキュメント

地蔵の名字、という名称は、明治以前の文献に存在する'が、学術用語と

日本の生活習慣・伝統文化に触れ,日本語の理解を深める

ても情報活用の実践力を育てていくことが求められているのである︒

「父なき世界」あるいは「父なき社会」という概念を最初に提唱したのはウィーン出身 の精神分析学者ポール・フェダーン( Paul Federn,

LLVM から Haskell への変換は、各 LLVM 命令をそれと 同等な処理を行う Haskell のプログラムに変換することに より、実現される。

日本語で書かれた解説がほとんどないので , 専門用 語の訳出を独自に試みた ( たとえば variety を「多様クラス」と訳したり , subdirect

その結果、 「ことばの力」の付く場とは、実は外(日本語教室外)の世界なのではないだろ

 さて,日本語として定着しつつある「ポスト真実」の原語は,英語の 'post- truth' である。この語が英語で市民権を得ることになったのは,2016年