P2P 技術(shù)在物聯(lián)網(wǎng)中的應(yīng)用
引 言
在現(xiàn)今的生活中,物聯(lián)網(wǎng)的應(yīng)用越來越多,智能化的物聯(lián)網(wǎng)產(chǎn)物越來越深入人們的生活。而在應(yīng)用的過程中,傳輸?shù)陌踩?、傳輸?shù)姆绞揭驳玫搅税l(fā)展。物聯(lián)網(wǎng)(IoT)的概念是美國麻省理工學(xué)院(MIT)在 1999 年提出,而在 2008 年底, 在 IBM 向美國政府提出“智慧地球”戰(zhàn)略后,物聯(lián)網(wǎng)很快引起了許多國家的高度關(guān)注 [1]。這種旨在使萬事萬物皆可互聯(lián)互通的概念讓世界信息產(chǎn)業(yè)獲得了又一次浪潮。
P2P(Peer-to-Peer)網(wǎng)絡(luò)結(jié)構(gòu)是一種端到端的網(wǎng)絡(luò)互聯(lián)結(jié)構(gòu),這種去中心化的網(wǎng)絡(luò)架構(gòu)在現(xiàn)今物聯(lián)網(wǎng)應(yīng)用中的優(yōu)勢十分明顯。以即時通信為例 :利用 P2P 網(wǎng)絡(luò)架構(gòu)在物聯(lián)網(wǎng)中使用視頻與語音通信的方式,延時小、可靠性高、安全性高。
將這兩種技術(shù)特點(diǎn)綜合到一起應(yīng)用至樹莓派中以音視頻傳輸場景為原型形成人與物之間的通信交流。物聯(lián)網(wǎng)作為互聯(lián)網(wǎng)中的延伸可以應(yīng)用在多種設(shè)備中實(shí)現(xiàn)數(shù)據(jù)的傳輸與交換,P2P 技術(shù)旨在實(shí)現(xiàn)端到端的網(wǎng)絡(luò)通信,后者應(yīng)用在前者中可以實(shí)現(xiàn)更好的應(yīng)用功能。
1 物聯(lián)網(wǎng)的概念與特點(diǎn)
根據(jù)物聯(lián)網(wǎng)的概念,大家可以把它想象成萬物之間溝通的橋梁。物聯(lián)網(wǎng)是建立在互聯(lián)網(wǎng)基礎(chǔ)上并不斷延伸和擴(kuò)展的網(wǎng)絡(luò),即用戶端延伸和擴(kuò)展到了任何現(xiàn)實(shí)和可能的物品與物品之間,能進(jìn)行實(shí)時的、準(zhǔn)確的信息交換和通信。一些學(xué)者按照物聯(lián)網(wǎng)的服務(wù)流程及各子系統(tǒng)所實(shí)現(xiàn)的主要功能將整個系統(tǒng)分為感知、傳輸、處理三個主要環(huán)節(jié),據(jù)此將物聯(lián)網(wǎng)網(wǎng)絡(luò)架構(gòu)分為感知層、網(wǎng)絡(luò)層和應(yīng)用層 [2]。國際電信聯(lián)盟(ITU-T)定義了 IoT通用參考模型,該模型由設(shè)備層、網(wǎng)絡(luò)層、應(yīng)用層及與之相關(guān)的管理和安全構(gòu)成。設(shè)備層用以識別、采集、捕獲,網(wǎng)絡(luò)層依賴各類網(wǎng)絡(luò)的相關(guān)控制與傳送,連接業(yè)務(wù)支持和應(yīng)用支持層。圖 1 為物聯(lián)網(wǎng)參考構(gòu)架圖 [3]。
本文把物聯(lián)網(wǎng)的應(yīng)用過程總結(jié)為兩個字—隨時。為什么說是“隨時”呢?從概念上看,物聯(lián)網(wǎng)主要實(shí)現(xiàn)物與物、人與物之間的關(guān)系。從結(jié)構(gòu)上看物聯(lián)網(wǎng)的三種層次都圍繞采集、識別和捕獲。這些都需要隨時使用,實(shí)現(xiàn)物與物、人與物的隨時交流。
2 P2P 網(wǎng)絡(luò)的概念與特點(diǎn)
點(diǎn)對點(diǎn)網(wǎng)絡(luò)或稱對等計算機(jī)網(wǎng)絡(luò),是一種分布式應(yīng)用程序體系結(jié)構(gòu),用于在點(diǎn)之間分配任務(wù)和工作負(fù)載,它是應(yīng)用層中對等計算模型形成的網(wǎng)絡(luò)或網(wǎng)絡(luò)形式。通過這個概念可以建立起如圖 2 所示的網(wǎng)絡(luò)拓?fù)鋱D [4]。
圖 2 P2P 網(wǎng)絡(luò)拓?fù)鋱D
圖中,把每一個用戶(peer)當(dāng)作一個節(jié)點(diǎn),每一個節(jié)點(diǎn)在這個網(wǎng)絡(luò)架構(gòu)中都是地位相等的,每一個節(jié)點(diǎn)都是服務(wù)器(server)和用戶(user),每一個節(jié)點(diǎn)都是在網(wǎng)絡(luò)架構(gòu)中提供服務(wù)和內(nèi)容。兩個節(jié)點(diǎn)之間的消息或資源聯(lián)系不需要經(jīng) 過中心服務(wù)器或其他節(jié)點(diǎn),保證了即時和安全。這么做首先 避免了在傳統(tǒng)網(wǎng)絡(luò)架構(gòu)中可能出現(xiàn)的性能或網(wǎng)絡(luò)帶寬瓶頸 ; 其次,在整個網(wǎng)絡(luò)體系結(jié)構(gòu)中,不僅會有用戶對服務(wù)的需求 增加,在總體上,系統(tǒng)資源和服務(wù)能力也在同步擴(kuò)展,總是 很容易滿足用戶的需求。所以理論上,它的擴(kuò)展性幾乎可以 認(rèn)為是無限的。那么在整個網(wǎng)絡(luò)架構(gòu)中由于沒有中心節(jié)點(diǎn)的 存在,當(dāng)出現(xiàn)攻擊者攻擊其中一個節(jié)點(diǎn)時,其他節(jié)點(diǎn)不會因 為其中一個節(jié)點(diǎn)的攻破而全部暴露在攻擊者面前,保證了整 個網(wǎng)絡(luò)架構(gòu)的安全性 [4]。在網(wǎng)絡(luò)中,當(dāng)對用戶提供 Web服務(wù)時,一定會遇到在訪問量高峰時段的高并發(fā)的時候,用戶請 求數(shù)較多但一臺服務(wù)器(server)無法同時處理這么多請求時, 一定會搭建部署負(fù)載均衡以平分大批量請求數(shù)的狀態(tài)下,用 多臺服務(wù)器平分處理巨大的數(shù)據(jù)量壓力。結(jié)合 P2P網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和定義可以形成一個網(wǎng)絡(luò)的負(fù)載均衡。
3 在現(xiàn)今網(wǎng)絡(luò)應(yīng)用環(huán)境中所需解決的通信問題
現(xiàn)今的網(wǎng)絡(luò)通信協(xié)議中,首先要研究兩種協(xié)議 :UDP 協(xié)議和 TCP/IP 協(xié)議中的通信過程和特點(diǎn)。其中,UDP 協(xié)議中的 UDT 協(xié)議使安全性和可靠性大大增強(qiáng) ;TCP/IP 協(xié)議的可靠性優(yōu)勢與 UDP 協(xié)議對傳輸要求較高的應(yīng)用場景十分有優(yōu)勢。因其各有特點(diǎn),所以它們被應(yīng)用于不同的網(wǎng)絡(luò)協(xié)議中。P2P 網(wǎng)絡(luò)結(jié)構(gòu)應(yīng)用在物聯(lián)網(wǎng)中需要 TCP/IP 的可靠性和 UDP 在傳輸上的優(yōu)勢,以音視頻使用 P2P 架構(gòu)傳輸在物聯(lián)網(wǎng)中應(yīng)用為例,音視頻傳輸需要的傳輸性能較高,在人與物、物與物之間傳輸也需要較好的安全性。所以兩種協(xié)議各有用處。
其次, 在 IPv4 中為緩解 ip 地址短缺的問題而出現(xiàn)了NAT 網(wǎng)絡(luò)地址轉(zhuǎn)換技術(shù),但私網(wǎng)地址,如 192 等網(wǎng)段無法在公網(wǎng)上使用,需要做 NAT 穿透。
在 P2P 網(wǎng)絡(luò)中可以通過公共節(jié)點(diǎn)的方式獲取在內(nèi)網(wǎng)中的設(shè)備,在外網(wǎng)的 IP 及端口,內(nèi)網(wǎng)節(jié)點(diǎn)通過公共節(jié)點(diǎn)連接至其他節(jié)點(diǎn)或網(wǎng)絡(luò)(其他節(jié)點(diǎn)或網(wǎng)路連接至內(nèi)網(wǎng)節(jié)點(diǎn))實(shí)現(xiàn)內(nèi)網(wǎng)穿透。
4 以利用 WebRTC技術(shù)在樹莓派上應(yīng)用為例
WebRTC 技術(shù)是一種基于瀏覽器的多媒體實(shí)時通信技術(shù) [5]。這種技術(shù)最大的特點(diǎn)是可在不安裝任何擴(kuò)展和插件的前提下實(shí)現(xiàn)點(diǎn)對點(diǎn)的實(shí)時通信,十分適合在實(shí)時的物聯(lián)網(wǎng)視頻監(jiān)控中應(yīng)用。將 WebRTC 技術(shù)總體的 3 個部分以不同端口運(yùn)行的方法部署在一臺樹莓派中進(jìn)行連接測試應(yīng)用。
在樹莓派上安裝支持 ARM 指令集的 Raspbian 系統(tǒng),遠(yuǎn)程桌面截圖如圖 3 所示。
圖 3 遠(yuǎn)程桌面截圖
安裝 nginx,并設(shè)置端口為 8080,如圖 4 所示。
圖 4 nginx
配置文件 nginx.conf 時,在 HTML 內(nèi)添加如圖 5 所示的代碼用以解析 https。
圖 5 https 解析
修改 WebRTC 信令服務(wù)器配置文件如圖 6 所示。重新編譯信令服務(wù)器并開啟 https 如圖 7 所示。
樹莓派上測試的攝像頭開啟標(biāo)識為 video0:/dec/video0 open。
視頻流上傳模塊位于樹莓派上,將獲得的視頻流進(jìn)行處理并每 5s保存為一個視頻文件。在兩端連接后形成音視頻交換。在傳輸?shù)倪^程中,為了保證傳輸和通信質(zhì)量,還需要做對音頻的降噪處理。這樣在整個網(wǎng)絡(luò)中形成如圖 8所示的結(jié)構(gòu)。
5 結(jié) 語
音視頻傳播在 P2P 網(wǎng)絡(luò)結(jié)構(gòu)中有著十分顯著的優(yōu)勢,而在物聯(lián)網(wǎng)中也能得到良好應(yīng)用,比如在溫室大棚監(jiān)控、無人機(jī)植保等應(yīng)用中有著顯著效果 ;無人機(jī)植保中,需要大量人力操作無人機(jī),如把無人機(jī)當(dāng)作物聯(lián)網(wǎng)中的一個節(jié)點(diǎn)的話,連接至一樹莓派,飛手可通過 Web 端或客戶端同時協(xié)助多個無人機(jī)同時作業(yè),既可以緩解現(xiàn)今無人機(jī)飛手較少,需求卻較大的問題,也可以加快物聯(lián)網(wǎng)在現(xiàn)今的推廣和普及。