TLV通信協議


基礎

TLV協議是BER編碼的一種,全稱是Tag、length、value。該協議簡單高效,能適用於各種通信場景,且具有良好的可擴展性。TLV協議的基本格式如下:

 

其中,Tag占2個字節,是報文的唯一標識;Length占4個字節,表示Value字段的長度;Value字段的數據是需要傳輸的數據,長度由Length字段表示。

簡單型TLV

簡單型TLV結構,Value字段的具體內容由一個個定長的字段表示,如第一個字段占多少字節,第二個字段占多少個字節,都是固定長度,不會改變。因此,簡單型TLV結構的Length一般也固定,不同的結構通過Tag進行區分,且字段個數的多少沒有限制,具有很強的擴展性。

混合型TLV

混合型TLV結構,Value字段的具體內容是另一個TLV結構,如此遞歸,沒有任何限制,如下所示:

其中需要注意,外層TLV結構的length字段一定是里層TLV結構的總長度,這樣才符合TLV的基本定義。

循環型TLV

循環型TLV結構,Value字段的具體內容是由多個結構相同的數據組成,因此為了說明循環的個數,需要定義一個表示循環數的字段,其格式如下:

 

其中,LoopNum字段表示循環的個數,其后是一個個結構相同的數據順序排列。該結構是針對數據格式相同的報文設計,需要注意,循環的個數一定要匹配后面數據的個數。

指針型TLV

指針型TLV結構,又稱數組型TLV,Value字段中的某一個子字段的長度不定,需要根據對應的length字段的值確定,因此無法提前定義,所以使用指針的方式進行處理。指針的處理同樣可以解決變長數組的問題,因此二者的處理方式相同。

總結

 上述所有的TLV結構都可以相互嵌套遞歸,沒有任何的限制,因此具有非常好的擴展性。唯一的遺憾是沒有校驗字段,后期可以添加一個校驗字段,以保障數據傳輸過程中的正確性和穩定性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM