無線模組廠商藍牙雙模WiFi芯片常見的本地發現方法,在之前的文章中我們提及了如何在使用Wi-Fi無線傳輸媒介的局域網內找到被控設備。在TCP/ip協議棧中,找到被控設備是指獲取被控設備的 IP 地址。無線模組廠商藍牙雙模WiFi芯片在局域網內,如何獲取對端的 IP 地址是一個值得研究的問題。常見的獲取對端IP 地址的協議是RARP (ReverseAddress Resolution Protocol,反向地址轉換協議),這是一種在知道對端MAC 地址的條件下發送查詢包,網關服務器端通過解析自己的ARP 表來獲取想要查詢 MAC設備IP 地址的協議。熟悉局域網的小伙伴可能會在一時間就聯想到 ARP (Address ResolutioProtocol,地址解析協議),ARP 是通過知曉對端IP 地址的情況下,發送查詢包,對端設備者網關設備查詢自己的ARP 表后回復 IP 地址對應的 MAC 地址的協議。無線模組廠商藍牙雙模WiFi芯片ARP 和 RARP是一對網絡層地址與數據鏈路層地址相互解析的協議,但這一對協議有一個共同點,就是需要知道對端的網絡層地址或者數據鏈路層地址,這在物聯網應用中會變得很不靈活,因為用戶很難知道局域網中設備的網絡層地址和數據鏈路層地址,所以本文要介紹真正適用于物聯網的本地發現技術。
本地發現就是發現局域網內節點的信息,包括與節點進行通信的地址信息、節點所支持的應用服務信息、用戶自定義的信息等。例如,常用的本地發現協議有 mDNS (Multicast DNS,該協議的介紹請參考之前的文章)。無線模組廠商藍牙雙模WiFi芯片本地發現的思路就是發一個報文,對端在接收到該報文后自己的設備信息告知給發送方。但是目前需要解決的問題是如何確保對端能接收到發送方發送的報文。
其實如果知道 IP 地址的分類后,就會知道,除了比較常用的點對點通信 (單播),還有一對多(組播)和一對所有(廣播)通信。IP 地址可以分為單播(Unicast) 地址、組播(Multicast)地址和廣播(Broadcast)地址。單播需要知道對端的 IP 地址,所以不適合本地發現的場景。無線模組廠商藍牙雙模WiFi芯片組播和廣播并不需要知道對端的IP 地址,它們會向特定地址發送報文,對端只要監聽該地址就可以接收到報文,因此組播和廣播適合在局域網內的發現設備,也能解決發送方發送的報文讓對端接收到的問題。