1. 程式人生 > 其它 >一套典型的IM通訊協議設計詳解

一套典型的IM通訊協議設計詳解

本文要談的IM通訊協議指的是應用層通訊“語言”,並非指傳輸層協議(如TCP、UDP)。IM通訊協議的制定是IM開發中起點,也是貫穿設計、開發、運維始終的核心所在,通訊協議設計的好壞,直接影響後緒環節的使用者體驗(資料流量、耗電量、通訊速度)、相容性(新老版本的無縫融合)、擴充套件性(後緒的版本升級怎麼辦)等,是個基礎且極其重要的工作之一。本文將以理論聯絡實際的方式,詳細講解一套典型IM的通訊協議設計的方方面面。

IM通訊協議的分層設計

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

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

(1)語法:即資料與控制資訊的結構或格式

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

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

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

即時通訊開發購買諮詢

IM安全層協議設計

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

1使用SSL

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

2自行加解密

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

(1)固定金鑰

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

(2)一人一金鑰

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

(3)動態金鑰(一session一金鑰)

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