XMPP

XMPPは、インスタントメッセージング、プレゼンス、マルチパーティチャット、音声およびビデオ通話、コラボレーション、軽量ミドルウェア、コンテンツシンジケーション、およびXMLデータの一般化されたルーティングのためのオープンテクノロジーのセットであるExtensible Messaging and Presence Protocolです。

XMPPはもともとJabberオープンソースコミュニティで開発され、当時の閉鎖されたインスタントメッセージングサービスに代わるオープンで分散型の代替手段を提供していた。 XMPPには、このようなサービスよりもいくつかの主な利点があります:

  • さらに、クライアント、サーバー、サーバーコンポーネント、およびコードライブラリの形式で複数の実装が存在します。

  • 標準-Internet Engineering Task Force(IETF)は、承認されたインスタントメッセージングおよびプレゼンス技術としてコアXMLストリーミングプロトコルを形式化しました。 XMPP仕様は2004年にRFC3920およびRFC3921として公開され、XMPP標準化財団は引き続き多くのXMPP拡張プロトコルを公開しています。 2011年にコアRfcが改訂され、最新の仕様(RFC6120、RFC6121、およびRFC7622)が作成されました。

  • 証明された—最初のJabber/XMPP技術は1998年にJeremie Millerによって開発され、今かなり安定している;何百人もの開発者がこれらの技術に取り組んでいる、何万ものXMPPサーバーが

  • 分散型-XMPPネットワークのアーキテクチャは電子メールに似ています;その結果、誰もが自分のXMPPサーバーを実行することができます,個人や組織が彼らの通信経

  • 安全—任意のXMPPサーバーは、(例えば、会社のイントラネット上の)公共ネットワークから分離することができ、SASLとTLSを使用した堅牢なセキュリティは、コアXMPP仕様 さらに、XMPP開発者コミュニティは、セキュリティバーをさらに高めるために、エンドツーエンドの暗号化に積極的に取り組んでいます。

  • 相互運用性を維持するために、共通の拡張機能はXEPシリーズで公開されていますが、そのような公開は必要ではなく、組織は必要に応じて独自のプライベート

  • IMを超えた柔軟なXMPPアプリケーションには、ネットワーク管理、コンテンツシンジケーション、コラボレーションツール、ファイル共有、ゲーム、リモートシステム監視、webサー

  • 多様性—幅広い企業やオープンソースプロジェクトでは、XMPPを使用してリアルタイムのアプリケーションやサービスを構築し、展開しています。XMPP技術を使用すると、”ロックイン”されることはありません。

このページでは、仕様、実装、チュートリアル、および特別な目的の議論会場へのリンクを含む、さまざまなXMPP技術の紹介を提供します。

:

  • Core—XMLストリーミング用のコアXMPP技術に関する情報
  • Jingle—音声、ビデオ、ファイル転送、およびその他のアプリケーション用のSIP互換マルチメディアシグナリング
  • マルチユーザチャット-柔軟なマルチパーティ通信
  • PubSub-データシンジケーション、リッチプレゼンス、およびその他のためのアラートおよび通知
  • bosh—xmpp(およびその他の)トラフィックのhttpバインディング

core

そのコアでは、xmppはネットワーク経由でxmlをストリーミングするための技術です。 1999年にJabberオープンソースコミュニティから登場したこのプロトコルは、もともとICQ、AIM、MSNなどの消費者指向のインスタントメッセージング(IM)サービスに代わる、オープンで安全で分散化された代替手段を提供するように設計されていた。 コア技術は2004年にIetfでExtensible Messaging and Presence Protocol(XMPP)という名前で公式化された。 これらのコア技術は次のとおりです:

  • ベースXMLストリーミングレイヤー
  • Transport Layer Security(TLS)を使用したチャネル暗号化
  • Simple Authentication and Security Layer(SASL)を使用した強力な認証
  • 完全な国際化アドレスを含む完全なUnicodeサポー7637>双方向認証用のプレゼンスサブスクリプション
  • プレゼンスが有効な連絡先リスト(“名簿”)”)

仕様

