當前位置:編程學習大全網 - 源碼下載 - im即時通訊開發:IM通信協議設計詳解

im即時通訊開發:IM通信協議設計詳解

本文要談的IM通信協議指的是應用層通信“語言”,並非指傳輸層協議(如TCP、UDP)。IM通信協議的制定是IM開發中起點,也是貫穿設計、開發、運維始終的核心所在,通信協議設計的好壞,直接影響後緒環節的用戶體驗(數據流量、耗電量、通信速度)、兼容性(新老版本的無縫融合)、擴展性(後緒的版本升級怎麽辦)等,是個基礎且極其重要的工作之壹。

IM通信協議的分層設計

所謂“協議”是雙方***同遵守的規則,例如:離婚協議,停戰協議。

協議有語法、語義、時序三要素:

(1)語法:即數據與控制信息的結構或格式

(2)語義:即需要發出何種控制信息,完成何種動作以及做出何種響應

(3)時序:即事件實現順序的詳細說明

壹套典型的IM通信協議設計分為三層:應用層、安全層、傳輸層。

IM應用層協議設計

應用層協議選型,常見的有三種:文本協議、二進制協議、流式XML協議。

文本協議

文本協議是指 “貼近人類書面語言表達”的通訊傳輸協議,典型的協議是]juliet@example.com[/url]’

type=’chat’

xml : lang=’en’>

<body>Wherefore art thou, Romeo?</body>

</message>

從xml標簽中大致可以判斷這是壹個romeo發給juliet的聊天消息。xmpp協議可以實現跨域的互通。例如gtalk和校內通用戶聊天。只要服務端實現了s2s服務(server to server) ,不過現在的im基本沒有互通需求 ,所以這個服務基本沒有人實現。 即時通訊聊天app軟件開發可以咨詢蔚可雲。

XMPP協議有幾個特點:

a.它是準標準協議,可以跨域互通

b.XML的優點,可讀性好,擴展性好

c.解析代價超高(dom解析)

d.有效數據傳輸率超低(大量的標簽)

個人旗幟鮮明的強烈不建議使用xmpp,特別是無線端im,如果要用,壹定要自己做壓縮 ,減少網絡流量(用過xmpp的同學都清楚,發壹個登錄包需要多少交互,要浪費多少流量)。

IM安全層協議設計

im協議,消息的保密性非常重要 ,誰都不希望自己聊天內容被看到,所以安全層是必不可少的。

使用SSL

證書管理微微復雜,代價有點高。

自行加解密

自己來搞加解密,核心在於密鑰的生成與管理,密鑰管理方式有多種,主要有這麽三種:

(1)固定密鑰

服務端和客戶端約定好壹個密鑰,同時約定好壹個加密算法(eg:AES ),每次客戶端im在發送前,就用約定好的算法,以及約定好的密鑰加密再傳輸,服務端收到報文後,用約定好的算法,約定好的密鑰再解密。這種方式,密鑰和算法對程序員都是透明的。

(2)壹人壹密鑰

簡單說來就是每個人的密鑰是固定的,但是每個人之間又不同,其實就是在固定密鑰的算法中包含用戶的某壹特殊屬性,比如用戶uid、手機號、qq號等。

(3)動態密鑰(壹session壹密鑰)

動態密鑰,壹Session壹密鑰的安全性更高,每次會話前協商密鑰。密鑰協商的過程要經過2次非對稱密鑰的隨機生成,1次對稱加密密鑰的隨機生成,具體詳情這裏不展開,有興趣的同學可以看下SSL密鑰協商額過程。

IM傳輸層協議設計

可選的協議有TCP和UDP。現在的IM傳輸層基本都是使用TCP,有了epoll等技術後,多連接就不是瓶頸了,單機幾十萬鏈接沒什麽問題。

  • 上一篇:源代碼分析軟件的價格
  • 下一篇:表示市場是否處於超買或超賣狀況的技術指標是( )
  • copyright 2024編程學習大全網