亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

XMPP-可擴展的消息和出席信息協議(概述)

2019-11-14 19:52:36
字體:
來源:轉載
供稿:網友

概述


  可擴展消息的和出席信息協議(XMPP)主要采用xml流實現在任意兩個網絡終端接近實時的交換結構化信息,XMPP提供一個通用的可擴展的框架來交換XML數據,用于準實時消息和出席信息以及請求-響應服務。

通用的架構


  XMPP沒有指定任何特定的網絡結構,但它通常是采用客戶-服務器架構進行實現,其中客戶端通過TCP方式使用XMPP訪問服務器,服務器之間也采用TCP方式進行通信。

1.同一域名服務器和客戶端組成的簡單XMPP架構

  具有惟一名稱的客戶機通過相關的服務器與另外一個具有惟一名稱的客戶機進行通信,每個客戶機執行客戶機的協議表單,而服務器在表單中提供路由功能

2.包含網關的復雜XMPP架構

  針對不同域(XMPP域,短信服務(SMS)域和一個 SMTP 域)之間,網關可以把 XMPP 翻譯成外部(非XMPP)消息系統,并把返回的消息翻譯成 XMPP 。作為一個可擴展的協議,XMPP 對于在不同的端點協議間提供統一連接性來說是一個理想的中樞協議。XMPP 網關允許終止一個給定的客戶端到服務器的會話,并且向目標端點協議發起一個新的會話(同時進行必要的協議轉換)。

地址空間


概覽  

  一個XMPP實體的地址被稱為JID,一個合法的JID包含可選節點,域名,可選資源名,一個JID作為網絡通訊ID,其具有唯一性

  XMPPJID *jid = [ node "@" ] domain [ "/" resource ];

  一個 JID 的每個合法部分(節點名,域名,資源名)的長度不能(MUST NOT)超過 1023 字節。也就是整體長度(包括 '@' 和 '/' )不能超過 3071 字節

[可選節點]域名[可選資源]

  域名:主要ID,一個域名標識引用的實體,并非總是一個服務器,它也可能是一個服務器的子域地址

  可選節點:第二ID,通常表示一個向服務器或網關請求和使用網絡服務的實體(比如一個客戶端),當然它也能夠表示其他的實體(比如在多用戶聊天系統中的一個房間)

    可選資源:通常表示一個特定的會話,連接(比如設備或者所在位置),或者一個附屬于某個節點ID實體相關實體的對象(比如多用戶聊天室中的一個參加者),也稱第三ID

XML流和XML節 


概覽

  XML流和XML節使得實體之間異步交換低負載的結構化信息成為可能

  XML流:

    一個XML流是一個容器,包含了兩個實體之間通過網絡交換的XML元素。一個XML流是由一個XML打開標簽 <stream> (包含適當的屬性和名字空間聲明)開始的,流的結尾則是一個XML關閉L標簽 </stream> 。在流的整個生命周期,初始化它的實體可以通過流發送大量的XML元素,用于流的握手(TLS握手或SASL握手)或XML節(此處主要指符合缺省名字空間的元素,包括<message/>,<PResence/>, 或 <iq/> 元素)

    “初始的流”由初始化實體(通常是一個客戶端或服務器)和接收實體(通常是一個服務器)握手,從接收實體來看,它就是那個初始實體的"會話".初始化流允許從初始化實體到接收實體的單向通信;為了使接收實體能夠和初始實體交換信息,接收實體必須發起一個反向的握手(應答流).

  XML節:

    一個XML節是一個實體通過 XML 流向另一個實體發送的結構化信息中的一個離散的語義單位。任何XML節都是從一個XML流的下一級的某個打開標簽(如 <presence>)開始,到相應的關閉標簽(如 </presence>)(此處XML節僅限于<message/>, <presence/>, 和 <iq/> 元素)

  客戶端與服務端進行會話:

    1.客戶端發送一個打開標簽<Stream>給服務器,初始化流(也可在此之前發送一段文本聲明XML版本和支持的字符集)

    2.服務器回復一個XML流給客戶端(也可在此之前發送一段文本聲明)

    3.客戶端完成SASL握手

    4.客戶端發送關閉標簽</stream>給服務器(或服務器發送給客戶端)

    5.客戶端與服務器徹底終結這個連接(通常為一個TCP連接)

通信類別

  使用 XMPP 的實時消息傳遞系統包含三大通信類別:

  • 消息傳遞,其中數據在有關各方之間傳輸;<message>
  • 聯機狀態,它允許用戶廣播其在線狀態和可用性;<presence>
  • 信息/查詢請求,它允許 XMPP 實體發起請求并從另一個實體接收響應。<iq>
 <stream>     <presence>        <show/>     </presence>     <message>        <body/>     </message>     <iq>        <query/>     </iq> </stream>

綁定到TCP

  雖然有很多非必需的連接使用XML流來綁定[TCP]連接(兩個實體可以通過別的機制來互聯,比如通過[HTTP]連接輪詢),在客戶和服務器通信的過程中,服務器必須允許客戶端共享一個TCP連接來傳輸XML節,包括從客戶端傳到服務器和從服務器傳到客戶端。在服務器之間的通信過程中,服務器必須用一個 TCP連接 向對方發送 XML節,另一個 TCP連接(由對方初始化)接收對方的XML節,一共兩個 TCP連接。

流的安全

  當XML流開始握手時,盡管可能存在某種共有的機制能夠保證雙向安全,但是“初始化流”(比如從初始化實體發給接收實體的流)和“應答流”(比如從接收實體發給初始化實體的流)還是必須安全的分開。在流被驗證之間,實體不應該嘗試通過流發送XML節;就算它這樣做了,對方的實體也不能接受這些XML節,并且應該返回一個 <not-authorized/> 的流錯誤信息并且終止當前TCP連接上雙方的XML流;注意,這僅僅是針對XML節(包含在缺省命名空間中的 <message/>, <presence/>, 和 <iq/> 元素),而不是指那些用于 TLS握手、SASL握手握手的流。

Stream屬性

  • to            : 出現在初始化實體發給接受實體的XML流中,值為接受實體JID,若其出現在應答流中,初始化實體應忽略
  • from        : 出現在接收實體發給初始化實體的 XML 流的頭當中,值為初始化實體JID,若其出現的初始化實體中,接受實體應忽略
  • id            : 用于接收實體發送給初始化實體 XML流的頭中,由接受實體創建的唯一ID,也做初始化實體與接受實體之間的會話ID,若其出現在初始化流中,接受實體應忽略
  • xml:lang  : 包含在初始化發給接受實體的初始化流中,用于指定在流中傳輸的可讀XML字符所使用的缺省語言,如該值沒有則應用缺省值,如該值存在,則接受實體不能修改該值
  • version    : 版本支持

流錯誤

  流的根元素可以(MAY)包含一個 <error/> 子元素,由流的名字空間前綴作為它的前綴

<stream:error>     <defined-condition xmlns='urn:ietf:params:xml:ns:xmpp-streams'/>    [optional text]     <text xmlns='urn:ietf:params:xml:ns:xmpp-streams' xml:lang='langcode'>        descriptive text     </text></stream:error>

規則

以下規則適用于流級別的錯誤:
  • 它假定所有流級別的錯誤都是不可恢復的;所以,如果一個錯誤發生在流級別,發現這個錯誤的實體必須(MUST)發送一個流錯誤信息給另一個實體,發送一個關閉標簽 </stream>,并終止這個流所在的TCP連接。
  • 如果這個錯誤發生在流剛開始設置的時候,接收實體必須(MUST)仍然發送一個開放標簽 <stream> ,并在流元素中包含一個<error/>的子元素,然后發送一個關閉標簽 </stream>,最后終止相應的TCP連接。在這種情況下,如果初始化實體在 'to' 屬性中提供了一個未知的主機名,服務器應該(SHOULD)在終止之前,先在流的頭信息的 'from' 屬性中提供一個服務器認證的主機名.

流錯誤條件定義

