藍牙協議簡介


本文來自:https://blog.csdn.net/u010783226/article/details/115904448

一、Bluetooth
(一)、藍牙分類

從左到右依次為:經典藍牙(BR/EDR)、雙模藍牙(同時支持BR/EDR/LE)和低功耗藍牙(BLE)。其中經典藍牙和低功耗藍牙互不兼容。
其實看結構也可以看出雙模藍牙是經典藍牙和低功耗藍牙的合集。

(二)、藍牙原理及應用

1、工作方式

藍牙技術                                                                                                   拓撲結構
基礎率BR(Basic Rate)/增強數據率EDR(Enhanced Data Rate)      1:1
低耗能LE(Low Energy)                                                                        1:1  1:n  n:n


2、應用
涵蓋的領域有汽車、消費類電子產品、家居自動化、醫療和保健、手機、計算機與外設、可穿戴設備、運動和健身、零售和位置導向式服務等。

(三)、發展歷史


(四)、藍牙協議堆棧
藍牙協議堆棧依照其功能可分四層:
1、核心協議層(HCI、LMP、L2CAP、SDP)

協議           全稱                                                                譯名                                               作用
LMP        Link Manager Protocol                                     鏈路管理協議                         用於設備間建立連接,它負責鏈路的建立、認證和配置
HCI         Host Controller interface                                   控制器接口                            控制器和鏈路管理器提供命令接口,允許訪問硬件狀態和控制寄存器
SDP        Service Discovery Protocol                               服務發現協議                         允許設備發現其他設備提供的服務及其相關參數
L2CAP    Logical Link Control and Adaptation Protocol   邏輯鏈路控制和適配協議          兩個使用不同的更高級協議的設備之間的多路傳輸的多個邏輯連接。提供空中數據包的分割和重組。

關於L2CAP協議的部分協議:

協議                                                                                                        譯名                                                                                                作用
ERTM       Enhanced Retransmission Mode                                 增強型重傳模式(附加的L2CAP模式)                                                 提供可靠的L2CAP通道
SM           Stream Mode                                                                 流模式(附加的L2CAP模式)                                                              沒有重傳和流控制,提供不可靠的L2CAP通道
AVCTP     Audio/Video Control Transport Protocol                       音頻/視頻控制傳輸協議(通過L2CAP傳輸AV/C指令)                             通過L2CAP通道由遠程控制規范去發送AV/C指令
AVDTP     Audio /Video Distribution Transport Protocol                音頻/視頻分發傳輸協議(通過L2CAP向立體聲耳機傳輸音樂文件)    通過L2CAP通道由高級音頻分發規范將音樂傳輸到立體聲耳機

2、電纜替代協議層(RFCOMM)

協議                    全稱                                               譯名                           作用
RFCOMM    Radio Frequency Communication    串行線性仿真協議    生成虛擬串行數據流(通常用於RS-232)

3、電話傳送控制協議(TCS-BIN)

協議                   全稱                                                         譯名                     作用
TCS-BIN    Telephony Control Specification - Binary    電話控制協議     定義了用於在藍牙設備之間建立語音和數據呼叫的呼叫控制信令

4、選用協議層(PPP、TCP/IP、UDP、OBEX、WAE/WAP、IrMC、BNEP)

協議        全稱                                                                                                                                 譯名                                                                         作用
PPP      Point to Point Protocol                                                                                                   點對點通信協議                                                     用於在點對點鏈路上傳輸IP數據報的因特網標准協議
TCP/IP/UDP    Transmission Control Protocol / Internet Protocol / User Datagram Protocol    傳輸控制協議 / 互聯網絡協議 / 用戶數據報協議    TCP/IP協議套件的基礎協議
OBEX    Object Exchange                                                                                                         對象交換協議                                                           用於對象交換的會話層協議,為對象和操作表示提供模型
WAE/WAP    Wireless Application Environment / Wireless Application Protocol                    無線應用環境/無線應用協議                                         WAE為無線設備指定了一個應用程序框架,WAP是一個開放標准,為移動用戶提供對電話和信息服務的訪問
IrMC    Infrared Mobile Communication    紅外移動通信協議    定義可移動通訊終端器的交換對象功能
BNEP    Bluetooth Network Encapsulation Protocol    藍牙網絡封裝協議    在個人區域網絡配置文件中傳輸IP數據包

or


(五)、協議規范
藍牙規范(Bluetooth Profile)是指藍牙通信在那一種用途下應該使用的通信協議和相關的規范。藍牙1.1定義的profile有13個。SIG(Special Interest Group)認為藍牙設備有4個最基本的Profile:

規范    全稱    譯名    作用
GAP    General Access Profile    通用接入規范    保證不同的Bluetooth產品可以互相發現對方並建立連接
SDAP    Service Discovery Application Profile    服務發現應用規范    描述了應用程序如何使用SDP發現遠程設備上的服務
SPP    Serial Port Profile    串行端口規范    定義了如何設置虛擬串行端口及如何連接兩個藍牙設備
GOEP    General Object Exchange Profile    通用對象交換規范    可用於將對象從一個設備傳輸到另一個設備

