標籤:android style blog http io ar color os 使用
這篇文章主要介紹XMPP與SIP,很多人容易混淆這兩個概念,轉載請說明出處, cnblogs_RTC.Blacker.
簡介:XMPP和SIP都是應用程式層協議,主要用於互連網上發送語音和即時通訊. SIP在RFC 3621中定義,XMPP在RFC 3920中定義,
XMPP是從即時通訊中演變而來,SIP是從VOIP中演變而來,XMPP為了會話協商添加了一個擴充叫做Jingle,SIP為了即時通訊業務添加了一個擴充叫做SIMPLE.
SIP (Session Initiation Protocol)
SIP是一個應用程式層協議,是用在類似VOIP這樣的場合,用來建立,修改,中止會話,同時在多人會議中他也能在已有會話中加入新的會話.
基本上SIP是VOIP中的信令協議,它處理呼叫建立,來電轉接和產生CDR(Call Detail Record,供通話計費用).
XMPP (Extensible Messaging Presence Protocol)
XMPP是一個為即時通訊和請求響應商務服務的XML協議.
最早由Jabber開源社區在1999年開發,2002年XMPP工作群組為了更適合即時通訊對Jabber進行了擴充.
SIP和XMPP的異同
其實我們不能簡單地拿SIP和XMPP做比對,就像我們不能直接比較比較蘋果和橘子,前者主要是為了會話協商,後者主要是為了結構化資料交換,只不過隨著各自對Simple和Jingle的引入,他們有了一些相似.
1,SIP提供串連的建立、修改和終止,而XMPP在用戶端內部提供流管道,交換結構化資料。
也就是說:SIP的重點是終端之間串連的建立和維護,串連以後的資料和資訊傳送他不關注;而XMPP重點是考慮終端內部的資料交換,串連建立是基本的功能,而不是重點。所以,XMPP對應用的支援和擴充性的考慮很充分,比SIP天生要好.
2,SIP的信令和訊息傳送是基於文本的,不太好解析,或者說解析起來缺少規律性,在新增資料訊息體的時候缺少繼承性,需要開發新的代碼來封裝和解析,原有代碼的繼承性比較差。而XMPP採用XML,是一種結構化的訊息結構,能夠方便地表達層次化的內容,以及內容之間的內在邏輯。這種XML結構對應用的擴充和內容的解析帶來極大的方便,大量軟體代碼可以複用。
3,SIP信令由header和body兩部分組成,也就是說,SIP報文格式的header已經包含了部分內容,類似於HTTP,與具體的上層應用直接關聯,而不是通用的報文格式;而XMPP所有資訊都是採用XML在流管道之間透明傳送。
SIP的串連建立通道與資料傳送通道是各自獨立的,串連建立在SIP client與Server之間,而資料傳送通道是在Client--Client之間直接進行的。這個對視頻、語音和檔案傳送業務很合適,但是不適合其他形式的應用。
XMPP的控制和資料通道是一體的,Clent只與Server建立串連,而Client與Client之間是沒有之間串連的。Client之間傳送的通道是:Client1---〉Server1---〉Server2---〉Client2。這種方式看起來擴充性差,server壓力很大,但是能夠實現很好的業務功能,比如留言、廣播、群聊、狀態更新、Blog、微博、資料共用等等。
這種C-S模型,很多業務的控制在Server上完成,新功能的增加在server上實現,在server上定義新的XML對象和邏輯,用戶端只要負責XML資料流的解析和呈現就可以了, 所以,終端實現簡單
4,SIP可以使用UDP,TCP,TLS進行傳送,而XMPP僅僅使用TCP和TLS進行發送.
5,SIP是雙向對稱,用戶端和伺服器都可以主動發起串連請求並響應,這種對稱串連的方式在穿越NAT和Firewall的時候很麻煩,無法保證穿越NAT。而XMPP是單向的串連,只有Client可以向Server發起串連請求,Server不會向Client發起串連。這樣便於NAT和Firewall的穿越。
參考文檔:http://www.differencebetween.com/difference-between-sip-and-xmpp-jabber/
Android IOS WebRTC 音視頻開發總結(十四)