URI設計の場所セグメントでzeroconf名をサポートする最良の方法は何ですか?
RFC 3986 (Uniform Resource Identifier (URI): Generic Syntax) は zeroconf について言及しておらず、URI 構文は DNS 解決を超えて機能するように設計されていないのではないかと心配しています。
理想的な回答構文は次のようになります。
- 一般的な URI 構文に準拠する
- マルチバイト文字を含む zeroconf 名を処理する
以下にいくつかのオプションを示します。
dnssd://local/_printer._tcp/Fancy printer/
dnssd://Fancy printer._printer._tcp.local
これらの文字列は、i18n の問題に対処するため、URI ではなく IRI です。
入れ子になった URI は、後方互換性のある別のアプローチです。ネストされた URI は、zeroconf などの検出プロトコルで使用する場所を定義します。
「ネストされたユニフォーム リソース識別子」を参照してください。manuel urena と david larrabeiti
ただし、このアプローチが広く使用されているという証拠は見つかりません。
Universal Resource Identifier は、リソースを見つける一般的な方法です。国際化のために、IRI をチェックすることをお勧めします。これはほとんど同じですが、完全な Unicode 互換性を可能にします。Zeroconf について言及していない理由は、URI が一般化されたプロトコルであるためです。Zeroconf は URI を検出用のプロトコルの一部として使用する場合がありますが、URI はそのプロトコルで特定の実装を使用することはありません (そこには ftp:、https:、mailto:、skype: などはありません)。
Zeroconf は、ネットワークを自動的に構成し、利用可能なサービスを検出するためのプロトコルです。これは、アドレス選択 (IPv4/6 の一部)、名前解決 (mDNS)、およびサービス検出 (UPnP (Microsoft)、DNS-SD (Apple)) の 3 つの部分で構成されます。最新のオペレーティング システムは、これらすべてをすぐにサポートします。
UPnP を使用する場合、検出は URI、iirc に基づいて行われます。返される情報は XML で提供されます。XML は、任意の Unicode エンコーディングにすることができます。デバイス ドライバーの製造元であれば、そこに任意の文字を配置できます。最後のフェーズはプレゼンテーションで、これは URL ですが、オプションです。
URI / URL は両方とも国際化された文字をサポートしますが、ドメイン名の部分ではなく、エスケープされるだけです。
-- アベル --