簡體   English   中英

BLE:MTU與最大特征尺寸之間的關系?

[英]BLE: Relationship between MTU and maximum characteristic size?

如何找出藍牙低功耗(BLE)中MTU與最大特征尺寸之間的關系?

我有一個運行'echo'程序的BLE開發板 - 所以不管收到什么,它都會立即回復。

在我的Android設備上,如果我請求一個247字節(成功)的MTU然后寫一個247字節的特性,它將作為兩個數據包發送:一個包含242個字節,另一個包含5個字節。 任何嘗試寫入超過244個字節的特性都會導致2個數據包 - 第一個包含242個字節,第二個包含剩余的字節。 不知道為什么第一個數據包長242個字節而不是244個,但它確實存在。

相反,如果我請求一個100字節的MTU,則會發生同樣的事情,但是當特性超過97字節長時,數據包會被分割,而第一個數據包總是95字節長。

所以很明顯,在這個特定的Android設備上,最大數據包長度比MTU值短3個字節。 我在iOS上看過有關MTU的頁面,其中數據包長度比MTU值短3個字節。

在所有移動設備和所有BLE實施中,我保證MTU和最大特征長度之間的差異將是3個字節嗎?

幾乎。 ATT頭由一個字節操作碼和兩個字節組成,用於ATT句柄。 如果使用“寫長特征值”,則還有一個雙字節偏移參數。 如果您使用“沒有響應的簽名寫入”過程(沒有人使用,幾乎沒有堆棧支持),那么還有一個12字節的簽名。

另請注意,最大特征長度為512字節。 但是,允許的最大MTU為65535字節。 無論你的MTU有多大,你都不能寫出大於512字節的特征值。

如果您對ATT協議的低級細節感興趣,可以通過https://www.bluetooth.com/specifications/bluetooth-core-specification,Vol 3 Part F閱讀藍牙核心規范。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM