# Bluetooth protocol stack
# Application group

# Middleware protocol group

# Transport protocol group

# Piconets & scatternets
# Piconet

- Master-slave architecture:一個設備作為主設備(Master),其他設備作為從設備(Slave)連接到主設備。主設備負責協調通信和管理從設備。
- 最多可有 7 個從設備同時連接到主設備,形成一個小型的無線網路,稱為 Piconet。
# Scatternet
- Scatternet 是由多個重疊 Piconet 組成的更大規模的無線網路。設備可以同時參與多個 Piconet,作為橋接設備(Bridge)連接不同的 Piconet。
# Inter-piconet communication
- 由於 Bluetooth 設備可以同時參與多個 Piconet,這些設備可以在不同的 Piconet 之間轉發數據,實現跨 Piconet 的通信。
- 要加入新的 Piconet,設備需要進行重新同步
- 要離開 Piconet,設備需要通知主設備
- Master-slave switching:設備可以在不同的 Piconet 中切換主從角色,以適應不同的通信需求。
# Bluetooth communication states
# Inquiry & Page states
Inquiry 和 page 狀態都可以幫 master 邀請 slave 加入 piconet,但兩者都不知道彼此的 frequency hopping pattern
- 他們可以送 frequency hopping synchronization (FHS) 包來交換資訊
- 在連接狀態前,所有設備隨 slave 的 frequency hopping pattern。連接狀態後,master 和 slave 都會使用 master 的 frequency hopping pattern
# Detailed flowchart
# Four modes of a slave
- Active mode:從設備處於活動狀態,能夠立即響應主設備的通信請求。
- Hold mode:從設備暫時停止通信,但保持與主設備的連接
- 當在省電模式下,slave 可以做如 scanning, paging, inquiring, or attending
- Sniff mode:Slave 只在特定的時間間隔內響應主設備的通信請求,以節省電力
- Park mode:從設備進入休眠狀態,暫時不參與 Piconet,但保持與主設備的連接
- 最低功耗模式
- Parked slave 規律的聽取 beacon 的訊號
- beacon channel:主設備定期發送 beacon 信號,從設備通過監聽 beacon 信號來保持與主設備的同步。
- 可以讓 master 有多於 7 個 slaves
# Bluetooth links, packet format, and security
藍芽鏈路類型:
- Synchronous Connection-Oriented (SCO) link:主要用於傳輸語音數據,提供固定的帶寬和低延遲。
- Asynchronous Connection-Less (ACL) link:主要用於傳輸數據,提供更高的帶寬和靈活的通信方式。
# SCO link
於 master 和一個 slave 之間建立
- point-to-point
- full-diplex(可以同時傳輸和接收數據)
- 一旦 SCO link 建立後會一直維持直到 master 主動釋放
- SCO packets 永遠不會被重傳,因為它們主要用於語音數據,對延遲敏感
# ACL link
於 master 和所有 slaves 之間建立
- point-to-multipoint
- momentary
- ACL 只能用 SCO link 未使用的頻道傳輸數據
- 資料的再傳是允許的,並且有重傳機制來確保數據的可靠傳輸
# Bluetooth packet structure
# Access code
用於 timing synchronization, inquiry, and paging
Access code 分為三種類型:
- Channel Access Code (CAC):辨認 piconet
- Device Access Code (DAC):用 paging 和 paging response 這些通訊的程序
- Inquiry Access Code (IAC):用於 inquiry 程序
- General Inquiry Access Code (GIAC):所有設備都能識別的 IAC
- Limited Inquiry Access Code (LIAC):只有特定類型的設備能識別的 IAC
# Security in Bluetooth
- Authentication:確認設備的身份,確保通信雙方是合法的。
- Confidentiality:保護數據的機密性,防止未經授權的訪問。
- Authorization:控制設備對資源的訪問權限。
- 在藍芽中,authentication 和 encryption 是由 Link Manager 所提供的
- 在 authentication 後,radio 會在用在適合 encryption key 的長度
- Personal Identification Number (PIN) 是為了 authentication 而使用的密碼,被轉成為一個 128-bit 的密鑰,並且在設備之間共享。藍芽用 PIN codes 建立裝置間的信任關係,並且在通信過程中使用加密來保護數據的安全性。
- FHSS 也提供了一定程度的安全性
- 因為以 pseudo-random hopping sequence 在 79 個頻道之間跳頻,攻擊者很難預測下一個頻道的位置,從而增加了攔截和干擾的難度。



