Extensible Messaging and Presence Protocol
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 Messenger、MSN Messenger(.NET Messenger Service)、Yahoo!メッセンジャー、IRC、ICQなどのネットワークへメッセージを送ることができる。ただしサービスを提供しているサーバによっては、日本語が通らないこともある。
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 3920とRFC 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月にGoogleはGoogle 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 3920とRFC 3921として公表されている。これらを実装するのにロイヤルティーは一切かからず、特定のベンダーに縛られることがない。
- 歴史:XMPPは1998年から利用されている。XMPP標準のクライアント、サーバ、コンポーネント、ライブラリの実装は数多くあり、サン・マイクロシステムズやGoogleなどの大きな企業に支えられている。
- セキュリティ:XMPPサーバは公共のXMPPネットワークから切り離してもよく(例えば、会社でのイントラネットなど)、強固なセキュリティ(SASLやTLSを使用)がXMPPのコアに組み込まれている。伝送路の暗号化を促進するために、2009年10月30日まではXMPP Standards Foundationはxmpp.netに中間認証局の設置も行っており、XMPPサーバの管理者にフリーのデジタル証明書を提供していた。
- 柔軟性:XMPPに加えてカスタムの機能を実装できる。相互運用性を保つために、一般的な拡張はXMPP Software Foundationにより管理されている。IM以上の機能を持つXMPPアプリケーションとして、ネットワークマネージメント、コンテンツ配信、グループウェア、ファイル共有、ゲーム、リモートシステムの監視などがある。
[編集] 短所
- プレゼンスデータのオーバーヘッド:一般にサーバ間通信の70パーセントがプレゼンスデータで[16]、そのうちの60パーセント近くが冗長であるので[17]、現在XMPPはプレゼンスデータを複数のレシピエントへ転送する際に大きなオーバーヘッドがある。この問題を緩和する新しいプロトコルが考えられている[要出典]。
- インバンドによるバイナリデータの転送は非効率:XMPPは単一の長いXMLドキュメントとして符号化されるので、バイナリデータはインバンドで転送する前にまずBase64でエンコードしなければならない。このため巨大なバイナリデータ(例えば、ファイル転送など)はアウトオブバンドで転送するのがもっとも良く、インバンドによる通信は制御用に用いる。最も良い例はXMPPの拡張プロトコルであるJingle(XEP-0166)である。
[編集] サーバの分散とアドレッシング
XMPPネットワークはクライアントサーバアーキテクチャを採用している(クライアントは直接通信しない)が、中央サーバを持たない。権威ある中央サーバが存在しないように設計されており、これはAOL Instant MessengerやWindows 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.comがromeo@montague.netへチャットをしたいとする。JulietとRomeoはそれぞれcapulet.comとmontague.netにアカウントを持っている。Julietがタイプしてメッセージを送ると、一連のイベントが以下のように続く。
- Julietのクライアントがメッセージをcapulet.comのサーバへ送る。
- capulet.comでmontague.netがブロックされていると、メッセージは破棄される。
- capulet.comのサーバはmontague.netへ向けてコネクションを張る。
- montague.netでcapulet.comがブロックされていると、メッセージは破棄される。
- このときRomeoが接続していなかったら、メッセージは後で送るために保存される。
- montague.netのサーバはRomeoにメッセージを送る。
| Juliet | → | capulet.com | → | montague.net | → | Romeo |
[編集] 他のプロトコルへの接続
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)
[編集] 脚注
- ^ Jabber Inc. - About Us
- ^ Open Real Time Messaging System
- ^ "XMPP rises to face SIMPLE standard", Infoworld magazine, April 17, 2003 XMPP rises to face SIMPLE standard
- ^ "XMPP vs SIMPLE: The race for messaging standards", Infoworld magazine, May 23, 2003 Infoworld.com
- ^ Chatting Up the Chef Linux Journal March 1, 2003 by Marcel Gagné
- ^ “Jabber.org - XMPP Server Migration” (2009年8月12日). 2009年12月14日閲覧。
- ^ Burd, Gary (2006年1月17日). “XMPP Federation”. 2007年11月30日閲覧。
- ^ “Cisco Announces Definitive Agreement to Acquire Jabber”. 2010年1月2日閲覧。
- ^ “Facebook Chat Now Available Everywhere”. 2010年2月11日閲覧。
- ^ “Integrating with Facebook Chat”. 2010年2月21日閲覧。
- ^ Question FAQ #270
- ^ Ovi Contacts
- ^ "Lotus Sametime 7.5 Interoperates with AIM, Google Talk", eWeek, December 6, 2006 Eweek.com
- ^ "Lotus ships gateway to integrate IM with AOL, Yahoo, Google", Network World, December 6, 2006 Networkworld.com
- ^ "Unified Communications: Uniting Communication Across Different Networks", Microsoft Press Release, October 1, 2009 Microsoft.com
- ^ [Standards-JIG] Distribution of stanza types
- ^ [Standards-JIG] proto-JEP: Smart Presence Distribution
[編集] 外部リンク
- XMPP Standards Foundation
- XMPP Extensions
- XMPP Software: Clients
- XMPP Software: Servers
- Public XMPP Services
- Jabber User Guide - End user introduction to XMPP (archive)
- IETF Publishes XMPP RFCs
- XMPP Case Studies
- Jabber.org (Free XMPP server of the XSF
- Jabber.JP
- XMPP.JP
|
||||||||||||||||||||||