Extensible Messaging and Presence Protocol

Extensible Messaging and Presence Protocol (XMPP) について



Extensible Messaging and Presence Protocol (XMPP) は、かつて Jabber として知られていたオープンソースのインスタントメッセージングプロトコルです。これは単なるプロトコルに留まらず、クライアントとサーバーの両方を指す総称として使われます。XMPP の最大の特徴は、そのオープンな性質にあります。他の多くのインスタントメッセージングサービスが仕様を公開しないのに対し、XMPP はサーバーもクライアントもオープンソースで開発されており、その仕様はすべて公開されています。

特徴



オープン標準: XMPP は XML ベースのプロトコルで、誰でも自由に利用・実装できます。これにより、特定のベンダーに依存することなく、独自の XMPP サーバーを構築することができます。これはメールサーバーを立てるのと同様で、ドメイン名サーバーがあれば誰でも自分専用の XMPP サーバーを運用できます。
ゲートウェイ機能: XMPP は他のインスタントメッセージングサービスへのゲートウェイとしても機能します。これにより、XMPP クライアントから AOL Instant Messenger、MSN Messenger、Yahoo!メッセンジャー、IRC、ICQ などのネットワークにメッセージを送ることができます。ただし、サービスによっては日本語が正しく表示されない場合があります。
Google Talk の基盤: Google Talk は XMPP を核として構築されています。これは XMPP の実用性と影響力を示す良い例です。

歴史



XMPP の歴史は、ジェリミー・ミラーが 1998 年に Jabber テクノロジーの開発を始めたことに遡ります。1999 年 1 月 4 日には jabberd の最初のバージョンがリリースされました。初期の Jabber コミュニティはオープンソースソフトウェアに重点を置き、主に jabberd の開発に注力していました。しかし、最大の成果は XMPP プロトコルを開発したことです。

1999 年から 2000 年にかけて開発された初期の Jabber プロトコルは、XMPP の基礎となりました。XMPP は RFC 3920 と RFC 3921 として正式に公表されています。IETF の XMPP Working Group によって規格化された際、伝送路の暗号化に TLS が、認証に SASL が追加されました。XMPP は SIMPLE(インスタントメッセージングプロトコル)の競合相手とみなされることもありますが、SIMPLE は Session Initiation Protocol (SIP) プロトコルを基盤としています。

XMPP をベースにした最初の IM サービスは Jabber.org で、1999 年から連続稼働しており、XMPP のアカウントを無料で提供しています。当初は jabberd を使用していましたが、後に ejabberd に移行し、さらにプロプライエタリな M-Link に移行する予定です。

2005 年 8 月、GoogleGoogle Talk を発表しました。これは VoIP と IM システムを組み合わせたもので、インスタントメッセージング機能に XMPP を使用しています。2008 年 9 月には、シスコシステムズが Jabber, Inc. を買収し、商用製品である Jabber XCP の開発に着手しました。

2010 年 2 月には、ソーシャルネットワーキングサイトの Facebook が XMPP を通じてチャット機能をサードパーティ製アプリに開放しました。ただし、Facebook のチャットは実際には XMPP サーバーを稼働させているわけではなく、XMPP のインターフェースを提供しているだけです。

Google Talk の他にも、Live Journal の LJ Talk や Nokia の Ovi など、多くの公共 IM サービスが XMPP を採用しています。また、IBM Lotus Sametime や Microsoft Office Communications Server (OCS) などの企業向け IM ソフトウェアも、XMPP へのゲートウェイを搭載しています。

長所



中央サーバーを持たない: XMPP ネットワークはメールと同様に分散型であり、中央サーバーが存在しません。これにより、特定の組織や企業に依存することなく、柔軟な運用が可能です。
オープン標準: XMPP は IETF によって承認されたオープン標準であり、誰でも自由に実装できます。これにより、ベンダーロックインを回避し、相互運用性を高めることができます。
歴史: XMPP は 1998 年から利用されており、多くの実装が存在します。Googleサン・マイクロシステムズのような大企業も XMPP を支持しており、その信頼性は高いと言えます。
セキュリティ: XMPP は強固なセキュリティ機能を備えており、SASL や TLS を使用して通信を暗号化できます。また、ネットワークを分離してイントラネット内で利用することも可能です。さらに、PGP によるエンドツーエンドの暗号化にも対応しています。
柔軟性: XMPP は拡張性に優れており、IM 以外の機能も実装できます。ネットワーク管理、コンテンツ配信、グループウェア、ファイル共有、ゲーム、リモートシステム監視など、幅広い用途で利用可能です。

短所



プレゼンスデータのオーバーヘッド: XMPP ネットワークでは、プレゼンスデータの転送に大きなオーバーヘッドが発生する場合があります。これは、冗長なデータが多く含まれるためです。この問題を解決するための新しいプロトコルが検討されています。
インバンドでのバイナリデータ転送の非効率性: XMPP は XML ドキュメントとしてデータを符号化するため、バイナリデータをインバンドで転送する前に Base64 でエンコードする必要があります。このため、ファイル転送などの大規模なバイナリデータ転送には、アウトオブバンド方式が推奨されます。

サーバーの分散とアドレッシング



XMPP ネットワークはクライアントサーバーアーキテクチャを採用していますが、中央サーバーを持ちません。すべてのユーザーはユニークな Jabber ID (JID) を持ちます。JID はメールアドレスのような構造で、ユーザー名とドメイン名を @ で区切った形式です。例えば、`[email protected]` のようになります。また、ユーザーは複数の場所からログインすることがあり、その場合はリソース名を用いてクライアントを区別します。例えば、`[email protected]/mobile` のようになります。

メッセージ転送の仕組み



メッセージの転送は以下のような手順で行われます。

1. 送信者のクライアントがメッセージを所属サーバーに送信します。
2. 所属サーバーは、受信者のドメインに向けてコネクションを確立します。
3. 受信者のサーバーがメッセージを受信し、受信者に配信します。受信者がオフラインの場合、メッセージは一時的に保存され、オンラインになった際に配信されます。

他のプロトコルへの接続



XMPP はトランスポートまたはゲートウェイと呼ばれる機能を利用して、他のプロトコルを使用するネットワークに接続できます。これにより、XMPP クライアントから SMS や電子メールなどのプロトコルにもアクセスできます。ユーザーはゲートウェイに登録することで、他のネットワークのユーザーと通信できます。この機能は、XMPP クライアントに追加のコードを必要とせず、クライアントが直接インターネットに接続する必要もありません。

関連項目



Matrix (プロトコル))

脚注



[1]

外部リンク



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)
XMPP Standards Foundation
Jabber User Guide - End user introduction to XMPP (archive)
XMPP Case Studies
Jabber.org (Free XMPP server of the XSF)
XMPP.JP

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。