コアXMPP技術は二つのRfcで定義されています IETFによって発行されました:

  • rfc6120:XMPPコア
  • RFC6121:XMPP IM
  • RFC7622:XMPPアドレス形式

最初のXMPP Rfc(RFC3920およびRFC3921)は、2004年10月にIETFのXMPPワーキンググループによって作成されました。 2011年に改訂され、現在の仕様になった。

実装

コアXMPP仕様には多くの実装があります。 詳細については、以下のページを参照してください:

  • クライアント
  • サーバー
  • コードライブラリ

Jingle

本質的に、Jingleはjabberクライアントがマルチメディアセッションを設定、管理、破棄する方法を提供します。 このようなセッションは、幅広い種類のアプリケーション(ボイスチャット、ビデオチャット、ファイル転送など)をサポートし、幅広いメディア転送方法(TCP、UDP、RTP、 ジングルセッションを確立するためのシグナリングはXMPPを介して送信され、通常、メディアは直接ピアツーピアまたはメディアリレーを介して送信され 音声チャットとビデオチャットの場合、ジングルネゴシエーションは通常、メディアトランスポートとしてReal-time Transport Protocol(RTP)を使用するため、SESSION Initiation Protocol(SIP)などの既存のマルチメディ さらに、ジングルシグナリングのセマンティクスは、SIPとSession Description Protocol(SDP)の両方と一致するように設計されており、XMPPネットワークとSIPネットワーク間のシグナリングゲートウェイを提供することが簡単になっている。

仕様

ジングルは、多くの仕様で定義されています:

  • XEP-0166:ジングル
  • XEP-0167:ジングルRTPセッション
  • XEP-0176:ジングルICE-UDPトランスポートメソッド
  • XEP-0177:ジングルRaw UDPトランスポートメソッド
  • XEP-0181:ジングルDTMF
  • XEP-0234:ジングルファイル転送

実装

注:以下の実装の多くは古いgoogle talkプロトコルをサポートしており、仕様で定義されているようにジングルをサポート; 詳細については、プロジェクト開発者にお問い合わせください。クライアント

クライアント

  • Coccinella
  • Gajim
  • Jitsi(以前はSIP Communicator)
  • Movim
  • Pandion
  • Pidgin(以前はGaim)
  • Pidgin(以前はGaim)
  • PSI
  • Telepathy
  • Yate

ライブラリ

  • Libjingle(C/C++)
  • Smack(Java)
  • Telepathy Gabble(c)
  • ライブラリ

ライブラリ

ライブラリ

ライブラリ

ライブラリ

ライブラリ

イジングル(++)

コールマネージャー/VoIPサーバー

  • アスタリスク
  • FreeSWITCH
  • Yate

マルチユーザーチャット(MUC)

MUCはXMPP拡張機能です 複数のXMPPユーザーがルームまたはチャネルのコンテキストでメッセージを交換できるInternet Relay Chat(IRC)と同様のマルチパーティ情報交換の場合。 このプロトコルは、ルームトピックや招待状などの標準的なチャットルーム機能に加えて、ユーザーのキックと禁止、ルームモデレータと管理者の名前付け、ルームに参加するためにメンバーシップまたはパスワードを必要とする機能など、強力なルームコントロールモデルを定義しています。 MUCルームはXMPPに基づいているため、プレーンテキストメッセージボディだけでなく、さまざまなXMLペイロードを交換するために使用できます。

仕様

MUCは1つの主要仕様(XEP-0045)といくつかの補助仕様で定義されています:

  • XEP-0045:マルチユーザーチャット
  • XEP-0249:直接MUC招待
  • XEP-0272:マルチパーティジングル

実装

サーバー-以下のXMPPサーバーには、MUCの組み込みサポートが含まれています:

  • ejabberd
  • Jabber XCP
  • M-Link
  • MongooseIM
  • Openfire
  • Prosody
  • Tigase

外部コンポーネント-次のスタンドアロンコンポーネントは、さまざまなxmppサーバーで使用できます:

  • palaver

クライアント

  • Adium
  • Gajim
  • JWChat
  • mcabber
  • Movim
  • ピジン
  • psi

ライブラリ

  • Anyevent:Xmpp(Perl)
  • gloox(C++)
  • jabber-net(.Net)
  • libpurple(C)
  • Smack(Java)
  • XMPP4R(Ruby)

PubSub

PubSubは、XEP-0060で指定された一般的なpublish-subscribe機能のプロトコル拡張です。 このプロトコルを使用すると、XMPPエンティティはpubsubサービスでノード(トピック)を作成し、それらのノードで情報を公開することができます。 したがって、Pubsubは古典的なオブザーバーデザインパターンを遵守し、ニュースフィード、コンテンツシンジケーション、豊富なプレゼンス、地理位置情報、ワークフローシステ Xep-0163で指定されているpersonal eventing protocol(PEP)は、pubsubのプレゼンス認識プロファイルを提供し、すべてのユーザーのJabberIDが豊富なプレゼンス、マイクロブログ、ソーシャルネットワー

仕様

PubSubはいくつかの仕様で定義されています:

  • XEP-0060:Publish-Subscribe
  • XEP-0163:Personal Eventing Protocol
  • XEP-0248:PubSubコレクションノード

ペイロード

PubSubとPEPは”ペイロードに依存しない”—さまざまなデータ形式のニュートラルトランスポー 特にIMユーザーに関連する豊富なプレゼンスのために、より一般的なペイロードのいくつかを以下に示します:

  • アクティビティ
  • Atom/RSS通知
  • アバター
  • チャットルーム訪問
  • ゲーム活動
  • ジオロケーション
  • 気分
  • 音楽曲
  • テレビ/ビデオ活動
  • ウェブサイト訪問

実装

サーバー-以下のXmppサーバーには、PubsubまたはPepの組み込みサポートが含まれています:

  • ejabberd
  • Jabber XCP
  • M-Link
  • Openfire
  • Tigase

サーバーコンポーネント

  • Idavoll

クライアント

  • gajim
  • MOVIM
  • Psi

3.4 ライブラリ

  • strophe(CまたはJavaScript)
  • XMPP4R(Ruby)

BOSH

Boshは、Hypertext Transfer Protocol(HTTP)を介した双方向通信のための技術である”Bidirectional-streams Over Synchronous HTTP”です。 BOSHは、Transmission Control Protocol(TCP)からよく知られているトランスポート-プリミティブの多くをエミュレートします。 “プッシュ”通信と”プル”通信の両方を必要とするアプリケーションでは、BOSHは他のほとんどの双方向HTTPベースのトランスポートプロトコルやAJAXとして知られ BOSHは、HTTPポーリングを回避することによってこの効率と低遅延を実現しますが、Cometとして知られている技術で行われているように、チャンクされたHTTP応答に頼らずに実現します。 今日まで、BOSHは主にJabber/XMPPクライアントとサーバー間で交換されるトラフィックのトランスポートとして使用されてきました(例えば、断続的なネットワーク上のwebク ただし、BOSHはXMPPのみに接続されておらず、他の種類のトラフィックにも使用できます。

仕様BOSHは二つの仕様で定義されています:

  • Xep-0124:同期HTTP
  • を介した双方向ストリームXEP-0206:XMPP Over BOSH

実装

サーバー次のXMPPサーバーには、BOSHの組み込みサポートが含まれています:

  • ejabberd
  • Jabber XCP
  • M-Link
  • MongooseIM
  • Openfire
  • Prosody
  • Tigase

接続マネージャー

次のスタンドアロンxmpp接続マネージャーは、さまざまなXmppサーバーで使用できます:

  • jabberhttpbind
  • Punjab
  • node-xmpp-bosh
  • rhb

クライアント

  • Adium
  • Gajim
  • jwchat
  • Pidgin
  • soashable
  • sparkweb
  • swift
  • tigase messenger
  • Tigase Minichat

ライブラリ

  • emite(Gwt)
  • Gloox(C++)
  • jsjac(javascript)
  • strophe(cまたはjavascript)
  • Swiften(C++)
  • Xiff(Flash)
  • Xmpp4gwt(gwt)
  • Xmpp4Js(Javascript)
  • XMPP4R(Ruby)

コメントを残す

メールアドレスが公開されることはありません。