Zeroconf
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/10/03 22:10 UTC 版)
名前解決
2000年、Bill Manning と Bill Woodcock が Multicast Domain Name Service[2] を発表し、そこからAppleとマイクロソフトの実装が生まれた。両社の実装はよく似ている。AppleのマルチキャストDNS (mDNS) はIETFの RFC 6762 として、マイクロソフトのLLMNR(Link-Local Multicast Name Resolution)は RFC 4795 として公開されている。
この2つのプロトコルは名前解決の方法に若干の差異がある。mDNSでは、ネットワークデバイスが local 名前空間にあるドメイン名を選ぶことができ、それを特別なマルチキャストIPアドレスを使って告知する。これは local ドメインに特別な意味論を導入するため[3]、IETFの何人かのメンバーが問題視している[4]。現在のLLMNRのドラフトでは任意のドメイン名を選択できるが、IETFの一部メンバーはセキュリティ上の危険を指摘している[5]。mDNSは後述するように DNS-SD と互換性があるが、LLMNR はそうではない[6]。
サービス発見
Appleのプロトコル: マルチキャストDNS/DNS-SD
マルチキャストDNS (mDNS) はユニキャストの Domain Name System と似たAPIを使うプロトコルだが、マルチキャストプロトコル上に実装されている。LAN上の各コンピュータはそれぞれDNSのリソースレコード(例えば、A、MX、SRVなど)のリストを持ち、mDNSのマルチキャストグループに参加している。あるmDNSクライアントがPCの名前からそのIPアドレスを知りたい場合、mDNSクライアントは既定のマルチキャストアドレスに要求を送信する。すると対応するAレコードを持つPCがそのIPアドレスを含めて応答する。IPv4でのmDNSマルチキャストアドレスは 224.0.0.251 で、IPv6のリンクローカル・アドレッシングでは ff02::fb である。
Appleの方式のもう半分は DNS-SD (DNS based Service Discovery) で、Domain Name Systemの上に構築されている。Appleの製品、多くのネットワークプリンター、様々なサードパーティ製品や各種OS向けのアプリケーションで使われている。Appleの方式ではDNSメッセージを使用しているが、対抗しているマイクロソフトの方式であるSSDPではHTTPメッセージを使用している。DNSのSRVレコード、TXTレコード、PTRレコードを使いサービスインタフェース名を告知する。サービスを提供しているホストは利用可能なサービスの詳細(インスタンス、サービスの種類、ドメイン名、オプションの設定パラメータなど)を告知(出版)する。サービスの種類は先着順で簡単に登録されている。DNS-SD.org がそのレジストリを保守・公表している。
SafariブラウザやiChatインスタントメッセンジャーなどmacOSの多くのネットワーククライアントは手近のサーバを特定するのにDNS-SDを使っている。Windows上では、一部のインスタントメッセンジャーやVoIPでDNS-SDをサポートしている。Unix系やLinuxディストリビューションにもDNS-SD機能を備えたものがある。
mDNS/DNS-SD を開発したのはAppleの従業員 Stuart Cheshire で、同社がAppleTalkからIPに方針転換したころである。
マイクロソフトのプロトコル: UPnP SSDP
Simple Service Discovery Protocol (SSDP) はUPnPプロトコルの一種で Windows XP やいくつかのネットワーク機器ブランドで採用されている。SSDPはHTTPの通知 (NOTIFY) 機能を使い、サービス種別のURIと Unique Service Name (USN) を通知する。サービス種別は Universal Plug and Play 運営委員会が管理している。
SSDPはSOHO向けファイアウォール機器で多くサポートされており、ホストコンピュータがアプリケーションのためにファイアウォールに穴をあける。またホームシアターシステムとホストコンピュータ間のメディア交換にもSSDPが使われている。
サービス・ロケーション・プロトコル
サービス・ロケーション・プロトコル (Service Location Protocol、SLP) は、サービス発見用プロトコルとして唯一 IETF のインターネット標準となったもので、ヒューレット・パッカードのネットワークプリンター、ノベルの製品、サン・マイクロシステムズの製品などで採用されている。SLP の仕様は RFC 2608 と RFC 3224 にあり、利用可能な実装としては Solaris に搭載されているもの、Linux/Windows/Java API用のOpenSLP[7]等がある。かつてはMac OS 9やMac OS Xにも搭載されていた。
標準化
2005年3月、Apple、サン・マイクロシステムズ、マイクロソフトなどからの参加者を含むIETFのZeroconfワーキンググループはネットワーク上のアイテムにアドレスを割り当てる標準として RFC 3927 を公表した[8]。
LLMNR は公式採用に向けてIETFのDNSEXTワーキンググループに提出されたが合意には至らず、単なる情報RFCとして RFC 4795 が公表されるにとどまった[9]。LLMNRがインターネット標準として採用されず失敗に終わった後、IETFはLLMNRより広く採用されている mDNS/DNS-SD の仕様を情報RFCとして公表するようAppleに依頼した。現在それらは RFC 6762 として公表されている。
サービス発見のためのSLPの仕様は RFC 2608 としてIETFのSVRLOCワーキンググループが公表した[10]。
- ^ 自動 TCP/IP アドレス指定に DHCP サーバーを使用する方法
- ^ Multicast Domain Name Service
- ^ Re: Last Call: 'Linklocal Multicast Name Resolution (LLMNR)' to Proposed Standard 2005/08/25
- ^ Re: Summary of the LLMNR Last Call 2005/09/20
- ^ Summary of the LLMNR Last Call 2005/09/18
- ^ Re: Last Call: 'Linklocal Multicast Name Resolution (LLMNR)' to Proposed Standard 2005/08/25
- ^ “About OpenSLP”. openslp.org. 2015年12月17日閲覧。
- ^ Zero Configuration Networking (zeroconf) Charter
- ^ DNS Extensions (dnsext) Charter
- ^ Service Location Protocol (svrloc) Charter
- ^ Name (MDNS) Poisoning Attacks Inside the LAN 2008/01/23
- ^ MacDevCenter.com - A Rendezvous with Java 2004/08/31
- ^ Bonjour Print Services for Windows Apple Inc.
- ^ nss-mdns 0.10
- ^ ソースコード (AVH-IPv4LL.c)
- ^ [udhcp] Fwd: Zeroconf in udhcpc
- ^ AIR Wiki: Link-Local ARP Measurements
- Zeroconfのページへのリンク