Extensible Messaging and Presence Protocol

出典: フリー百科事典『ウィキペディア(Wikipedia)』
Jabberから転送)
移動: 案内, 検索

Extensible Messaging and Presence Protocol (XMPP) (旧称 Jabber[1])は、オープンソースインスタントメッセンジャーのプロトコルおよび、クライアント、サーバの総称である。

TCP/IP群
アプリケーション層

BGP / DHCP / DNS / FTP / HTTP / IMAP / IRC / LDAP / MGCP / NNTP / NTP / POP / RIP / RPC / RTP / SIP / SMTP / SNMP / SSH / Telnet / TFTP / TLS/SSL / XMPP

カテゴリ
トランスポート層

TCP / UDP / DCCP / SCTP / RSVP / ECN

カテゴリ
ネットワーク層

IP (IPv4, IPv6) / ICMP / ICMPv6 / IGMP / IPsec

カテゴリ
リンク層

ARP/InARP / NDP / OSPF / トンネリング (L2TP) / PPP / MAC (イーサネット, IEEE 802.11, DSL, ISDN, FDDI)

カテゴリ

目次

[編集] 特徴

JabberはJabber社が開発したXMLベースのプロトコルであるXMPPを採用している。他のメジャーなインスタントメッセンジャーはその仕様もプロトコルも非公開となっているのが普通だが、Jabberはサーバもクライアントもオープンソースであり、その仕様は全て公開されている(オープン標準)。そのため、たとえばメールサーバと同じように、ドメインサーバさえあれば自分専用のXMPPサーバを立ち上げることができる。この点でほかのインスタントメッセージと異なる。

他のインスタントメッセージングサービスゲートウェイとなる機能も持つ。この機能を利用し、JabberクライアントからAOL Instant MessengerMSN Messenger(.NET Messenger Service)、Yahoo!メッセンジャーIRCICQなどのネットワークへメッセージを送ることができる。ただしサービスを提供しているサーバによっては、日本語が通らないこともある。

Google Talkは、Jabber を核にしたものである。

[編集] 歴史

ジェリミー・ミラー英語版1998年にJabberテクノロジーに取り組み始め、1999年1月4日にjabberd英語版の最初のバージョンをリリースした[2]。初期のJabberコミュニティはオープンソースソフトウェアに焦点を当てており、主にjabberdの開発をしていた(2000年5月にバージョン1.0、2000年10月にバージョン1.2、2001年2月にバージョン1.4を発表)が、一番の成果はXMPPプロトコルを作ったことである。

1999年から2000年に開発された初期のJabberプロトコルはXMPPの基礎となり、XMPPはRFC 3920RFC 3921として公表されている。(IETFのXMPP Working Groupによる規格化の際に主に変わった部分は、伝送路の暗号化用にTLSの追加と認証用にSASLが追加されたところである。)XMPPはよくSIMPLE英語版の競合相手とみなされる。SIMPLEはSession Initiation Protocol (SIP)プロトコルを基礎とする、インスタントメッセージングとプレゼンス通知の標準プロトコルである[3][4]

XMPPをベースにした最初のIMサービスはJabber.orgであり、1999年以降連続稼動していてXMPPのアカウントをフリーで提供している[5]。1999年から2006年2月まではサービスにjabberdを使用していたが、それ以降はejabberd英語版に移行した。(どちらもフリーソフトウェアのサーバアプリケーションである。)2010年1月にはIsode Ltd.によるプロプライエタリのM-Linkへ移行する予定である[6]

2005年8月にGoogleGoogle Talkを発表した。これはVoIPとIMシステムをあわせ持ち、インスタントメッセージングの機能にXMPPを使用していて、音声とファイル転送のシグナリングプロトコルのベースにXMPPを使用している。(最初のリリースにはサーバ間通信は含まれていなかったが、2006年1月17日にこの機能は有効になった。)[7]

2008年9月にシスコシステムズはJabber, Inc.と商用プロダクトであるJabber XCPの開発者を買収した[8]

2010年2月、ソーシャルネットワーキングサイトのFacebookはXMPPを通してチャット機能をサードパーティのアプリに開放した[9]。Facebookの開発者のサイトでは、次のように注意を呼びかけている。Facebookのチャットは内部で実際にXMPPサーバを稼働させているわけではなく、単にクライアントにXMPPのインターフェースを提供しているだけである。したがって、ユーザリストの編集など、サーバサイドの機能はXMPP経由ではできないことがある[10]

Google Talkだけでなく、多くの公共IMサービスがXMPPを採用しており、Live JournalのLJ Talk[11]やNokiaのOvi[12]などがそうである。さらに、企業のIMソフトウェアプロダクトには、ネイティヴではXMPPを使用できなくてもXMPPへのゲートウェイを含むものがある。例えば、IBM Lotus Sametime[13][14]Microsoft Office Communications Server (OCS)[15]などである。

[編集] 長所

  • 中央サーバを持たない:XMPPネットワークの構造は電子メールに似ており、誰でも自分のXMPPサーバを立てることができるので、中央サーバが存在しない。
  • オープン標準:XMPPはインスタントメッセージングサービスとプレゼンス技術としてXMPPという名前でIETFにより承認された。XMPPの仕様はRFC 3920RFC 3921として公表されている。これらを実装するのにロイヤルティーは一切かからず、特定のベンダーに縛られることがない。
  • 歴史:XMPPは1998年から利用されている。XMPP標準のクライアント、サーバ、コンポーネント、ライブラリの実装は数多くあり、サン・マイクロシステムズやGoogleなどの大きな企業に支えられている。
  • セキュリティ:XMPPサーバは公共のXMPPネットワークから切り離してもよく(例えば、会社でのイントラネットなど)、強固なセキュリティ(SASLやTLSを使用)がXMPPのコアに組み込まれている。伝送路の暗号化を促進するために、2009年10月30日まではXMPP Standards Foundationxmpp.netに中間認証局の設置も行っており、XMPPサーバの管理者にフリーのデジタル証明書を提供していた。
  • 柔軟性:XMPPに加えてカスタムの機能を実装できる。相互運用性を保つために、一般的な拡張はXMPP Software Foundationにより管理されている。IM以上の機能を持つXMPPアプリケーションとして、ネットワークマネージメント、コンテンツ配信、グループウェア、ファイル共有、ゲーム、リモートシステムの監視などがある。

[編集] 短所

  • プレゼンスデータのオーバーヘッド:一般にサーバ間通信の70パーセントがプレゼンスデータで[16]、そのうちの60パーセント近くが冗長であるので[17]、現在XMPPはプレゼンスデータを複数のレシピエントへ転送する際に大きなオーバーヘッドがある。この問題を緩和する新しいプロトコルが考えられている[要出典]
  • インバンドによるバイナリデータの転送は非効率:XMPPは単一の長いXMLドキュメントとして符号化されるので、バイナリデータはインバンドで転送する前にまずBase64でエンコードしなければならない。このため巨大なバイナリデータ(例えば、ファイル転送など)はアウトオブバンドで転送するのがもっとも良く、インバンドによる通信は制御用に用いる。最も良い例はXMPPの拡張プロトコルであるJingle英語版XEP-0166)である。

[編集] サーバの分散とアドレッシング

XMPPネットワークはクライアントサーバアーキテクチャを採用している(クライアントは直接通信しない)が、中央サーバを持たない。権威ある中央サーバが存在しないように設計されており、これはAOL Instant MessengerWindows Live メッセンジャーとは対照的である。jabber.orgで動作している公共のXMPPサーバが存在しており、ここに多くのユーザが登録されているので、この点などでよく混乱されるが、誰でも自分のドメインで自分のXMPPサーバを立てることができる。XMPPの標準のTCPポートは5222である。

ネットワーク上のすべてのユーザはユニークなJabber ID(よく省略されJIDと呼ばれる)を持つ。IDのリストを持つ中央サーバを不要にするため、JIDはメールアドレスのような構造を持っている。ユーザ名と、ユーザの存在するサーバのあるドメイン名があり、アットマーク(@)で仕切られる。例えば、username@example.comのようになる。

ひとりのユーザは複数の場所からログインするかも知れないので、クライアントでは更に追加でストリングを指定する。例えば、home、work、mobileなど。このリソースで、ユーザのどのクライアントなのかを特定する。そしてこのリソースは、JIDのあとにスラッシュに続けてリソース名を指定することでJIDに含めることができる。リソースには優先度という数値を指定しても良い。例えば、あるユーザのモバイルアカウントの完全なJIDは、username@example.com/mobileである。単にusername@example.comに対して送られたメッセージはもっとも優先度の高いクライアントへ行くが、username@example.com/mobileに対して送られたものはモバイルクライアントのみへ行く。

