一分鐘讀懂低功耗藍牙(BLE)MTU交換數據包

1.概述

??* MTU: 最大傳輸單元(MAXIMUM TRANSMISSION UNIT) , 指在一個PDU (Protocol Data Unit: 協議數據單元,在一個傳輸單元中的有效傳輸數

據)能夠傳輸的最大數據量(多少字節可以一次性傳輸到對方)。

??* MTU 交換是為了在主從雙方設置一個PDU中最大能夠交換的數據量,通過MTU的交換和雙方確認(注意這個MTU是不可以協商的,只是通知對方,雙方在知道對方的極限后會選擇一個較小的值作為以后的MTU,比如說,主設備發出一個150個字節的MTU請求,但是從設備回應MTU是23字節,那么今后雙方要以較小的值23字節作為以后的MTU),主從雙方約定每次在做數據傳輸時不超過這個最大數據單元

? ? MTU交換通常發生在主從雙方建立連接關系后(參見“一分鐘讀懂低功耗藍牙連接數據包“”)

? ? 做個對比就可以知道BLE MTU 比較小(不過新的BLE 標準MTU 已經大幅提升,詳見即將發表在VIEWTOOL BBS上的后續文章)。

??****************************************************************“*************************? ?? ?

? ?以太網:1500

??IEEE 802.3/802.2: 1492

??X.25: 576

??BLE: 23? ?=> 這就是為什么WIFI 可以用于傳輸視頻,傳統藍牙(BT)可以傳輸音頻,而低功耗藍牙(BTLE 或者BLE)只能夠傳輸控制數據的原因了。

??******************************************************************************************

??* MTU 交換命令:屬于ATT 命令

??* MTU 交換過程:如下圖


??* MTU 兩個命令(“MTU 請求”及“MTU 響應”)詳解如下(見“4”)

2.關鍵字:Hollong BLE 偵聽儀,低功耗藍牙嗅探器, BLE 分析儀,BLE 數據抓取

??Keyword: Hollong BLE Sniffer, BLE Data Analyzer,BLE Capture

3.抓取數據包的準備工作

??* 硬件:一個BLE設備(從設備)及對應的主設備(如智能手機里面的相關應用程序,或者通用BLE 工具軟件);

? ?? ?? ???一臺HOLLONG BLE SNIFFER (Hollong BLE 偵聽儀)

??* 軟件:Hollong 藍牙4.0/4.1 BLE協議監控分析儀 軟件, 使用本軟件可以打開本文中的數據包附件,進而可以更加方便及更加全面地了解更多細節(包括最全面的數據及數據解析)

? ?? ???下載鏈接:

?http://www.viewtool.com/index.ph ... hollong-4-0-4-1-ble

4.?MTU 請求(REQEUST)

? ?完整數據(以下關注藍色標注部分)


? ? 1)??存取地址

? ? Access Address: 0xaf9a8c69

? ? 固定為4個字節,其值由連接請求數據包指定(詳見“一分鐘讀懂低功耗藍牙連接數據包”)


? ?2) 頭信息

 Data Header: 0x0706? ? 000. .... = RFU: 0

? ? ...0 .... = More Data: False

? ? .... 0... = Sequence Number: 0

? ? .... .1.. = Next Expected Sequence Number: 1

? ? .... ..10 = LLID: Start of an L2CAP message or a complete L2CAP message with no fragmentation (0x2)

? ? 000. .... = RFU: 0

? ? ...0 0111 = Length: 7


 3) L2CAP 長度

? ? 在BLE中,GAP,GATT,SMP 都使用L2CAP 通道將命令及數據打包送到鏈路層(LINK LAYER),L2CAP 打包過程中需要指定L2CAP的長度及通道號。

? ? Length: 3


? ?4) L2CAP 通道號(CID):channel ID

? ?CID: Attribute Protocol (0x0004)


? ? 5) ATT 命令

? ???標準發下:


? ???實際數據包:

? ? Opcode: Exchange MTU Request (0x02)

? ? 0... .... = Authentication Signature: False

? ? .0.. .... = Command: False

? ? ..00 0010 = Method: Exchange MTU Request (0x02)


? ?6) MTU 值 (請求的值)

? ? Client Rx MTU: 185



7) CRC?


4.?MTU 響應(RESPONSE)

? ? 完整數據包:


? ? 1) 存取地址

? ? Access Address: 0xaf9a8c69

? ? 固定為4個字節,其值由連接請求數據包指定(詳見“一分鐘讀懂低功耗藍牙連接數據包”)


? ? 2. 頭信息

? ? Data Header: 0x0712? ? 000. .... = RFU: 0

? ? ...1 .... = More Data: True

? ? .... 0... = Sequence Number: 0

? ? .... .0.. = Next Expected Sequence Number: 0

? ? .... ..10 = LLID: Start of an L2CAP message or a complete L2CAP message with no fragmentation (0x2)

? ? 000. .... = RFU: 0

? ? ...0 0111 = Length: 7


? ? 3. L2CAP 長度

? ?? ???解釋同(請求包)。

? ?? ???Length: 3


? ? 4. L2CAP 通道號

? ?? ???解釋同(請求包)。

? ?? ? CID: Attribute Protocol (0x0004)


? ? 5. ATT 命令

? ?? ? 標準:


? ?? ? 實例:

? ?? ? Opcode: Exchange MTU Response (0x03)? ? 0... .... = Authentication Signature: False

? ? .0.. .... = Command: False

? ? ..00 0011 = Method: Exchange MTU Response (0x03)


? ???6) MTU 值

? ?? ?Server Rx MTU: 23


? ?? ?7)CRC

? ?? ? CRC: 0xf4767e

? ? [Expert Info (Note/Checksum): CRC unchecked, not all data available]


?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.概述 BLE 連接過程中有三個重要的數據包:SCAN_REQ, SCAN_RSP 和 CONNECT_REQ...
    VT緯圖物聯閱讀 2,127評論 0 2
  • 我是一本書,是一本不能用封面吸引人的書,也許只有我自己知道書的內容有多么精彩,但人們只看了我平淡無奇的封面卻望而卻...
    從容相伴閱讀 322評論 2 6
  • 「四」不是穿了西裝就能變成紳士,不是生了孩子就會做父母。 面對一個未成年人,成年人最大的文明所在,就是站在他的角度...
    林小舟閱讀 124評論 0 1