女人被狂躁到高潮视频免费无遮挡,内射人妻骚骚骚,免费人成小说在线观看网站,九九影院午夜理论片少妇,免费av永久免费网址

當前位置:首頁 > 通信技術 > 通信技術
[導讀]XMPP是一種基于XML的協(xié)議,它繼承了在XML環(huán)境中靈活的發(fā)展性。因此,基于XMPP的應用具有超強的可擴展性。經過擴展以后的XMPP可以通過發(fā)送擴展的信息來處理用戶的需求,以及在XMPP的頂端建立如內容發(fā)布系統(tǒng)和基于地址

XMPP是一種基于XML的協(xié)議,它繼承了在XML環(huán)境中靈活的發(fā)展性。因此,基于XMPP的應用具有超強的可擴展性。經過擴展以后的XMPP可以通過發(fā)送擴展的信息來處理用戶的需求,以及在XMPP的頂端建立如內容發(fā)布系統(tǒng)和基于地址的服務等應用程 序。而且,XMPP包含了針對服務器端的軟件協(xié)議,使之能與另一個進行通話,這使得開發(fā)者更容易建立客戶應用程序或給一個配好系統(tǒng)添加功能。XMPP(可擴展消息處理現(xiàn)場協(xié)議)是基于可擴展標記語言(XML)的協(xié)議,它用于即時消息(IM)以及在線現(xiàn)場探測。它在促進服務器之間的準即時操作。這個協(xié)議可能最終允許因特網用戶向因特網上的其他任何人發(fā)送即時消息,即使其操作系統(tǒng)和瀏覽器不同。XMPP的前身是Jabber,一個開源形式組織產生的網絡即時通信協(xié)議。XMPP目前被IETF國際標準組織完成了標準化工作。

  1  XMPP的地址和數(shù)據結構

  1.1 實體地址

  XMPP整體框架如圖1所示。圖中,XMPP框架的各類實體(如XMPP客戶、服務器和網關等)的地址稱為甲吧地址(Jabber Identifier,JID)。JID惟一確定進行即時消息和在線狀態(tài)信息通信的獨立對象或實體,并可兼容其他即時通信系統(tǒng)(如MSN等)相應的實體標識及其在線狀態(tài)信息。其語法規(guī)則為:[節(jié)點″@″] 域名[″/″資源],其中各個域的長度不能超過1 023 字節(jié),總長度最大為3 071字節(jié)。
 

  XMPP中定義了三個角色,客戶端,服務器,網關。通信能夠在這三者的任意兩個之間雙向發(fā)生。服務器同時承擔了客戶端信息記錄,連接管理和信息的路由功能。網關承擔著與異構即時通信系統(tǒng)的互聯(lián)互通,異構系統(tǒng)可以包括SMS(短信),MSN,ICQ等?;镜木W絡形式是單客戶端通過TCP/IP連接到單服務器,然后在之上傳輸XML。傳輸?shù)氖桥c即時通訊相關的指令。在以前這些命令要么用2進制的形式發(fā)送(比如QQ),要么用純文本指令加空格加參數(shù)加換行苻的方式發(fā)送(比如MSN)。而XMPP傳輸?shù)募磿r通訊指令的邏輯與以往相仿,只是協(xié)議的形式變成了XML格式的純文本。這不但使得解析容易了,人也容易閱讀了,方便了開發(fā)和查錯。而XMPP的核心部分就是一個在網絡上分片斷發(fā)送XML的流協(xié)議。這個流協(xié)議是XMPP的即時通訊指令的傳遞基礎,也是一個非常重要的可以被進一步利用的網絡基礎協(xié)議。所以可以說,XMPP用TCP傳的是XML流。

  域名指定了實體連接的XMPP服務器。每個可用XMPP服務器都擁有一個完整域名,域名可在域名系統(tǒng)(DNS)中查找;節(jié)點可表示某用戶、一類應用或某項服務,所有節(jié)點都對應一個精確的域名;資源用來識別屬于用戶的特殊對象(如設備或位置),允許一個用戶同時以多個資源與同一XMPP服務器連接。

  1.2 XMPP的數(shù)據結構

  由于XMPP是基于XML的協(xié)議,因此用戶可根據自己的需要定義標記,表述幾乎任何一種結構化數(shù)據,并可方便地創(chuàng)建定制的應用或增加功能。

  1.2.1 三個頂級XML元素

  XMPP定義的3個關鍵頂級XML元素為<message/>、<presence/>和<iq/>(info/query),每個元素都可以通過屬性和名字空間包含大量數(shù)據,其屬性和名字空間都是XMPP的組成部分。

  <message/>元素用來包含2個XMPP實體間互相發(fā)送的消息內容;<presence/>元素表示實體可用性信息,可用性信息有“可用”和“不可用”2種;<iq/>元素用來構建2個實體間的會話,并且允許實體間來回傳送XML格式的請求和響應以便取得或設置公共的用戶信息,如名字等。

  即時通信中名字沖突問題使用XML的命名空間特性來解決。XML命名空間定義了一種將XML中使用的元素和屬性與統(tǒng)一資源定位符(Uniform Resource Locator,URL)引用聯(lián)系起來對元素和屬性進行定義的方法。 統(tǒng)一資源定位符(URL)是用于完整地描述Internet上網頁和其他資源的地址的一種標識方法。Internet上的每一個網頁都具有一個唯一的名稱標識,通常稱之為URL地址,這種地址可以是本地磁盤,也可以是局域網上的某一臺計算機,更多的是Internet上的站點。簡單地說,URL就是Web地址,俗稱“網址”。

  1.2.2 XMPP的數(shù)據結構

  從結構上看,XMPP有3種數(shù)據:XML流、流認證和XML節(jié)。XML流是實體交換XML元素的容器,以<stream>開始,以</stream>結束,是通信雙方采用異步方式進行數(shù)據傳輸?shù)臉藴史椒?,在整個XMPP通信過程中處于最外層;XML節(jié)是實體通過XML流傳輸?shù)慕Y構化信息單元,在XML流中以深度為1的子標記開頭,并以深度為1的子標記結束,這些標記為<message/>、<presence/>和<iq/>。

  XMPP為XML流扮演通用“傳輸層”的角色。XML流中包含傳輸?shù)恼J證信息和現(xiàn)場消息,XMPP能使數(shù)據高效路由至最合適的請求源,并最大限度地簡化客戶機上的實現(xiàn),使跨應用實時交流信息成為可能。

  2  工作過程

  (1)節(jié)點(如yb、pt)向本地服務器連接。

 ?、賆MPP用戶通過開啟一個從客戶端到服務器端的XML流,來申請一個在服務器上的Socket連接。

  SEND: <stream:stream

  to=′sdpt.com′

  xmlns=′jabber:client′

  xmlns:stream=′http://etherx.jabber.org/streams′>

 ?、诜掌魍ㄟ^開啟一個從服務器到客戶端的XML流進行回復。

  RECV: <stream:stream

  from=′sdpt.com′

  id=′180763465′

  xmlns=′jabber:client′

  xmlns:stream=′http://etherx.jabber.org/streams′>

 ?。?)節(jié)點向本地服務器申請登錄。

 ?、儆脩粼儐柕卿浄掌鲿r需提供的信息。

  SEND: <iq id=′2′ type=′get′>

  <query xmlns=′jabber:iq:auth′>

  <username>yb</username>

  </query>

  </iq>

 ?、诜掌骰貞脩?,告知用戶登錄所需要的信息。

 ?、塾脩籼峁┧璧男畔?。

 ?、芊掌黜憫粋€空的類型為“result”的iq元素,表明登錄成功。

  RECV:<iq id=′3′ type=′result′/>

 ?、輞b用戶發(fā)送當前狀態(tài)給服務器,表明其在線。

  SEND: <presence>

  <status>Online</status>

  </presence>

 ?。?)用戶獲得花名冊,好友增加一個聯(lián)系人(如yb獲知朋友sd在線)。

 ?。?)用戶間發(fā)送消息(如yb向sd發(fā)送消息)。

  用戶發(fā)送一條消息:

  SEND: <message to′sd@jabber.org′>

  <body>Where are you?</body>

  </message>

  服務器會根據XMPP用戶的會話信息加上一個源地址,這樣接收者收到消息時,消息中已經包含了源地址。

 ?。?)XMPP服務器根據目標JID中的域名查找、連接到目標服務器并進行認證(如sdpt.com使用DNS查找jabber.org,連接到jabber.org服務器上并進行認證)。

 ?。?)XMPP服務器jabber.org證實sd連接到該服務器上,yb被授權與sd進行通信。

  (7)數(shù)據在yb與sd間流動。

  (8)用戶退出,退出時只需要關閉<stream>。3  安全機制

  3.1 簡單認證和安全層協(xié)商機制

  簡單認證和安全層(Simple Authentication and Security Layer,SASL)可以為基于連接的協(xié)議加入認證機制,提供KERBEROS_V4、PLAIN和DIGEST-MD5等多種認證方法。每種認證機制包含認證機制名、認證過程初始化命令、認證控制命令、特定8位碼和解釋器等信息。

  在認證過程中,認證服務器完成認證、授權標識傳送、簡單認證和安全層協(xié)商3個方面的工作。在XMPP中,SASL處理步驟如下(C:客戶端,S:SASL認證服務器):

  (1)C、S之間建立連接。(2)S向C提供認證機制列表。(3)C在認證機制列表中選擇一種認證機制。(4)S向C詢問授權信息。(5)C向S提交授權信息。(6)S向C返回認證成功或失敗信息。

  3.2 回撥認證

  在通信過程中,2個XMPP服務器之間經常需要通信,為避免利用服務器欺騙方式進行信息偽造,XMPP 采用了回撥認證機制?;負苷J證依靠DNS技術完成,利用回撥認證機制,一個服務器可以確認與自己建立連接的服務器是否經過合法授權,回撥認證過程為:(1)源服務器和接收服務器建立連接,并向接收服務器請求認證。接收服務器回應,并分配認證會話ID。(2)源服務器向接收服務器發(fā)送認證密鑰。(3)接收服務器與認證服務器建立連接。認證服務器同時為該認證會話分配一個驗證會話ID。(4)接收服務器把源服務器提交來的密鑰和驗證會話ID 發(fā)送給認證服務器,請求驗證。(5)認證服務器驗證密鑰,并給接收服務器返回認證結果。(6)接收服務器給源服務器返回認證結果。

  3.3 加  密

  雖然SASL提供了先進的認證機制,通信雙方必須經過特定的授權認證才能進行正常通信,但是登錄信息一般都是密碼和用戶名等重要信息,它們大多采用明文方式傳送,因此很容易被竊聽。為解決該問題,XMPP采用基于傳輸層安全協(xié)議的“STARTTLS”擴展來為通信雙方提供機密性和數(shù)據完整性服務。TLS 協(xié)議包括兩個協(xié)議組―― TLS 記錄協(xié)議和 TLS 握手協(xié)議――每組具有很多不同格式的信息。TLS 記錄協(xié)議是一種分層協(xié)議。每一層中的信息可能包含長度、描述和內容等字段。記錄協(xié)議支持信息傳輸、將數(shù)據分段到可處理塊、壓縮數(shù)據、應用 MAC 、加密以及傳輸結果等。對接收到的數(shù)據進行解密、校驗、解壓縮、重組等,然后將它們傳送到高層客戶機。TLS 連接狀態(tài)指的是TLS 記錄協(xié)議的操作環(huán)境。它規(guī)定了壓縮算法、加密算法和 MAC 算法。TLS 記錄層從高層接收任意大小無空塊的連續(xù)數(shù)據。密鑰計算:記錄協(xié)議通過算法從握手協(xié)議提供的安全參數(shù)中產生密鑰、 IV 和 MAC 密鑰。TLS 握手協(xié)議由三個子協(xié)議組構成,允許對等雙方在記錄層的安全參數(shù)上達成一致、自我認證、例示協(xié)商安全參數(shù)、互相報告出錯條件。

  TLS協(xié)議框架主要有2個層次的協(xié)議:TLS握手協(xié)議和TLS記錄協(xié)議。TLS握手協(xié)議用來讓服務器與客戶在傳輸應用層數(shù)據之前交換TLS協(xié)議版本信息、協(xié)商加密算法、進行(相互)身份認證并交換密鑰。TLS記錄協(xié)議用來將應用層提供的信息進行分組、壓縮、數(shù)據完整性檢查和加密。數(shù)據完整性檢查通過比較傳輸前后使用安全散列函數(shù)(如SHA和MD5 等)計算出來的數(shù)據的MAC值是否一致來完成。數(shù)據加密采用對稱密碼算法(如R4和DES等)。對數(shù)據進行完整性檢查和加密的密鑰由TLS握手協(xié)議來協(xié)商。

  XMPP中采用的STARTTLS擴展處理流程如下(C:客戶端,S:TLS服務器):

 ?。?)C、S之間建立XML流會話連接。

  (2)S 向C 發(fā)送STARTTLS擴展服務需求及支持的其他認證機制列表,代碼實例如下:

  <stream:features>

  <starttls xmlns=′urn:ietf:params:xml:ns:xmpp-tls′>

  <required/>

  </starttls>

  <mechanisms xmlns=′urn:ietf:params:xml:ns:xmppsasl′>

  <mechanism>DIGEST-MD5</mechanism>

  <mechanism>PLAIN</mechanism>

  </mechanisms>

  </stream:features>

 ?。?)C發(fā)送STARTTLS命令給S。

 ?。?)C、S中TLS握手協(xié)議開始協(xié)商相關加密算法及密鑰。

 ?。?)若TLS握手協(xié)議協(xié)商成功,則關閉當前XML流會話,C發(fā)起一個新的XML流會話,所有傳送的信息均被TLS記錄協(xié)議加密。TLS握手協(xié)議協(xié)商不成功則發(fā)出警告信息。

 ?。?)S向C回復新XML流會話。

  4  客戶端程序設計中的關鍵問題

  由于網絡中已存在大量的XMPP服務器,在一般的應用開發(fā)中,只要設計自定功能的客戶端程序即可,并可以選用Smack庫來加速開發(fā)。

  (1)創(chuàng)建一個XMPP連接。因為XMPP使用TCP協(xié)議,所以首先必須創(chuàng)建一個網絡連接,XMPPConnection就是Smack庫用來創(chuàng)建與XMPP服務器連接的類,創(chuàng)建一個XMPP連接的代碼如下:

  XMPPConnection connection=new XMPPConnection(″jab-

  ber.org″);

  如要創(chuàng)建加密連接,可以使用SSLXMPPConnection類:

  XMPPConnection connection=new SSLXMPPConnection(″jabber.org″);

 ?。?)登錄。TCP連接創(chuàng)建后,需要使用用戶名和密碼登錄到XMPP服務器,登錄程序可以使用XMPPConnection.login(String username,String password)方法。登錄后就可以和其他人聊天。

  connection.login(″yb″,″password″);//connection為已創(chuàng)建的XMPP連接,下同

  connection.createChat(″yb@sdpt.com″)。sendMessage

 ?。?Prime;Hello!″);

 ?。?)操作名冊。每個用戶都包括:一個XMPP地址(如mailto:%E2%80%9Cyb@sdpt.com”)、名稱或昵稱(如″yb″),及其所屬列表(如好友、同事等)。名冊能夠跟蹤好友或某用戶組是否在線及其狀態(tài)信息,登錄后,可以使用Roster類來取得好友或某用戶組的狀態(tài),代碼如下:

  Roster roster=con.getRoster( );

  for (Iterator i=roster.getEntries( );i.hasNext( ); ) {

  System.out.println(i.next( ));}

  名冊信息通常是隨時變化的,可能需要增加或刪除。要監(jiān)聽名單及其在線狀態(tài)的改變,可以使用RosterListener。

 ?。?)發(fā)送和接收消息。發(fā)送接收消息可以使用Chat和GroupChat類。下面介紹如何使用Chat發(fā)送文本消息,GroupChat的使用方法類似。

  Chat newChat=connection.createChat(″yb@sdpt.com″);//創(chuàng)建新Chat

  newChat.sendMessage(″Hello!″);//發(fā)送消息″Hello!″

  利用Chat.sendMessage( )方法可以方便地創(chuàng)建一個消息對象,它的參數(shù)就是消息內容,執(zhí)行后消息會發(fā)送出去。

  Chat newChat=connection.createChat(″yb@sdpt.com″);

  newMessage.setBody(″Hi, I′m waiting for you.″);

  while (true) {

  Message message=newChat.nextMessage( );//等待對方發(fā)送消息

  newChat.sendMessage(message.getBody());//把對方

  }//發(fā)送來的消息發(fā)回去

 ?。?)修改狀態(tài)。要修改狀態(tài)可以用presence.Type.UNAV-ILABLE作為參數(shù)創(chuàng)建一個presence,狀態(tài)將改變?yōu)椴辉诰€狀態(tài)。

  Presence presence=new Presence(Presence.Type.UNAVAILABLE);

  presence.setStatus(″Gone skating″);

  5  結束語

  目前,全球有20萬個即時通信平臺支持XMPP,有1 000萬人在使用。簡單的接口、開放的協(xié)議、互聯(lián)的架構、權威的標準再加上堅實的用戶基礎是XMPP的優(yōu)勢。
 

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

上海2024年10月8日 /美通社/ -- 2024年9月24日至25日,全球領先的汽車涂料供應商PPG受邀參加了在上海舉行的SURCAR亞洲大會。會議期間,PPG與國內外各大汽車制造商、行業(yè)專家進行了深入的交流,共同探...

關鍵字: 汽車 RC PRIME 奇瑞

2型炎癥領域新突破 上海2023年9月22日 /美通社/ -- 賽諾菲今天宣布,達必妥®(度普利尤單抗注射液)獲得中國國家藥品監(jiān)督管理局(NMPA)批準,用于治療適合系統(tǒng)治療的中度至重度結節(jié)性癢疹的成...

關鍵字: PRIME BSP REPORT SAR

香港2022年9月17日 /美通社/ - 2022年9月15日,Doo Group 旗下全球領先的互聯(lián)網券商 Doo Prime,在泰國圓滿結束了 2022 iFX Expo Asia 精彩旅程。  iF...

關鍵字: ASIA GROUP PRIME BSP

上海2022年8月11日 /美通社/ -- 8月19日至8月30日,富士X-SPACE策劃的兩個攝影項目將亮相北京798藝術區(qū)悅·美術館:瑪格南攝影師Olivia Arthur(奧利維婭·亞瑟...

關鍵字: CONNECTION SPACE 富士 影像

北京2022年8月8日 /美通社/ -- "金山銀山,不如綠水青山",面對過量溫室氣體排放所致的全球性氣候危機,加速能源供給側到需求側的全鏈路低碳轉型刻不容緩。從齊魯大地到錦繡川蜀,從江南水鄉(xiāng)到西北大...

關鍵字: 開關柜 配電系統(tǒng) ABB PRIME

(全球TMT2022年8月2日訊)Omdia的新研究顯示,非線性觀看在美國、歐洲和澳大利亞電視用戶的日常觀看習慣中繼續(xù)占據更大的霸權地位,在線長視頻和社交媒體視頻觀看超越了上一年觀看時間的繁榮增長。 2021年各...

關鍵字: PRIME 線性 DISCOVERY FACEBOOK

德國海德海姆2022年7月26日 /美通社/ -- 繼2021 年后,福伊特集團可持續(xù)發(fā)展評分再次獲得國際獨立評級機構ISS ESG評定為 B-。 這一成績幫助福伊特在可持續(xù)發(fā)展領域成功躋身全球同行業(yè)前三名,這也是福伊特...

關鍵字: 可持續(xù)發(fā)展 PRIME STATUS 供應鏈

(全球TMT2022年7月22日訊)由知名策展人何伊寧策劃的"New Connection"于7月22日-8月15日在上海X-SPACE富士影像共享空間與大眾見面,展覽集合了12組青年攝影師和影像藝術家作品,從更廣博處...

關鍵字: CONNECTION SPACE 富士 影像

上海2022年7月15日 /美通社/ -- 2022年亞馬遜Prime會員日于昨日落下帷幕。在為期2天的活動里,包括中國賣家在內的亞馬遜全球賣家再創(chuàng)業(yè)績新高,他們在亞馬遜上的銷售增長超過了亞馬遜自營業(yè)務。不少中國賣家布局...

關鍵字: 亞馬遜 PRIME 指南針 探測器

(全球TMT2022年5月25日訊)華為預測到2030年,通過使用數(shù)字技術,各行各業(yè)的能源消耗可以減少20%,這個碳減排量將十倍于ICT行業(yè)自身的碳排放量。然而,能源消耗的增加并不是地球面臨的唯一威脅。隨著全球森林覆蓋...

關鍵字: 華為 TE CONNECTION FOR
關閉