1. 程式人生 > >如何設計兩個系統之間的通訊協議

如何設計兩個系統之間的通訊協議

 當需要進行網路通訊時,要想讓雙方識別對方,就涉及對協議的設計。那麼
在具體專案中,如何設計協議呢?或者如何設計出較高效的協議?來滿足專案的
要求呢?

     一般來說,一個基本的資料包協議需要以下部分
1. 協議的標識
2. 協議版本號
3. 協議包的序號
4. 協議包的發出時間
5. 協議包的型別

-------------------

6. 協議包的資料長度
7. 資料

-------------------
8. 校驗碼
9. 結束符

上面的9點中,第一個橫線上的是包頭部分,對於每個資料包都是
一樣的,但對於後面的6,7跟具體的包有關,這部分是不同的。
下面的8.9也是相同的。

下面繼續說明6, 7兩點的設計辦法。

如果協議包的每種型別下面沒有更多的分類,那麼,資料這部分無需再設計
只要一個值即可,但情況往往不是那麼簡單,情況如下
(1)如果資料也有多種型別,那麼資料部分得再加上一個型別標號,
(2)如果資料同時有多個,那麼資料部分必須分成二部分,一部分表明其資料
個數,後面再跟多個數據個體。

對於MD5加密,它是對任意長的位元組串進行運算,產生一定長的大整數,
它的長度是32個位元組,128位。
MD5廣泛用在數字簽名中,及使用者驗證中
數字簽名的應用比如,在下載時,會附帶一個.md5,裡面有一個32個字元,
這就是此下載檔案的md5值,
下載者可將此檔案進行md5運算,看其值是否等於.md5裡的內容。

使用者驗證的例子比如.
將登入名計算成一個md5大整數,
當用戶登入時,將此時的登入名用md5演算法運算一下,看其值與md5是否相等。


---------------------------------
例子:設計一個傳遞室內溫度,與 空氣含氧量的協議
首先
1, 2, 3, 4, 點好設計,照搬即可, 那麼5的型別,此處有二個,即溫度或
者空氣含氧量, 其型別有二種0xC1, 0xC2

6資料的長度與7資料內容有關,7資料內容可以是獲取溫度時間與溫度值,
也可以是獲取時間與空氣含氧量。

8, 9 照搬即可。