以下流級別的錯誤條件是已定義的:
  • <bad-format/> -- 實體已經發送XML但是不能被處理;這個錯誤可以被更多特定的XML相關的錯誤替換,比如 <bad-namespace-prefix/>, <invalid-xml/>, <restricted-xml/>, <unsupported-encoding/>, 以及 <xml-not-well-formed/>,盡管更多特定的錯誤是首選的。 
  • <bad-namespace-prefix/> -- 實體發送的名字空間前綴不被支持,或者在一個需要某種前綴的元素中沒有發送一個名字空間前綴.
  • <conflict/> -- 服務器正在關閉為這個實體激活的流,因為一個和已經存在的流有沖突的新的流已經被初始化。
  • <connection-timeout/> -- 實體已經很長時間沒有通過這個流發生任何通信流量(可由一個本地服務策略來配置).
  • <host-gone/> -- 初始化實體在流的頭信息中提供的'to'屬性的值所指定的主機已經不再由這臺服務器提供
  • <host-unknown/> -- 由初始化實體在流的頭信息中提供的 'to' 屬性的值和由服務器提供的主機名不一致.
  • <improper-addressing/> -- 一個在兩臺服務器之間傳送的節缺少 'to' 或 'from' 屬性(或者這個屬性沒有值).
  • <internal-server-error/> -- 服務器配置錯誤或者其他未定義的內部錯誤,使得服務器無法提供流服務.
  • <invalid-from/> -- 在'from'屬性中提供的 JID 或 主機名地址,和認證的 JID不匹配 或服務器之間無法通過SASL(或回撥)協商出合法的域名,或客戶端和服務器之間無法通過它進行認證和資源綁定。
  • <invalid-id/> -- 流 ID 或回撥 ID 是非法的或和以前提供的 ID 不一致.
  • <invalid-xml/> -- 實體通過流發送了一個非法的XML給執行驗證的服務器.
  • <not-authorized/> -- 實體試圖在流被驗證之前發送數據或不被許可執行一個和流協商有關的動作,接收實體在發送錯誤信息之前不允許處理厭惡的節。
  • <policy-violation/> -- 實體違反了某些本地服務策略;服務器可以選擇在 <text/> 元素或應用程序定義的錯誤條件(元素)中詳細說明策略。
  • <remote-connection-failed/> -- 服務器無法正確連接到用于驗證或授權的遠程實體。
  • <resource-constraint/> -- 服務器缺乏必要的系統資源為流服務。
  • <restricted-xml/> -- 實體試圖發送受限的XML特性,比如一個注釋,處理指示,DTD,實體參考,或保留的字符.
  • <see-other-host/> -- 服務器將不提供服務給初始化實體但是把它重定向到另一臺主機;服務器應該在<see-other-host/>元素的XML字符數據中指明替代服務器名或IP地址(它必須(必須)是合法的域名標識)。
  • <system-shutdown/> -- 服務器正在關機并且所有激活的流正在被關閉。
  • <undefined-condition/> -- 錯誤條件不在本文已定義的錯誤條件列表之中;這個錯誤條件應該僅用于"應用程序定義條件"元素.
  • <unsupported-encoding/> -- 初始化實體以一個服務器不不支持的編碼方式編碼了一個流.
  • <unsupported-stanza-type/> -- 初始化實體發送了一個流的一級子元素但是服務器不支持.
  • <unsupported-version/> -- 由初始化實體在流的頭信息中指定的'version'屬性的值所指定的版本不被服務器支持;服務器可以在<text/>元素中指定一個它支持的版本號.
  • <xml-not-well-formed/> -- 初始化實體發送了一個不規范的XML(參考[XML])

參考資料:

http://www.ibm.com/developerworks/cn/xml/x-xmppintro/index.html

http://www.ibm.com/developerworks/cn/xml/tutorials/x-realtimeXMPPTut/index.html

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品网站大全| 91精品国产91久久久久久最新| 亚洲国产成人在线视频| 亚洲伊人一本大道中文字幕| 亚洲国产精品视频在线观看| 国产精品美女免费| 热99在线视频| 亚洲成av人乱码色午夜| 亚洲精品国产综合区久久久久久久| 777午夜精品福利在线观看| 日韩精品福利网站| 国产第一区电影| 欧美福利视频在线| 日韩av网站大全| 中文字幕精品影院| 日韩欧美在线免费| 精品国产91久久久久久| 91久久夜色精品国产网站| 综合久久五月天| 欧美日韩日本国产| 国产成人精品一区二区在线| 欧美日韩国产一区二区三区| 麻豆精品精华液| 国产一区二区av| 都市激情亚洲色图| 亚洲精品自拍第一页| 久久久久久久久久久久久久久久久久av| 日韩欧美国产骚| 亚洲日本中文字幕免费在线不卡| 国产亚洲精品久久久久久| 欧美日韩黄色大片| 欧美精品18videos性欧美| 亚洲第一级黄色片| 在线丨暗呦小u女国产精品| 51视频国产精品一区二区| 久久久999精品免费| 日韩高清电影免费观看完整版| 亚洲已满18点击进入在线看片| 国产亚洲精品久久久久久777| 日韩一二三在线视频播| 亚洲国产精彩中文乱码av在线播放| 97精品国产97久久久久久春色| 色综合影院在线| 欧美极品在线播放| 日韩在线视频观看正片免费网站| 欧亚精品中文字幕| 国产精品久久久久久久久久久久久久| 国产精品毛片a∨一区二区三区|国| 日韩影视在线观看| 欧美极品第一页| 亚洲视频欧美视频| 欧美午夜宅男影院在线观看| 欧美日韩日本国产| 亚洲精品美女在线观看播放| 精品国产户外野外| 久久精品久久久久电影| 欧美色视频日本高清在线观看| 91精品成人久久| 久久精品国产久精国产一老狼| 国产欧美中文字幕| 亚洲国产成人精品女人久久久| 欧美在线一级视频| 中文日韩在线视频| 欧美成人黄色小视频| 亚洲国产天堂久久国产91| 日韩在线视频免费观看高清中文| 在线视频亚洲欧美| 亚洲欧洲日本专区| 欧美最猛性xxxxx亚洲精品| 蜜月aⅴ免费一区二区三区| 国产精品爽黄69| 国产亚洲一区二区精品| 成人伊人精品色xxxx视频| 精品网站999www| 亚洲国产天堂久久国产91| 欧美激情欧美激情| 国语自产精品视频在免费| 色妞色视频一区二区三区四区| 国产精品com| 欧美日韩xxxxx| 久久久av一区| 精品国产欧美一区二区五十路| 国产精品扒开腿做| 高清日韩电视剧大全免费播放在线观看| 亚洲xxx自由成熟| 日韩欧美中文第一页| 国产精品视频公开费视频| 国产精品久久久久久久久影视| 国产欧美欧洲在线观看| 久热精品视频在线观看| 国产自产女人91一区在线观看| 国产成人精品免费久久久久| 成人福利视频网| 久久人人爽人人爽人人片av高请| 欧美性猛交xxxx免费看| 黄色一区二区三区| 欧美激情国内偷拍| 国产精品视频中文字幕91| 欧美精品一二区| 久色乳综合思思在线视频| 一区二区三区天堂av| 日韩精品中文字| 欧美肥臀大乳一区二区免费视频| 精品国产鲁一鲁一区二区张丽| 亚洲电影免费观看| 最近的2019中文字幕免费一页| 亚洲欧美日韩一区在线| 亚洲一区二区三区sesese| 国产精品成人一区二区| 欧美激情国产高清| 中文字幕日本欧美| www.日韩不卡电影av| 亚洲精品一区二区三区不| 91久久综合亚洲鲁鲁五月天| 国产精品最新在线观看| 在线免费观看羞羞视频一区二区| 美女性感视频久久久| 国产视频久久久久| 亚洲影视九九影院在线观看| 欧美高清在线播放| 亚洲视频在线视频| 欧美精品手机在线| 亚洲国产毛片完整版| 亚洲一区久久久| 国产精品嫩草视频| 色偷偷偷综合中文字幕;dd| 国产乱肥老妇国产一区二| 国产精品第10页| 成人黄色免费看| 欧美巨猛xxxx猛交黑人97人| 一本色道久久88精品综合| 久久久久久亚洲| 福利视频一区二区| 亚洲全黄一级网站| 日韩美女av在线免费观看| 久久亚洲欧美日韩精品专区| 国产精品入口日韩视频大尺度| 久久久精品视频在线观看| www.亚洲一区| 日韩电影中文字幕在线观看| 97超级碰碰碰久久久| 色777狠狠综合秋免鲁丝| 九九热这里只有精品免费看| 青青草精品毛片| 亚洲第一二三四五区| 日本亚洲精品在线观看| 国产精品日韩欧美大师| 久久久www成人免费精品| 欧美国产日韩一区二区三区| 久久久91精品国产一区不卡| 日韩国产在线播放| 亚洲最大成人在线| 情事1991在线| 北条麻妃一区二区在线观看| 国产精品白嫩初高中害羞小美女| 亚洲国产成人精品电影| 亚洲国产欧美一区二区丝袜黑人| 亚洲人成电影网| 最新69国产成人精品视频免费| 欧洲亚洲女同hd| 欧美电影免费播放| 日韩成人av网| 亚洲无限av看| 国产精品成熟老女人|