[編集] メッセージ転送の仕組み

juliet@capulet.comromeo@montague.netへチャットをしたいとする。JulietとRomeoはそれぞれcapulet.comとmontague.netにアカウントを持っている。Julietがタイプしてメッセージを送ると、一連のイベントが以下のように続く。

  1. Julietのクライアントがメッセージをcapulet.comのサーバへ送る。
    • capulet.comでmontague.netがブロックされていると、メッセージは破棄される。
  2. capulet.comのサーバはmontague.netへ向けてコネクションを張る。
    • montague.netでcapulet.comがブロックされていると、メッセージは破棄される。
    • このときRomeoが接続していなかったら、メッセージは後で送るために保存される。
  3. montague.netのサーバはRomeoにメッセージを送る。
Juliet capulet.com montague.net Romeo

[編集] 他のプロトコルへの接続

AliceはXMPPネットワークを通してICQトランスポートへメッセージを送る。次にメッセージはICQネットワークを通じてBobへ送られる。

XMPPの他の便利な特徴はトランスポートである。ゲートウェイという名前でも知られていて、他のプロトコルを使うネットワークにアクセスすることが可能になる。インスタントメッセージングのプロトコルだけでなく、SMS電子メールなどのプロトコルでも可能である。マルチプロトコル対応のクライアントと違って、リモートコンピュータで動作する特別なゲートウェイサービスを通して通信することで、サーバレベルでアクセス出来るようにしている。ユーザは、これらのゲートウェイのひとつにネットワークのログインに必要な情報を提供して「登録」する。すると、そのユーザは、XMPPのユーザと同じようにそのネットワークのユーザと通信できる。つまり、XMPPを完全にサポートしたクライアントであれば、ゲートウェイが存在するどんなネットワークのアクセスにも使えるということである。クライアントに一切コードを追加する必要がなく、クライアントが直接インターネットに接続できる必要もない。こういった機能は、使っているプロトコルの利用規約に違反する可能性があるが、国によって何カ国かでは、そのような利用規約は法的拘束力を持たない。

[編集] 関連項目

  • RFC 3920 - Extensible Messaging and Presence Protocol (XMPP): Core
  • RFC 3921 - Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence
  • RFC 3922 - Mapping the Extensible Messaging and Presence Protocol (XMPP) to Common Presence and Instant Messaging (CPIM)
  • RFC 3923 - End-to-End Signing and Object Encryption for the Extensible Messaging and Presence Protocol (XMPP)

[編集] 脚注

  1. ^ Jabber Inc. - About Us
  2. ^ Open Real Time Messaging System
  3. ^ "XMPP rises to face SIMPLE standard", Infoworld magazine, April 17, 2003 XMPP rises to face SIMPLE standard
  4. ^ "XMPP vs SIMPLE: The race for messaging standards", Infoworld magazine, May 23, 2003 Infoworld.com
  5. ^ Chatting Up the Chef Linux Journal March 1, 2003 by Marcel Gagné
  6. ^ Jabber.org - XMPP Server Migration” (2009年8月12日). 2009年12月14日閲覧。
  7. ^ Burd, Gary (2006年1月17日). “XMPP Federation”. 2007年11月30日閲覧。
  8. ^ Cisco Announces Definitive Agreement to Acquire Jabber”. 2010年1月2日閲覧。
  9. ^ Facebook Chat Now Available Everywhere”. 2010年2月11日閲覧。
  10. ^ Integrating with Facebook Chat”. 2010年2月21日閲覧。
  11. ^ Question FAQ #270
  12. ^ Ovi Contacts
  13. ^ "Lotus Sametime 7.5 Interoperates with AIM, Google Talk", eWeek, December 6, 2006 Eweek.com
  14. ^ "Lotus ships gateway to integrate IM with AOL, Yahoo, Google", Network World, December 6, 2006 Networkworld.com
  15. ^ "Unified Communications: Uniting Communication Across Different Networks", Microsoft Press Release, October 1, 2009 Microsoft.com
  16. ^ [Standards-JIG] Distribution of stanza types
  17. ^ [Standards-JIG] proto-JEP: Smart Presence Distribution

[編集] 外部リンク

個人用ツール
名前空間

変種
操作
案内
ヘルプ
ツールボックス
他の言語