1. 程式人生 > >一分鐘讀懂低功耗藍芽(BLE)MTU交換資料包

一分鐘讀懂低功耗藍芽(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 Exchange.png
 
  * 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)
   完整資料(以下關注藍色標註部分)
    MTU request complete.png 
    1)  存取地址
    Access Address: 0xaf9a8c69
    固定為4個位元組,其值由連線請求資料包指定(詳見“一分鐘讀懂低功耗藍芽連線資料包”)

    MTU req access address.png 

   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
    MTU req header info.png 

 3) L2CAP 長度
    在BLE中,GAP,GATT,SMP 都使用L2CAP 通道將命令及資料打包送到鏈路層(LINK LAYER),L2CAP 打包過程中需要指定L2CAP的長度及通道號。
    Length: 3
    MTU req l2cap size .png 

   4) L2CAP 通道號(CID):channel ID
   CID: Attribute Protocol (0x0004)
    MTU req l2cap channel ID.png    

    5) ATT 命令
     標準發下:
      MTU REQUEST ATT FORMAT.png      
     實際資料包:
    Opcode: Exchange MTU Request (0x02)
    0... .... = Authentication Signature: False
    .0.. .... = Command: False
    ..00 0010 = Method: Exchange MTU Request (0x02)
      MTU req l2cap opcode.png     


   6) MTU 值 (請求的值)
    Client Rx MTU: 185
    MTU req l2cap MTU value.png 
   
   7) CRC 
    MTU req CRC.png 

4. MTU 響應(RESPONSE)
    完整資料包:
    mtu rsp complete.png 
    1) 存取地址
    Access Address: 0xaf9a8c69
    固定為4個位元組,其值由連線請求資料包指定(詳見“一分鐘讀懂低功耗藍芽連線資料包”)
    mtu rsp access address.png 

    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
    mtu rsp header info.png 

    3. L2CAP 長度
        解釋同(請求包)。
        Length: 3
       mtu rsp l2cap size.png 

    4. L2CAP 通道號
        解釋同(請求包)。
       CID: Attribute Protocol (0x0004)
       mtu rsp l2cap channel ID.png 

    5. ATT 命令
       標準:
       MTU Response ATT FORMAT.png 

       例項:
       Opcode: Exchange MTU Response (0x03)    0... .... = Authentication Signature: False
    .0.. .... = Command: False
    ..00 0011 = Method: Exchange MTU Response (0x03)
       mtu rsp opcode.png 

     6) MTU 值
      Server Rx MTU: 23
       mtu rsp mtu value.png 

      7)CRC
       CRC: 0xf4767e
    [Expert Info (Note/Checksum): CRC unchecked, not all data available]
       mtu rsp crc.png