文本協議與二進位協議的選擇

來源:互聯網
上載者:User

文本協議與二進位協議的選擇
網路通訊協定標準定義是這樣的:   為電腦網路中進行資料交換而建立的規則、標準或約定的集合。   網路通訊協定至少包括三要素:   文法:文法是使用者資料與控制資訊的結構與格式,以及資料出現的順序。   語義:解釋控制資訊每個部分的意義。它規定了需要發出何種控制資訊,以及完成的動作與做出什麼樣的響應。   時序:時序是對事件發生順序的詳細說明。   人們形象地把這三個要素描述為:語義表示要做什麼,文法表示要怎麼做,時序表示做的順序。 通俗地說,協議就是通訊雙方能夠理解的一種資料格式。 在進行網路開發中,文本協議和二進位協議是我們最常用的兩種。往往要根據這兩種協議的特點進行選擇,那麼我們先來看下這兩種協議分別具有什麼特點。 文本協議文本協議一般是由一串ACSII字元組成的資料,這些字元包括數字,大小寫字母、百分比符號,還有斷行符號(\r),換行(\n)以及空格等等。 文本協議設計的目的就是方便人們理解,讀懂。所以,協議中通常會加入一些特殊字元用於分隔,比如如下資料: !set chl 003# 其中,以!標識命令的開始,#標識命令結束,空格用來分隔命令欄位,雖然我們不知道這條命令具體幹什麼,但通過字面我們大致知道可能是設定(set)某一個參數(chl)值為003,這樣在我們進行調試的時候,可以快速準確地看到當時發生了什麼,更好地解決問題。 但為了便於解析,文本協議不得不添加一些冗餘的字元用於分隔命令,降低了其傳輸的效率;而且只適於傳輸文本,很難嵌入其他資料,比如一張圖片。 二進位協議二進位協議就是一串位元組流,通常包括訊息頭(header)和訊息體(body),訊息頭的長度固定,並且訊息頭包括了訊息體的長度。這樣就能夠從資料流中解析出一個完整的位元據。如下是一個典型的二進位協議:   其中,Guide用於標識協議起始,Length是訊息體Data的長度,為了資料完整性,還會加上相應的校正(DataCRC,HeaderCRC);Data中又分為命令字(CMD),和命令內容。命令字是雙方協議文檔中規定好的,比如0x01代表登入,0x02代表登出等,一般資料欄位的長度也是固定的。又因為長度的固定,所以少了冗餘資料,傳輸效率較高。   總結綜上,我們大致總結文本協議和二進位協議的優缺點: 文本協議,直觀、描述性強,容易理解,便於調試,缺點就是冗餘資料較多,不適宜傳輸二進位檔案(比如:圖片等),解析複雜(需要進行字串比較); 二進位協議,沒有冗餘欄位,傳輸高效,方便解析(固定長度,並且可以直接比較位元組),缺點就是定義的比較死,哪個位置有哪些東西,是什麼意義是定義死的,情境單一。 所以, 1. 如果想要高效傳輸,比如物聯網中收集感應器資料,使用二進位協議 2. 如果想要便於調試,比如使用telnet就能當用戶端用,可使用文本協議 3. 如果命令較少,比如即時通訊軟體,可以使用文本協議 4. 位元據的難理解性,自然加密,對資料安全有一定要求的可以使用二進位協議 等等。 總的來說,這是一個平衡的過程,要看具體項目的需要。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.