藍(lan)牙(ya)基礎(四(si)):藍(lan)牙(ya)狀態、角色、地址與網(wang)絡結構
liwen01 2025.10.01
前言
在一個筆(bi)記本電腦上,它的(de)藍(lan)牙(ya)可(ke)以同(tong)時連接:手機(ji),藍(lan)牙(ya)耳機(ji)、音響、鍵盤、鼠標、打印機(ji)等(deng)等(deng)外設。
這(zhe)些設備(bei)有(you)些是(shi) BR/EDR, 有(you)些是(shi)BLE,所以筆記本電(dian)腦的藍牙(ya)肯定(ding)是(shi)雙模藍牙(ya),能同時支持BR/EDR 和 BLE 設備(bei)。
在這個由多個藍牙設備組成的網絡中,它們處于什么狀態,各自的角色是什么,它們又是通過什么來區分彼此?
實際(ji)在不同的(de)藍牙版本中,它(ta)們的(de)定義(yi)有很(hen)大的(de)變(bian)化(hua)。
在查看藍牙相關資料時(shi),有些(xie)概念容易(yi)被搞混(hun),也(ye)常常造(zao)成理解(jie)上(shang)的(de)偏(pian)差(cha)。
(一)藍牙狀態
BR/EDR 與 BLE 使用不同(tong)的控制器,所以(yi)它們的鏈路(lu)控制器的狀態也存在(zai)明顯差異。
(1)經典藍牙狀態
STANDBY(待機狀態):設備(bei)默認狀(zhuang)態(tai),在該狀(zhuang)態(tai)下設備(bei)沒有發(fa)出任何藍牙射頻信號,所以它(ta)(ta)功耗(hao)最低(di)。在此(ci)狀(zhuang)態(tai)下,它(ta)(ta)只是在等(deng)待外部命(ming)令觸發(fa)狀(zhuang)態(tai)切換。
INQUIRY(查詢狀態):用于主動查找附近的藍牙設備,設備發送 Inquiry 請求,目標設備在 Inquiry Scan 狀(zhuang)態中會響應(ying)。
INQUIRY SCAN(查詢掃描狀態):設備(bei)周期性監聽查(cha)詢請求(Inquiry packets),如果收到合法的 Inquiry 請求,設備(bei)會回應其(qi)地址和信息(xi)。
PAGE(尋呼狀態):發起連接使用的狀態,發起方已知目標設備的地址,發送 Page(尋呼包)嘗試建立連接、Page 包中包含目(mu)標設備(bei)(bei)的(de) BD_ADDR、重復發送(song)尋呼(hu)直到目(mu)標設備(bei)(bei)響應或超時。
PAGE SCAN(尋呼掃描狀態):目標設備(bei)在該狀(zhuang)態中監聽尋呼包,如果接收(shou)到尋呼包,進入配對(dui)流程并(bing)建(jian)立連接。
SYNCHRONIZATION TRAIN(同步訓練狀態):發(fa)送一組同步包,讓對方設(she)備(bei)更容易鎖定頻道(dao),減(jian)少設(she)備(bei)發(fa)現時間(jian)。
SYNCHRONIZATION SCAN(同步掃描狀態):設備監(jian)聽并鎖定(ding)同步(bu)訓練(lian)包,成(cheng)功鎖定(ding)后進入下(xia)一步(bu)操(cao)作(zuo)(如連(lian)接(jie)、配對)。
CONNECTION(連接狀態):雙方(fang)已經完(wan)成握手(Paging)并建立(li)同步,可進行數據傳輸(shu),包括 L2CAP 數據包、控(kong)制包、音頻數據等。
(2)經典藍牙 Page 狀態
使用 Wireshark 搭配 Bluetooth Dongle 抓取的 HCI 數據包,你會發現:沒有 Page 階段的數據包,因為它發生(sheng)在控制(zhi)器內(nei)部的射頻層(Baseband + LMP)。
你(ni)在(zai) Wireshark 的 HCI 視圖中只能看到:
Sent: Create Connection
Event: Connection Complete
中間的 page 流程是控制器內部完成的,這部分數據不需要經過 Wireshark,所以也就(jiu)顯(xian)示(shi)不(bu)了。
(3)經典藍牙 CONNECTION 子模式
它們的關系(xi)可以簡化為(wei)下面關系(xi):
Connection State
├── Active Mode
│ ├── Sniff Mode
│ ├── Hold Mode
│ └── Park Mode
└── Connectionless Peripheral Broadcast Mode
注意:在藍牙核心規范V5.3中,Active Mode 模式下已經沒有 Park Mode 這個模式了。
Active Mode(活動模式):Active Mode 是(shi)默認模式。在(zai)(zai)此(ci)模式中,設(she)備(從機(ji))保持同步并始(shi)終(zhong)監(jian)聽(ting)主(zhu)(zhu)(zhu)機(ji)(Master)的 Poll 包。主(zhu)(zhu)(zhu)從設(she)備之間(jian)的通信是(shi)持續的、周期(qi)性的。從機(ji)必須在(zai)(zai)每(mei)個主(zhu)(zhu)(zhu)機(ji) Poll 時間(jian)點監(jian)聽(ting),功耗較(jiao)高(gao)。
Sniff Mode(嗅探模式):Sniff 模式(shi)是一種低功耗(hao)模式(shi)。從機(ji)不(bu)再持續監聽(ting),而是按照約定(ding)的 Sniff 間隔(T_sniff) 定(ding)期監聽(ting)主機(ji)。其余時間從機(ji)關閉接收機(ji)進(jin)入休眠。在 Sniff 窗口期間,從機(ji)能收發數據;窗口外從機(ji)不(bu)響應主機(ji)。
例如耳機在待機播放時段,保持低功耗但仍能響應主機的控制命令。優點是節能,缺點是通信延遲變高
Hold Mode(保持模式):Hold 模式也(ye)是低功耗模式的(de)一種,但與(yu) Sniff 不同。從機在(zai)指定時(shi)間內完(wan)全不參與(yu)連接(jie)通(tong)信;在(zai) Hold 時(shi)間結束后,再恢(hui)復到 Active 模式。Hold 模式通(tong)常在(zai)從機需要執行其他任務(如掃(sao)描、建立(li)新連接(jie)、或(huo)暫時(shi)關閉射頻)時(shi)使(shi)用
比如:一個設(she)備(bei)可(ke)能暫時掛(gua)起當前連接以執行頁面掃(sao)描操作(zuo)(Page Scan)
(4)BLE 藍牙狀態
BLE 狀態機以 Standby 為中心(xin),其他狀態(tai)圍繞它轉換(huan),設計更為節能與高效(xiao)。
Standby(待機)狀態 :BLE默認狀態為 Standby,不進行任何廣播、掃描或連接操作,該模式下功耗最低。它是所有狀態的中心樞紐,可跳轉到任何其他狀態。
Advertising(廣播)狀態:設備周期性發送廣播包(ADV),告訴周圍設備“我在這兒”。
Scanning(掃描)狀態 :設備監(jian)聽并接收廣(guang)播(bo)(bo)包,可選擇性回應(ying)廣(guang)播(bo)(bo)設備,實(shi)現設備發現(如手機(ji)找藍(lan)牙(ya)耳機(ji))。
Initiating(發起連接)狀態:主設備(Central)在此狀態下發起連接請求給廣(guang)播設備(Peripheral)。
Connection(連接)狀態:設備之間建立了一個正式(shi)的連接(jie)(jie)。使用數據(ju)通(tong)(tong)道進行定時(shi)通(tong)(tong)信,支持(chi)讀寫服務、通(tong)(tong)知、長連接(jie)(jie)等操作。
Synchronization(同步)狀態:用于周期性廣播同步(如(ru)廣(guang)播音(yin)頻);設備不(bu)建立連接,僅(jin)同步獲取(qu)廣(guang)播內容(rong)。
Isochronous Broadcasting(等時廣播)狀態:BLE 5.2 引(yin)入的狀(zhuang)態,支持(chi)等時性數據(ju)廣播(bo)(如(ru) LE Audio);廣播(bo)音頻數據(ju)流,無需(xu)連(lian)接(jie)即可接(jie)收;
(5)經典藍牙與BLE藍牙狀態的區別
經典藍牙 BR/EDR更適合持續大數據量的通信(如音頻、文(wen)件傳輸);
BLE 更適合低功耗、間歇、小數據量通信,特別(bie)是物聯網設(she)備(bei);
| 特性/對比點 | 經典藍牙(BR/EDR) | BLE(低功耗藍牙) |
|---|---|---|
| 狀態機復雜性 | 更復雜,包含 Inquiry、Page 等 | 更簡潔,以 Standby 為中心的放射狀狀態圖 |
| 廣播機制 | 沒有通用廣播,需先發現、再配對 | 支持廣播和掃描機制,無需連接也能傳輸信息 |
| 連接建立過程 | 分為 Inquiry + Page 兩階段 | Advertising + Initiating 一步完成 |
| 功耗控制 | 設計為連續音頻或數據傳輸,功耗較高 | 設計為間歇通信,功耗非常低 |
| 通信角色 | Piconet 主從結構(固定主從) | Central-Peripheral 靈活切換 |
| 支持的應用 | 傳統音頻(如耳機)、數據同步等 | IoT、傳感器、手環、LE Audio 等 |
| 新特性支持 | 不支持 LE Audio 等新協議 | 支持 Periodic Advertising、Isochronous Channel 等 |
(二)藍牙角色
在不同(tong)版本和不同(tong)模式中,藍牙的角(jiao)色(se)有些混亂。一(yi)(yi)會(hui)(hui)是(shi) Master/Slave, 一(yi)(yi)會(hui)(hui)又(you)是(shi) Central/Peripheral 。
在(zai)藍牙5.2 之前,BR/EDR 控制器中(zhong)一(yi)般稱(cheng)呼為 Master/Slave,BLE 控制器中(zhong)一(yi)般稱(cheng)呼為 Central/Peripheral。
但是(shi)在藍牙(ya) 5.3 中,它們統一稱呼為 Central/Peripheral。
(1)經典藍牙角色
經典藍牙常見(jian)于:耳機、音箱、鼠標、鍵(jian)盤(pan)等(deng)
- 手機/電腦:一般做 Master(主設備),負責發起連接、控制時隙。
- 耳機/音箱/鍵盤/鼠標:一般做 Slave(從設備),等待手機/電腦來連。
(2)BLE 藍牙角色
在BLE藍牙控制(zhi)器中(zhong)(zhong),控制(zhi)器的角色有好幾個:Advertiser(廣播者)、Scanner(掃(sao)描者)、Initiator(發起者)、Central(中(zhong)(zhong)心設(she)備)、Peripheral(外設(she)設(she)備)
Advertiser(廣播者):在廣播信道上周期性發(fa)送廣告包,一般用于被(bei)發(fa)現、連接或(huo)廣播數(shu)據。
Scanner(掃描者):主動掃描廣播信道,接收廣告包。可以選擇發出 Scan Request 獲取更多信息(xi)。
Initiator(發起者):接收廣播后,主動發起連接請求的一方。一旦連接成功,就轉變為 Central。
Central(中心設備): 類(lei)似 Master,控制連(lian)接的時間和數據傳輸, 常見于(yu)手機、PC 等。
Peripheral(外設設備):被 Central 連接的一(yi)方,常(chang)見于手環、傳(chuan)感(gan)器、耳機等。
BLE藍牙 從“廣播 → 掃描 → 建鏈”過程中,角色會逐步轉化:
Advertiser → Peripheral
Scanner/Initiator → Central
(3)其它層的角色
上面那說的 Central(原 Master) / Peripheral(原 Slave)是物理層 / 鏈路層 (Controller) 里的角色。
在藍牙協議棧的不同層中(zhong),它們又有定義一些不同的角色
- Link Layer(底層鏈路角色):Central / Peripheral → 確定“誰發起連接,誰維持時鐘”
- Host 層協議(GATT/ATT/SM)角色:Client / Server → 確定“誰請求,誰提供數據”
- Profile 層(應用協議角色):Source/Sink, Host/Device, Controller/Target → 確定“誰是功能提供方,誰是功能使用方”
它們之間不是一一對應的,而是逐層映射:
- 物理連接角色(Central/Peripheral) → 決定誰主導鏈路
- 協議角色(Client/Server) → 決定誰發起請求
- 應用角色(Source/Sink 等) → 決定誰產生/消費具體業務數據
(三)藍牙地址
藍牙中設備地址 Bluetooth Device Address 與 接入地址 Access Address 是兩(liang)個完全不同的概念,但(dan)有時候它們容易(yi)被理解混亂。
(1)BD_ADDR 設備地址格式
每個藍牙設備都有一(yi)個唯一(yi)的 48 位地(di)址(6 字節(jie)),類似于以太網中的MAC 地(di)址,用(yong)于標(biao)識(shi)設備身(shen)份(fen)。
主要應用于:設備發現與連接,訪問控制(如連接白名單),通信加密中的密鑰派生。
BD_ADDR 的(de)整體格式為(wei) :藍牙設備地址(zhi) = NAP + UAP + LAP
| 字段 | 名稱 | 位數 | 說明 |
|---|---|---|---|
| NAP | Non-significant Address Part | 16 bits | 地址的高 16 位,通常表示廠商編號(OUI),由 IEEE 分配給廠商 |
| UAP | Upper Address Part | 8 bits | 地址的中間 8 位,通常用于形成 Access Code(訪問碼)時使用 |
| LAP | Lower Address Part | 24 bits | 地址的低 24 位,由設備制造商分配給設備,用于唯一標識設備 |
(2)BD_ADDR 設備地址分類
BD_ADDR
├── Public Device Address (公共地址)
│ └── 來源:IEEE 注冊的 EUI-48(廠家分配)
│ └── 作用:全局唯一,適用于 BR/EDR 或 BLE
│
└── Random Device Address (隨機地址)
├── Static Random Address (靜態隨機地址)
├── Private Resolvable Address (RPA,可解析私有地址)
└── Private Non-Resolvable Address (NRPA,不可解析私有地址)
Public Device Address(公共地址):結構(gou)與普通以太網 MAC 地址完(wan)全(quan)一致,它由藍(lan)牙設備制造(zao)商在(zai)出廠(chang)時燒錄進控(kong)制器(Controller),在(zai)全(quan)世界(jie)范圍內(nei)唯一。
傳統藍牙(ya) BR/EDR(例(li)如音箱、耳機等)幾乎都使(shi)用 Public Address,設備(bei)在廣播時直接使(shi)用 BD_ADDR 作(zuo)為標識(shi),可用于長期(qi)綁(bang)定(bonding)和身份識(shi)別。
Random Device Address(隨機地址):因為(wei)固定的 BD_ADDR 會暴露設備身份(例如 MAC 地(di)址可被追蹤(zong)),所以 BLE 支持使用隨機地(di)址。隨機地(di)址又分為(wei)三(san)大(da)類(lei)。
(A)Static Random Address(靜態隨機地址):
在設備啟(qi)(qi)動時(shi)隨機生成,在一次啟(qi)(qi)動周(zhou)期內保持不(bu)變(bian),通(tong)常用于無(wu)隱(yin)私要求(qiu)但(dan)又(you)不(bu)想(xiang)使用公(gong)共地(di)址(zhi)的場景。比如(ru):一些 BLE 外設(如(ru)手環、燈泡)在上(shang)電后廣播(bo)自己的隨機固定地(di)址(zhi)。
(B)Private Resolvable Address(RPA,可解析私有地址):
周期性變化(hua)(例如每 15 分鐘更(geng)新(xin)一次),地址(zhi)高2位為01;它的(de)變化(hua)過程可被“已配對(dui)的(de)設備”解析。比(bi)如:手機與手環已配對(dui)后,即使地址(zhi)變化(hua),仍能識別對(dui)方(fang)。
(C) Private Non-Resolvable Address(NRPA,不可解析私有地址):
周期(qi)性(xing)變化,每(mei)次(ci)廣播(bo)(bo)可能(neng)都不(bu)同,完全無(wu)法解析(無(wu) IRK 參與(yu)),地址高2位(wei)為00;主要(yao)(yao)應用(yong)于一次(ci)性(xing)連接請求,或者是不(bu)需要(yao)(yao)被識別(bie)身份的設備廣播(bo)(bo)(如(ru)匿名信標)。
(3) Access Address 地址
Access Address: 是藍牙鏈路層中用于標識和同步數據包的一個 32-bit(4字節)地址。
它存在于所有藍牙物理層(PHY)數據包的包頭部分,作用類似(si)于一個(ge)“信道標(biao)識(shi)符”,幫助接(jie)(jie)收方判斷(duan)接(jie)(jie)收到的數據包屬于哪(na)個(ge)連接(jie)(jie)或廣播。
藍牙中根據通信類(lei)型不(bu)同(tong),Access Address 有兩種主(zhu)要(yao)用途:廣播信道(Advertising Channel) 和 數據信道(Data Channel)
(A)廣播信道(Advertising Channel)
所有的廣播信道都使用同一個固定的 Access Address:0x8E89BED6, 這個值在規范中是固定定義的,全球藍牙設備統一使用
它應用于:廣(guang)播包(Advertising Packet)或掃描包(Scan Request/Response)
(B)數據信道(Data Channel)
當兩個設備成功建立連接(Connection)后,Link Layer 會為該連接生成一個唯一的 Access Address。因此在連接階段的 Access Address 是專屬于該連接的。
(四)藍牙網絡結構
藍牙通信體系結構(主要是 BR/EDR 模式)中定義了兩種典型拓撲結構:Piconet(微微網) 和 Scatternet(散射網)
(1) Piconet(微微網)
Piconet 是藍牙設備之間通過一條共享的物理鏈路建(jian)立起來的 基本(ben)網絡單元。
在一個 Piconet 中,最多允許 8 個活躍設備同時參與通信(1 個 Central + 最多 7 個 Peripheral)
所有設備(bei)共(gong)享同一個(ge):
- 跳頻序列(Frequency Hopping Sequence)
- 時鐘參考(Clock Reference)
- 訪問碼 Access Code(由 Central 的 BD_ADDR 派生)
因此,一個 Piconet 的物理信道由(you) Central 的 BD_ADDR 和時(shi)鐘共同定義。
藍牙 BR/EDR 使(shi)用(yong)時(shi)(shi)分雙工 (TDD):每個時(shi)(shi)隙 625 μs;
Central 與 Peripheral 交替發送(song):
- 偶數時隙 → Central 發送;
- 奇數時隙 → Peripheral 響應;
這樣實現雙向(xiang)通信的(de)同步控(kong)制。
(2)Scatternet(散射網)
Scatternet 是由兩個或多個 Piconet 通過共享(xiang)設備互聯(lian) 而成的更大網(wang)絡結構。
也(ye)就是說,一個設備可以同時屬于(yu)多(duo)個 Piconet,用于(yu)橋接(jie)通(tong)信。
在 Scatternet 中:某個設備可能在一個 Piconet 中充當 Central,在另一個中充當 Peripheral;
每個 Piconet 有自己獨立的:時鐘,跳頻序列,訪問碼;
共享設備通過 時間分片(Time Sharing) 的方(fang)式在多個 Piconet 之間(jian)切(qie)換。
Scatternet 網絡它更多是一個理論拓撲結構或過渡性歷史概念,應用(yong)極少(shao)(shao),主要(yao)存(cun)在于早期研(yan)究、學術實驗(yan)和少(shao)(shao)數特種系統。
現代(dai)(dai)藍牙體系(xi)基本以 BLE 多連接和(he) Mesh 網(wang)絡取代(dai)(dai)了 Scatternet。
結尾
本章(zhang)主要介(jie)紹了藍牙(ya)的狀態、角色、地(di)址與(yu)網絡結構,這(zhe)些(xie)都(dou)是藍牙(ya)鏈(lian)路層中的知識(shi)。下一章(zhang)將(jiang)繼續介(jie)紹藍牙(ya)鏈(lian)路層的數據安全、可靠性、數據組成與(yu)處理(li)流程。
