[BLE] 藍牙的通訊封包格式與 ARQ 機制
參考資料: https://www.cnblogs.com/iini/p/8977806.html http://leconiot.com/download/cc2640r2f/ble_stack_app/app_examples/exchange_mtu/exchange_mtu.html http://www.wowotech.net/bluetooth/le_encryption.html https://www.cnblogs.com/hzl6255/p/4127138.html http://www.wowotech.net/bluetooth/ble_connection.html https://www.novelbits.io/bluetooth-5-speed-maximum-throughput/ 在藍牙通訊中, 我們可以先看一下整體的封包格式, 在這一篇文章中, 我們將先看到 PDU 這一層, 之後若有時間, 會繼續說明 L2CAP 和 ATT 的機制. 在 BLE 中, 基本的通訊單元稱為 PDU (Protocol Data Unit), 如下圖所示: 其中, Preamble 是用以辨別封包的開始, 大小為 8 個 bits, 分成兩種型態: 01010101, 10101010 Access Address, 則根據廣播封包或是通訊封包而不同, 廣播封包的位址固定為: 0x8E89BED6, 通訊封包則根據建立連線的對象而改變. CRC 則是用以保護 PDU 的資料傳輸. 在這篇文章中, 我們先專注在通訊封包的格式, 進入 PDU 封包後, 我們可以列出更詳細的資料格式: 其中, header 一共有 16 bits, 前 8 個 bits 的資訊為 LL header (Link Layer), 後 8 個 bits 為資料長度, 詳細說明如下: LLID (2): 指示接下來的封包為 L2CAP, 或是 LL control PDU NMSN (1), SN (1), MD (1): BLE 的 ARQ 和 Flow Control 機制 (之後會說明) RFU (3): 保留字元 (Reserved for Future U