2011年3月3日 星期四

XMPP Core(RFC3920)

大綱:
XMPP是一個XML(Extensible Markup Language)元素的串流協定,為了在任何兩端提供更接近即時的結構化資訊交換.
而XMPP為XML資料交換提供了一個普遍化且可擴充的framework.
通常主要被用來建立IM(instant messaging)和在場應用(presence application),請參考所需條件RFC2779.
1. 簡介
The extensions required to provide the instant messaging and presence functionality defined in RFC 2779 [IMP‑REQS] are specified in Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence [XMPP‑IM].

2. 普遍性的架構
2.1 概觀:
C1----S1---S2---C3
|
C2----+--G1===FN1===FC1
The symbols are as follows:

C1, C2, C3 = XMPP clients
S1, S2 = XMPP servers
G1 = A gateway that translates between XMPP and the protocol(s) used on a foreign (non-XMPP) messaging network
FN1 = A foreign messaging network
FC1 = A client on a foreign messaging network
- : 使用XMPP
= : 非XMPP的其他通訊協定

2.2 Server:
整合抽象層的XMPP通訊,主要責任:
- to manage connections from or sessions for other entities, in the form of XML streams to and from authorized clients, servers, and other entities
- to route appropriately-addressed XML stanzas among such entities over XML streams

2.3 Client:
多數client透過TCP直接連結到server,並充分利用server所提供的功能和相關服務.

2.4 Gateway:
一個特殊目的得server端服務,主要功能用來將XMPP翻譯成其他non-XMPP的訊息系統.
例如gateways到email(SMTP),SIMPLE,Short Message Service (SMS),其他IM.
gateways與servers之間,gateways與其他外部訊息系統間的溝通,並未定義於RFC3920.

2.5 Network:


3. 位址格式
3.1 概觀
一個entity是網路上被承認的端點並且可使用XMPP溝通. entities都有獨一無二的位址格式(RFC2396).
因歷史理由,XMPP entity的位址被稱為Jabber Identifier或JID.
合法的JID包含了一組有順序的元素格式
jid = [ node "@" ] domain [ "/" resource ]

3.2 Domain Identifier
3.3 Node Identifier
3.4 Resource Identifier
3.5 Determination of Addresses

4. XML串流
4.1 概觀
XML streams and XML stanzas這兩個基本概念產生相對較小且快速,非同步的結構化資訊payload.

- Definition of XML Stream:
XML Stream 是一種XML Elements容器,用於網路上兩個個體之間的交換.
一個XML Stream的
起始tag明確的由來表示與適當得attribute和namespace來定義,
結束tag明確的由
來表示
在stream的生命周期間,被初始化的個體可以透過Stream發送無數個XML element.

- Definition of XML Stanza:
An XML stanza is a discrete semantic unit of structured information that is sent from one entity to another over an XML stream.
一個XML stanza直接存在於 element中,
任何XML stanza的
起始tag明確的表示在depth=1的XML stream中,
結束tag明確的表示在depth=1的XML stream中.
XML stanza也可以在child element中包含相關想表達的資訊.
XML stanza預設namespace均屬於,,

思考client與server的會話,為了連結到一個server,一個client必須初始一個XML stream並傳送一個開放的tag到server.
並可選擇,文字的處理上是否要聲明指定XML version和字元encoding的支援.

4.2 結合TCP

沒有留言: