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