藍(lán)牙配對(duì)過程和藍(lán)牙連接的建立過程
藍(lán)牙的建立過程是一個(gè)復(fù)雜的過程,即使有過相當(dāng)一段工作和使用經(jīng)驗(yàn)的人,如果不仔細(xì)去了解還是理解不全。
本文引用地址:http://www.ex-cimer.com/article/201808/386024.htm平時(shí)我們用藍(lán)牙耳機(jī)聽音樂,和不同的設(shè)備共享文件,打電話等,都有一個(gè)配對(duì)--連接--傳輸數(shù)據(jù)的過程。
藍(lán)牙配對(duì)過程,其實(shí)就是一個(gè)認(rèn)證的過程。
為什么不配對(duì)便無法建立連接?
任何無線通信技術(shù)都存在被監(jiān)聽和破解的可能,藍(lán)牙SIG為了保證藍(lán)牙通信的安全性,采用認(rèn)證的方式進(jìn)行數(shù)據(jù)交互。同時(shí)為了保證使用的方便性,以配對(duì)的形式完成兩個(gè)藍(lán)牙設(shè)備之間的首次通訊認(rèn)證,經(jīng)配對(duì)之后,隨后的通訊連接就不必每次都要做確認(rèn)。所以認(rèn)證碼的產(chǎn)生是從配對(duì)開始的,經(jīng)過配對(duì),設(shè)備之間以PIN碼建立約定的link key用于產(chǎn)生初始認(rèn)證碼,以用于以后建立的連接。
所以不配對(duì),兩個(gè)設(shè)備之間便無法建立認(rèn)證關(guān)系,無法進(jìn)行連接及其之后的操作,所以配對(duì)在一定程度上保證了藍(lán)牙通信的安全,當(dāng)然這個(gè)安全保證機(jī)制是比較容易被破解的,因?yàn)楝F(xiàn)在很多個(gè)人設(shè)備沒有人機(jī)接口,所以PIN碼都是固定的而且大都設(shè)置為通用的0000或者1234之類的,所以很容易被猜到并進(jìn)而建立配對(duì)和連接。
藍(lán)牙的連接過程
現(xiàn)在的藍(lán)牙芯片供應(yīng)商提供的技術(shù)支持能力相當(dāng)強(qiáng)大,有完整的硬件和軟件解決方案。對(duì)于應(yīng)用而言,提供了固件用于實(shí)現(xiàn)底層協(xié)議棧,提供了profile庫(kù)及源代碼規(guī)范了各種應(yīng)用,開發(fā)人員只要專注于應(yīng)用程序開發(fā)就可以了。對(duì)于藍(lán)牙底層的一些東西往往不甚了了。以前我也是這樣子的,最近在做一個(gè)自動(dòng)搜索以實(shí)現(xiàn)自動(dòng)連接的應(yīng)用,發(fā)現(xiàn)還是需要了解一些底層的機(jī)制的。
我們可以很容易的進(jìn)行操作在一個(gè)手機(jī)和免提設(shè)備之間建立連接,那么這個(gè)連接是怎么建立起來的呢?
首先,主設(shè)備(master,即發(fā)起連接的設(shè)備)會(huì)尋呼(page)從設(shè)備(slave,接收連接的設(shè)備),master會(huì)已跳頻的方式去尋呼slave,slave會(huì)固定間隔地去掃描(scan)外部尋呼,即page scan,當(dāng)scan 到外部page時(shí)便會(huì)響應(yīng)response該page,這樣兩個(gè)設(shè)備之間便會(huì)建立link的連接,即ACL鏈路的連接。當(dāng)ACL 鏈路連接建立后,主設(shè)備會(huì)發(fā)起channel的連接請(qǐng)求,即L2CAP的連接,建立L2CAP的連接之后,主設(shè)備采用SDP去查詢從設(shè)備的免提服務(wù),從中得到rfcomm的通道號(hào),然后主設(shè)備會(huì)發(fā)起rfcomm的連接請(qǐng)求建立rfcomm的連接。然后就建立了應(yīng)用的連接。
評(píng)論