Bonjour
出典: フリー百科事典『ウィキペディア(Wikipedia)』
Bonjour(ボンジュール)は、米Apple社が開発したプロトコル。主にLANにおいて、ゼロ・コンフィギュレーションによるネットワークの運用を可能とする。Mac OS X 10.2よりOS標準の機能として搭載され、当時はRendezvous(ランデブー)と呼ばれたが、Mac OS X 10.4からBonjourという名前になった。
目次 |
[編集] 概要
Bonjourは元はIETFの中で検討されていた「Zeroconf」という技術がベースになっている。米Apple社はこれを独自に発展させ、仕様を公開することにより、現在では「Zero Configuration Networking」としてIETFにより標準化されている。
Appleには元々、ゼロ・コンフィギュレーション技術としてAppleTalkというプロトコルがあった。これは何らかの機器をLANに接続すると、アドレスと名前がその機器に自動的に割り振られ、ユーザは何の設定も行うことなく(ゼロ・コンフィギュレーション)その機器へのアクセスが可能になるというものである。配線さえすればすぐにネットワークプリンタなどが使用可能になるというメリットはあったが、反面、LANに接続されている機器が常にネットワークに新しく接続された機器がないかどうかを探索し続けるため、ネットワークに負荷がかかりがちになるという欠点もあった。またLANの主流がTCP/IPをベースとしたイントラネットに移行するに伴い、LAN内におけるプロトコルの混在も問題となった。AppleではAppleTalkをIPベースのネットワーク上で用いるためのAppleTalkIPも開発したが、やはりネットワークにかかる負荷は依然として問題だった。
そこでAppleは、AppleTalkに代わるゼロ・コンフィギュレーション技術としてBonjourを開発する。BonjourはAppleTalkと同様の使い勝手を持ちながら、AppleTalkより遥かに低い負荷しかネットワークに要求せず、またAppleTalkを置き換えるものとされた。Bonjourはゼロ・コンフィギュレーション技術であり、「何の設定も行わず機器を使用可能にする」ことを目指している。この点でBonjourは、Sun MicrosystemsのJiniやMicrosoftのUPnPと似ている。
[編集] 機能
Bonjourの代表的な機能はIPアドレスとホスト名の自動割り当て、サービスの自動探索である。ネットワークに接続された機器はDHCPサーバのようなIPアドレスを割り当てるサーバも、DNSのようなネームサーバも、ディレクトリサーバも必要としない。機器がBonjourネットワークへ接続するとIPアドレスは自動的に割り当てられ、ホスト名は各機器にあらかじめ設定されたものが利用され、提供可能なサービスはホスト名と共に通知される。
IPアドレスの割り当てにはAutoIPの技術が使われる。IPv4のネットワークへ接続された場合、Bonjour対応機器は169.254/16の中から空いているアドレスを探索し、それを自らのIPアドレスとする。IPv6の場合、LANインターフェースに自動で割り当てられるリンクローカルアドレスがあるので、それを利用する。
ホスト名は基本的に、各機器が名乗るホスト名を利用する。名前のルールは「マシン名+サービス名+プロトコル名+ドメイン名」である。マシン名はユーザがその機器に対して設定したものを使い、サービス名にはその機器が提供するサービスが、プロトコル名にはTCP/IPの場合「._tcp」が、ドメイン名には「.local」が入る。
ホスト名の探索にはマルチキャストDNSを用いる。ホスト名を探索する際にはネットワークに接続された機器全てに対してホスト名を問い合わせ、一致したホストに対して接続を行う。ただしそのまま実装したのではネットワークにかかる負荷が大きくなってしまうため、あらかじめホスト名をキャッシュするなど負荷を減らす工夫が行われている。
提供可能なサービスの一覧は、ホスト名の問い合わせにマルチキャストDNSが用いられていることを利用し、DNS resource recordsに入れられて通知される。なおこの「サービス」には、プリント機能などハードウェアが提供するサービスのみに留まらず、音楽や画像の配信、インスタントメッセージングなど、ソフトウェアが提供するサービスも含まれる。
Bonjourの特色は、デバイスではなくサービスを中心に据えていることである。特定のデバイスに対し提供しているサービスを問い合わせるのではなく、目的とするサービスを提供しているデバイスを探索するのである。例えばあるサーバはWebサーバかもしれないが、同時にFTPサービスを提供しているかもしれない。ひとつのデバイスが複数のサービスを提供していることは珍しくないし、負荷の分散を目的にサービスを提供するサーバを別のデバイスに移動させることもある。重要なのはデバイスではなくサービスであるという考え方である。
まずホスト名を解決しIPアドレスを用いて特定デバイスにサービスを問い合わせるのではなく、いきなり目的とするサービスを提供しているデバイスを探す。ネットワークに接続されたデバイス全てに対しマルチキャストで「FTPサービスを提供しているサーバはどれ?」と訊ねれば、該当するデバイスは手を挙げるので、それからホスト名を解決してアクセスを試みるのである。
[編集] 負荷を減らす工夫
AppleTalk最大の欠点は、何よりもまずネットワークにかかる負荷であった。Bonjourではその負荷を減らすべく、様々な工夫がこらされている。
Bonjour対応の機器が新たにネットワークへ接続されると、その機器はまず自らにIPアドレスを割り当てた後、自らのアドレスとホスト名、さらに提供しているサービスの種類をネットワークへマルチキャストする。他の機器ではその情報をキャッシュし、次回のホスト名やサービスの問い合わせの際には、まずそのキャッシュされたデータを参照するようになる。
ただしそのままではネットワークから機器が取り外された場合に対応できず、動的に再構成されるネットワークには対応できなくなってしまうので、データは常に更新され続ける必要がある。このため、ネットワークに接続された機器は一定時間毎にマルチキャストで提供可能なサービスの一覧をネットワークの全デバイスに要求する。このマルチキャストは回を重ねる毎に間隔が長くなるように設定されており、最初のマルチキャストはネットワークに接続された時に、2回目はその1秒後に、3回目はさらにその2秒後、4回目は4秒後、5回目は8秒後、6回目は16秒後と、時間は指数関数的に長くなっていく。この間隔の最大値は4096秒で固定されており、それ以上には大きくならない。
このように間隔が段々と長くなっていく理由は、ネットワークへ接続される機器は短時間で取り外されるものと長時間接続されるものの二種類に大別することができ、その中間というものがほとんど存在しないからである。例えばネットワークプリンタなども使用する時だけ電源を入れるか、あるいは朝から晩まで接続しっ放しかの二種類であり、数分毎に接続切断を繰り返すケースはまずない。
こうしてマルチキャストされたデータは各ホストにキャッシュされる。各機器はネットワークに対して問い合わせを行う前にまずこのキャッシュされたデータを参照するようになっている。キャッシュに目的のデータがなかった場合はネットワークに対してマルチキャストで問い合わせを行うが、該当するアドレスやホスト名、サービスを提供している機器はその返答をやはりマルチキャストで行う。該当しない機器はもちろん沈黙を守るが、マルチキャストされたデータはもちろん受信しており、同様にそのデータをキャッシュに加えてデータベースを更新する。
あるホストがネットワークに対してサービスの一覧を要求した場合、問い合わせのパケットにはそのホストが「すでに知っているサービスの一覧」が含まれる。例えばネットワークにはすでに10のプリントサービスが存在し、問い合わせを行うホストがそのことを知っている場合、問い合わせのパケットにはその旨が記述される。リストに載っているプリントサービスは沈黙を守り、リストに載っていないプリントサービスのみが返答を行う仕組みである。
このようにBonjourは、データを可能な限りキャッシュし、ネットワークを探索する際にはまずそのキャッシュを参照することでネットワークへかかる負荷をギリギリまで減らしている。もちろんマルチキャストによる問い合わせが行われない場合に比較して負荷は高くなる傾向にあるものの、問題ないレベルに収まることがほとんどである。
[編集] 欠点と制限
Bonjourにはもちろん欠点や制限も存在する。まずBonjourは、基本的にLAN内でしか利用することができず、原則的にルータを越えることができない。ただしこれは、DHCPとダイナミックドメインネームシステム(DDNS)を用いることで解決可能であり、その二つを用意すればルータを越えた運用が可能になる。
またBonjourは、イベント制御の機能が弱い。例えばUPnPではきめ細かいイベント制御が可能になっているものの、Bonjourではこの部分にマルチキャストDNSやDDNSしか利用できないため、細かなコントロールを行うことができない。プリンタの制御についてはIPPやLPRを用いることが決まっているが、その他の機器についてはまだ仕様が策定されておらず、検討中となっている。
対応機器の少なさも悩みである。UPnPと比べ、Bonjourは対応している機器があまりに少ない。アップルはAirMac ExpressなどBonjourの機能を生かした製品をリリースしているものの、現在対応を表明しているメーカーはほとんどがプリンタメーカーであり、他の機器へも対応が拡大されるかどうかは今のところ不透明である。UPnPが基本的にハードウェアのみに用途が限られているのに対し、Bonjourはハードウェア・ソフトウェアを問わず利用することができる。Bonjour対応ソフトウェアとして最も普及しているのはアップルのiTunes(iTunes同士で音楽共有ができる)とSafari(Bonjourに対応したWebサーバを自動的に探索しリストアップする)であるが、アップル社以外のソフトウェアではCamino、シイラ (ウェブブラウザ)、RealPlayer程度であまり活用されているとはいいがたい現状である。
またUPnPも開発過程こそ非公開であるものの、仕様はロイヤリティフリーで公開されているので、Bonjourがオープンソースであることは現在のところあまり目立ったアドバンテージにはなっていない。
[編集] 関連項目
[編集] 外部リンク
アプリケーション |
---|
Automator | Backup | Chess | Dashboard | Dictionary | DVD プレーヤー | Finder | Front Row | Grapher | iCal | iChat | iSync | iTunes | Mail | Photo Booth | QuickTime Player | Safari | Sherlock | アドレスブック | 計算機 | スティッキーズ | スクリプトエディタ | テキストエディット | プレビュー |
ユーティリティ |
AirMac 管理ユーティリティ | Audio MIDI 設定 | Bluetooth ファイル交換 | BOMArchiveHelper | AppleScriptユーティリティ | Classic | ColorSync ユーティリティ | Crash Reporter | DigitalColor Meter | DiskImageMounter | Font Book | iPod ソフトウェアアップデート | Java Web Start アプリケーションマネージャ | Java アプリケーションキャッシュビューア | Java 環境設定 | Java プラグイン設定 | NetInfo マネージャ | ODBC アドミニストレータ | Universal Access | VoiceOver | X11 | アクティビティモニタ | 移行アシスタント | イメージキャプチャ | インストーラ | インターネット接続 | キーチェーンアクセス | グラブ | コンソール | システム環境設定 | システムプロファイラ | ソフトウェアアップデート | ターミナル | ディスクユーティリティ | ディレクトリアクセス | ネットワークユーティリティ | ファームウェア・アップデート | プリンタ設定ユーティリティ | フォルダアクション設定 | ヘルプビューア |
テクノロジーおよびインタフェース |
Apple Advanced Typography | AppleScript | Aqua | ATSUI | Audio Units | Bonjour | Boot Camp | Carbon | Cocoa | ColorSync | Core Animation | Core Audio | Core Data | Core Foundation | Core Image | Core Video | CUPS | Darwin | Dock | Exposé | FileVault | Inkwell | Keychain | Mach-O | OpenGL | plist | Quartz | QuickTime | Rosetta | Spaces | Spotlight | Time Machine | Uniform Type Identifier | Universal Binary | WebKit | Xgrid |
開発ツール |
カテゴリ: Mac OS X | アップルコンピュータ | コンピュータネットワーク | プログラミング