(六)、基帶糾錯
根據報文類型的不同,個別報文可能受到錯誤校正的保護,例如1/3速率正向錯誤校正(FEC)或2/3速率正向錯誤校正(FEC)。此外,帶有CRC的數據包將被重傳,直到被自動重復請求確認為止。

(七)、建立連接
任何在可發現模式下的藍牙設備都需要發送以下信息:

設備名(Device name)
設備類型(Device class)
服務列表(List of services)
技術信息(Technical information)(設備特性,制造商,藍牙規格使用,時鍾偏移)
任何設備都可以執行查詢以查找要連接的其他設備,並且可以配置任何設備以響應此類查詢。但是,如果試圖連接的設備知道設備的地址,它總是響應直接連接的請求,並且如果請求的話會發送上面列表中顯示的信息。使用設備的服務可能需要配對或由其所有者接收,但連接本身可以由任何設備啟動和保持,直到它超出范圍。一些設備一次只能連接到一個設備,與它們連接以防其連接其他設備並出現在查詢中,直到它們從另一個設備轉到另一個設備。

每個設備都有一個唯一48位地址。然而,這些地址通常沒有在查詢中顯示。相反,使用友好的藍牙名稱,這可以由用戶設置。當另一個用戶掃描設備和配對設備列表時,會出現此名稱。在默認情況下,大多數手機都將藍牙名稱設置為手機的制造商和型號。大多數手機和筆記本電腦只顯示藍牙名稱,需要特殊程序才能獲得更多關於遠程設備的信息。(上文是我翻譯的,不理解的話可以看原文,鏈接在最下方,見諒。^^)

(八)、配對和綁定
1、動機
通過藍牙提供的許多服務可以公開私有數據或讓連接方控制藍牙設備。出於安全原因,有必要識別特定的設備,從而控制哪些設備可以連接到給定的藍牙設備。同時,藍牙設備能夠在不需要用戶干預的情況下建立連接(例如,只要在范圍內)是非常有用的。

為了解決這個沖突,藍牙使用了一個稱為綁定的過程,並通過一個稱為配對的過程生成一個綁定。配對過程通過觸發特定的請求從用戶生成一個鍵(例如,用戶顯式地請求添加一個藍牙設備),或者它被觸發時自動連接到服務,為了安全目的需要對設備進行(第一次)識別。這兩種情況分別稱為專用綁定和通用綁定。

配對通常涉及到某種程度的用戶交互。這種用戶交互確認了設備的身份。當配對成功完成時,兩個設備之間就會形成一個鍵,使得這兩個設備在未來可以相互連接,而無需重復配對過程來確認設備身份。如果有需要,用戶可以刪除綁定關系。

2、實現
在配對過程中,兩個設備通過創建一個稱為鏈接關鍵字(link key)的共享密鑰(shared secret)來建立關系。如果兩個設備存儲相同的鏈接關鍵字,則稱它們配對或者綁定。
一個只想與綁定設備通信的設備可以用密碼方式驗證另一個設備的身份,確保它與之前和它配對的設備相同。一旦鏈接關鍵字生成,設備之間經過身份驗證的異步無連接(ACL,Asynchronous Connection-Less)鏈路可能會被加密,以保護交換的數據不被竊聽。用戶可以從任意一個設備上刪除鏈接關鍵字,這將刪除設備之間的連接,因此一個設備可以為一個不再與之配對的設備存儲鏈接關鍵字。
藍牙服務通常需要加密或身份驗證,因此在允許遠程設備連接之前需要配對。一些服務,比如對象推送配置文件,選擇不顯式地要求身份驗證或加密,這樣配對就不會干擾與服務用例相關的用戶體驗。

3、配對機制
藍牙v2.1引入了安全簡單的配對機制,大大改變了配對機制。以下總結了配對機制:

(1)、遺留配對(Lagacy pairing)
僅適用於藍牙v2.0及之前版本。每個設備必須輸入PIN碼(Personal identification number),且只有雙方輸入的PIN碼相同時才會配對成功。任何16字節的UTF-8字符串都可以用作PIN碼。然而,並不是所有的設備都能輸入所有可能的PIN碼。

有限的輸入設備:e.g. 藍牙免提耳機(Bluetooth Hands-free headset),通常只有固定的PIN碼“0000”or“1234”,它們被硬編碼到設備中。
數字的輸入設備:e.g. 手機(Mobile phones),允許用戶輸入長度不超過16位的數字值。
字母數字輸入設備:e.g. 個人電腦和智能手機(PCs & Smartphones),它們允許用戶以PIN碼的形式輸入完整的UTF-8文本。如果與能力較弱的設備配對,則用戶必須了解其他設備上的輸入限制;對於有能力的設備,沒有可用的機制來確定它應該如何限制用戶可能使用的可用輸入。
(2)、安全簡易配對(Secure Simple Pairing,SSP)
這是藍牙v2.1所要求的,盡管藍牙v2.1設備只能使用遺留配對與v2.0或更早的設備進行互操作。安全簡單配對使用一種形式的公鑰密碼學(public key cryptograph),以及一些類型可以有助於對抗中間人或中間人攻擊(HITM攻擊,man-in-the-middle Attack)。SSP具有以下身份驗證機制:

只工作(Just works):顧名思義,這種方法就是只是工作,不需要用戶交互。但是,設備可能會提示用戶確認配對過程。常用於IO有限的耳機,且比遺留配對的固定PIN碼更安全。這種方法不提供中間人(HITM)保護。
數字比較(Numeric comparison):如果兩個設備都有顯示屏,並且至少有一個設備能接受二進制的yes/no用戶輸入,那么它們可以使用數字比較。此方法在每個設備上顯示6位數字代碼。用戶應該比較這些數字以確保它們是相同的,如果比較成功,用戶應該在能夠接受輸入的設備上確認配對。這個方法提供了MITM保護,假設用戶在兩個設備上都確認並正確地執行比較。
密鑰輸入(Passkey entry):此方法可用於具有顯示的設備和具有數字鍵盤輸入的設備(如鍵盤)之間,或用於具有數字鍵盤輸入的兩個設備之間。在第一種情況下,顯示器向用戶顯示一個6位數字代碼,然后用戶在鍵盤上輸入代碼。在第二種情況下,每個設備的用戶輸入相同的6位數。這兩種情況都提供了MITM保護。
帶外數據(Out of band,OOB):該方法使用外部通信手段,如近場通信(NFC)來交換配對過程中使用的一些信息。配對是使用藍牙無線層完成的,但是需要來自OOB機制的信息。這只提供了OOB機制中存在的MITM保護級別。
SSP被認為很簡單,原因如下:在大多數情況下,它不需要用戶生成密鑰。對於不需要MITM保護的用例,可以消除用戶交互。對於數值比較,用戶可以通過簡單的等式比較來實現MITM保護。使用帶有NFC的OOB可以在設備接近時進行配對,而不需要很長的發現過程。

中間人攻擊(Man-in-the-Middle Attack, MITM)是一種由來已久的網絡入侵手段,並且當今仍然有着廣泛的發展空間,如SMB會話劫持、DNS欺騙等攻擊都是典型的MITM攻擊。簡而言之,所謂的MITM攻擊就是通過攔截正常的網絡通信數據,並進行數據篡改和嗅探,而通信的雙方卻毫不知情。
隨着計算機通信網技術的不斷發展,MITM攻擊也越來越多樣化。最初,攻擊者只要將網卡設為混雜模式,偽裝成代理服務器監聽特定的流量就可以實現攻擊,這是因為很多通信協議都是以明文來進行傳輸的,如HTTP、FTP、Telnet等。后來,隨着交換機代替集線器,簡單的嗅探攻擊已經不能成功,必須先進行ARP欺騙才行。如今,越來越多的服務商(網上銀行,郵箱登陸)開始采用加密通信,SSL(Secure Sockets Layer 安全套接層)是一種廣泛使用的技術,HTTPS、FTPS等都是建立在其基礎上的。

(九)、關鍵術語和概念
1、藍牙profile框架
每個特征屬性被UUID(Universally Unique IDentifier,通用唯一標識符)唯一標識 ,UUID是標准128-bit格式的ID用來唯一標識信息。屬性被 ATT(attribute profile) 格式化為特征和服務形式進行傳送。(服務和特征都是用UUID來唯一標識的)

配置文件(Profile):可以理解為一種規范,一個標准的通信協議,它存在於從機中,規范了設備如何工作在一個特定的應用場景。每個配置文件中會包含多個服務(service),每個服務代表從機的一種能力。

特征(Characteristic): 一個特征包含一個單獨的值(value)和0~n個用來描述特征值(characteristics value)的描述符(descriptors)。一個特征可以被認為是一種類型(type),類似於一個類(class)。

描述符(descriptor):描述符是被定義的特征,用來描述一個特征的值。例如,一個描述符可以指定一個人類可讀的描述中,在可接受的范圍里特征值,或者是測量單位,用來明確特征的值。

服務(service):服務是特征的集合。例如,你可以有一個所謂的心率監測器(Heart RateMonitor)服務,其中包括特征,如心率監測器。你可以在bluetooth.org找到關於一系列基於GATT的協議和服務。

如圖所示:藍牙設備包含多個profile,一個profile有多個service,一個service有多個characteristic,一個characteristic包含一個value和多個的descriptor。

下面這副圖就比較形象地描述協議棧:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM