基于Ad hoc的多跳通信
- 實驗原理
What is Ad-Hoc
定義:
Ad-Hoc(點對點)模式:ad-hoc模式就和以前的直連雙絞線概念一樣,是P2P的連接,所以也就無法與其它網絡溝通了。一般無線終端設備像PMP、PSP、DMA等用的就是ad-hoc模式。 在家庭無線局域網的組建,我想大家都知道最簡單的莫過于兩臺安裝有無線網卡的計算機實施無線互聯,其中一臺計算機連接Internet就可以共享帶寬。如右圖所示,一個基于Ad-Hoc結構的無線局域網便完成了組建。
Ad hoc網絡一般有兩種結構:平面結構和分級結構。 在平面結構中,所有結點的地位平等,所以又可以稱為對等式結構。 分級結構中,網絡被刈分為簇。每個簇由一個簇頭和多個簇成員組成。這些簇頭形成了高一級的網絡。在高一級網絡中,又可以分簇,再次形成更高一級的網絡,直至最高級。在分級結構中,簇頭結點負責簇間數據的轉發。簇頭可以預先指定,也可以由結點使用算法自動選舉產生。 分級結構的網絡又可以被分為單頻分級和多頻分級兩種。單頻率分級網絡中,所有結點使用同一個頻率通信。為了實現簇頭之間的通信,要有網關結點(同時屬于兩個簇的結點)的支持。而在多頻率分組網絡中,不同級采用不同的通信頻率。低級結點的通信范圍較小,而高級結點要覆蓋較大的范圍。高級的結點同時處于多個級中,有多個頻率,用不同的頻率實現不同級的通信。在兩級網絡中,簇頭結點有兩個頻率。頻率1用于簇頭與簇成員的通信。而頻率2用于簇頭之間的通信。分級網絡的每個結點都可以成為簇頭,所以需要適當的簇頭選舉算法,算法要能根據網絡拓撲的變化重新分簇。 平面結構的網絡比較簡單,網絡中所有結點是完全對等的,原則上不存在瓶頸,所以比較健壯。它的缺點是可擴充性差:每一個結點都需要知道到達其他所有結點的路由。維護這些動態變化的路由信息需要大量的控制消息。在分級結構的網絡中,簇成員的功能比較簡單,不需要維護復雜的路由信息。這大大減少了網絡中路由控制信息的數量,因此具有很好的可擴充性。由于簇頭結點可以隨時選舉產生,分級結構也具有很強的抗毀性。分級結構的缺點是,維護分級結構需要結點執行簇頭選舉算法,簇頭結點可能會成為網絡的瓶頸。 因此,當網絡的規模較小時,可以采用簡單的平面式結構;而當網絡的規模增大時,應用分級結構。【1】
?
Ad hoc各個節點間的通信是p2p即任何一個節點都具有發送和接受數據的能力。
?
思路:關于ad hoc網絡的定義很多,具體的實施方案各異如:
移動 AdHoc網 絡 是 由 一 組 兼 具 主 機 和 路
由功 能 的移 動 終 端 組 成 的 多 跳 臨 時 性 自 制 系 統,
具有組 網 迅 速 和 無 需 基 站 組 織 的 特 點。 目 前,
AdHoc網絡的 路 由 協 議 主 要 分 為 三 種:表 驅 動
(Table-driven)路由協議、按需(On-demond)路由
協議和混合式(Hybrid)路由協議 。 其中,DSR
(DynamicSourceRouting)是比較典型的 AdHoc
網絡按需路由協議,該 協議不需要 使 用 周 期 性 的
路由廣 播 和 相 鄰 節 點 探 測 機 制,減 少 了 網 絡 開
銷,但容易受 到 節點移 動速 度和 節 點 暫 停 時 間 的
影響 。MSR(Multi-pathSourceRouting)協 議
是在 DSR 協 議 的 基 礎 上 擴 展 而 來 的,減 少 了 分
組發送時的時延,提高 了源節點與 目 的 節 點 之 間
的 聚 合 吞 吐 量,但 增 加 了 發 包 時 的 處 理 開
銷 。 為此,基 于 無 線 自 組 網 的 多 信 道 多
路徑 路 由 度 量 準 則,在 DSR 協議和 MSR 協議的
基礎上,提出了一種新 的 AdHoc網 絡 智 能 多 徑
路由協議。【2】
?
蜂窩移動方式以及 MobileIP 方式是移動無線通信網絡的主要形式,在通信網絡當中,終端和基站是相互關聯的,在通常情況下基站都是固定的,在網絡系統當中會有專門的設備
負責交換功能,其中最為典型的就是交換機。交換機具有非常明顯的特點,由于受到中心的控制,整體的設備分工非常的明確。終端是能夠進行移動的,在移動的過程當中,會需要固定的網絡進行后勤的支持。移動通信系統在進行運行的過程中,不適合在一些特殊的場合進行應用,野外環境就不適用,在應急事件發生時不能夠進行有效的通信。無線移動自組網在整體運行的過程當中,其中會設置大量的無線通信裝置,由各種移動終端組成,在任何時間地點,都能夠進行信息服務的提供。網絡中設置的終端都是可以自由移動的,并且在系統當中的地位也是相當的,參與到無線移動自組網絡當中的每一個終端都要承擔自身的職責,主動為其他的部分進行分組。路由器以及終端的運行系統都會有相應的路由協議,這樣就能夠根據具體的策略和參數,對數據進行適當的分組。當通信網絡受到干擾時,整體的網絡結構沒有中心,分布也比較分散,只能夠維持部分通行能力。無線移動自組網在整體開展的過程當中,為了能夠對格式進行規范,需要對相應的數據進行優化和調整,以便于能夠在數據傳輸的過程當中進行交換。基于 TCP/IP 協議族,許多個移動終端,可以同時構成一個 IP 網絡。【3】
?
移動?Ad ?Hoc?網絡與?Internet?的互聯可以擴展?MANET?的應用范圍,而網關發現算法作為實現?MANET?和?Internet?網絡互聯的核心技術,成了無線通信技術所面臨的一大熱點問題。盡管目前已經有很多關于網關發現的算法和模型提出,但是在移動節點的分布場景上、移動節點和網關節點之間的物理距離上和優化網關節點的位置方面尚需進一步的研
究。因此,在本文中,就網關發現性能方面,對網關發現算法進行了深入的研究分析,進而提出一種網關發現算法使其既考慮了移動節點的分布情況,根據不同的分布狀態采
取不同的網關發現策略,并且根據節點分布調整網關節點位置,使網關節點既能及時滿足移動節點的通信需求又能提高網絡通信質量等性能指標。【4】
?
?
簡言之Ad-Hoc來源于拉丁文,意思是為了專門的目的而設立的,在無線網絡中主要應用在通過無線網卡共享數據,無線網卡通過設置相同的SSID信息,相同的信道信息,最終實現通過移動設備之間的通信。Ad-Hoc模式是P2P的連接,所以也就無法與其他網絡溝通。
?
與Ad-Hoc模式相對的是Infrastructure模式,這是一種整合有線與無線局域網架構的應用模式,與Ad-Hoc模式不同的是配備無線網卡的電腦必須通過ap來進行無線通信,設置后,無線網絡設備就必須有AP(Access Pointer)來溝通。通過這種架構模式,即可實現網絡資源的共享。在正式實驗之前,還有幾個概念:
?
WEP:有線等效加密,又稱無線加密協議,簡稱WEP,是個保護無線網絡(Wi-Fi)信息安全的體制。因為無線網絡是用無線電把訊息傳播出去,它特別容易被竊聽。WEP的設計是要提供和傳統有線的局域網路相當的機密性,而以此命名的。不過密碼分析學家已經找出WEP好幾個弱點,因此在2003年被實現大部分IEEE 802.11i標準的WPA2所取代。
?
SSID(Service?Set?Identifier)
意思是:服務集標識。SSID技術可以將一個無線局域網分為幾個需要不同身份驗證的子網絡,每個子網絡都需要獨立的身份驗證,只有通過身份驗證的用戶才可以進入相應的子網絡,防止未被授權的用戶進入本網絡。SSID包含了ESSID和BSSID,用來區分不同的網絡,最多可以有32個字符,無線網卡設置了不同的SSID就可以進入不同網絡,SSID通常由AP廣播出來,通過XP自帶的掃描功能可以查看當前區域內的SSID。處于安全考慮可以不廣播SSID,此時用戶就要手工設置SSID才能進入相應的網絡。簡單說,SSID就是一個局域網的名稱,只要設置為名稱相同SSID的值的電腦才能相互通信。
?
無線AP(Access?Point)即無線接入點
它是用于網絡的無線交換機,也是網絡的核心。無線AP是移動計算機用戶進入有線網絡的接入點,主要用于寬帶家庭、大樓內部以及園區內部,典型距離覆蓋幾十米至上百米,目前主要技術為802.11系列。大多數無線AP還帶有接入點客戶端模式(AP?client),可以和其它AP進行無線連接,延展網絡的覆蓋范圍。
無線路由器
無線路由器是單純性AP與寬帶路由器的一種結合體;它借由路由器功能,可實現家庭無線網絡中的Internet連接共享,實現ADSL和小區寬帶的無線共享輸入,另外,無線路由器可以把通過它進行無線和有線連接的中斷都分配到一個子網,這樣子網內的各種設備交換數據就方便了。
WPA
是Wi-Fi Protected?Access(Wi-Fi保護接入)的簡稱,是無線網絡的數據加密規格。它通過使用可擴展認證協議(EAP)提高WEP安全功能來確保網絡使用的安全性,通過一種加密方法提高了數據傳送的安全性。
WPA使用802.11X認證服務器給每個用戶分配不同的密鑰。但是它在安全性比較差的”預先共享密鑰(PSK)“模式中也有效。PSK用于家庭額小型辦公室網絡,每個用戶都有相同的密碼口令。WPA-PSK也叫做WPA-Personal(WPA個人)。WPA-PSK使用TKIP或AES加密方法把Brother無線設備和接入點聯系起來。WPA2-PSK使用AES加密方法把Brother無線設備和接入點聯系起來。
TKIP
是Temporal?Key?Integrity?Protocol(臨時密鑰完整性協議)的簡稱,是一種加密方法。TKIP提供結合信息完整性檢查和重新按鍵機制的信息包密鑰。
?
AES
AES是Advanced?Encryption?Standard(高級加密標準)的簡稱,是Wi-Fi?授權的高效加密標準。WPA-PSK/WPA2-PSK?和?TKIP?或?AES?使用預先共享密鑰(PSK),字符長度大于8并且小于6.
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
- 設計方案
我查閱了很多資料,想了很多種方案比如采用Ad-Hoc模式即點對點或者PPP(數據鏈路層的點對點協議)協議等,但是目前很多設備已經不支持上述模式了,但是轉念一想為何不直接用更為流行的AP模式,然后在AP節點上寫上服務器、客戶端程序不就可以收發數據從而實現多跳通信了。于是:
?
我的解決方案其實是Infrastructure模式的,由此實現多跳通信,找一個支持Ad hoc模式的模塊遠沒有直接用支持收發路由功能的wifi模塊來的簡單,因而我的解決方案是:
?
實驗器材:wifi模塊(nodemcu)、安裝網絡助手的手機一部、安裝網絡助手的電腦一臺。
?
實驗步驟:
?????? 用一個WIFI模塊(燒錄代碼)作為AP節點(節點2),安裝有服務器,客戶端程序(用以模擬p2p通信,即一個節點既可以做服務器也可以做客戶端),然后一部裝有網絡助手的手機(節點1),一臺裝有網絡助手的電腦(節點3),手機向WIFI模塊通過TCP協議發送信息,若是1(自定義)則會被WIFI模塊保留下來并向手機反饋信息(本程序反饋為reserved data)(用以模擬路由協議功能),若是其他信息則會經由WIFI模塊傳送到電腦,在電腦的網絡助手上顯示收到的信息。
?
?
wifi模塊運行的是lua寫的程序
timer = tmr.create()
timer2 = tmr.create()
?
wifi.setmode(wifi.SOFTAP)
?
cfg = {}
cfg.ssid = "Guo"
cfg.pwd = "77889900"
wifi.ap.config(cfg)
?
?
config_ip = {}
config_ip.ip = "192.168.1.1"
config_ip.netmask = "255.255.255.0"
config_ip.gateway = "192.168.1.1"
wifi.ap.setip(config_ip)
?
print("IP Adress is:"..wifi.ap.getip())
?
function createserver()
??? sv=net.createServer(net.TCP, 30)--創建一個服務器,客戶端連接后30s內沒有通信自動斷開客戶端
??? sv:listen(80,function(c)--監聽80端口,當有客戶端連接后,創建客戶端對象c
??? c:on("receive", function(c, msg) --當接收到客戶端發送過來的消息觸發此函數
??????? print(msg)--打印接收到的消息
??????? if msg=="1" then
??????????? c:send("reserved data")???????????
??????? else
??????????? c:close()
??????????? createclient(msg)
??????????? --timer2:alarm(3000,tmr.ALARM_AUTO,createclient)
??????? end
??? end)
??? end)
?
end
?
function createclient(msg)
??? sk=net.createConnection(net.TCP, 0)--創捷一個tcp客戶端
??? sk:connect(8090,"192.168.1.2")--連接IP地址和端口8090
??? sk:on("receive",? function(sl, c) --當接收到服務器發送過來的消息是觸發此函數
??????? print(c)--打印接收到的消息
??? end)
??? sk:send("Receive: "..msg)--向服務器發送數據
end
timer:alarm(30000,tmr.ALARM_AUTO,createserver)
?
?
timer:alarm(30000,tmr.ALARM_AUTO,createserver)
?
?
可能是之前沒用過lua花了很長時間探索,但現在看來也沒有什么難點,代碼比較簡單,就不詳細解釋了。
這里需要注意的tcp的熟識端口是0-1023 有可能會被其他程序占用導致無法通過該類端口建立tcp連接,可以使用dos命令查看端口是否被占用
netstat -ano
?
當然要是全部都用wifi模塊則不需要擔心。
- 實驗結果
實驗結果:
可以看出若節點1發送1,wifi模塊(節點2)會收到1,但數據不會傳到3,并且節點1會收到來自wifi模塊(節點2)反饋
?? ? ? ? ? ? ? ?
?
?若發送其他數據如2,則wifi模塊(節點2)收到數據后會斷開與節點1的tcp連接,并且建立與節點3的tcp連接,并且將從節點1收到的數據傳到節點3,實現數據的多跳傳輸
? ?? ? ???
?
?
?
?
?
?
?
?
?
- 參考資料
?
【1】---------------------------- 百度百科 Ad-hoc詞條
?
【2】---------------------------- 喬平安、劉運爽、周 敏 《一種基于AdHoc網絡的智能多徑路由協議》Computer& DigitalEngineering2016年第8期
【3】----------------------------?肖宇,陳樂,肖楠? 《無線移動自組網及其關鍵技術》通信設計與應用?2020 年 7 月
?
【4】---------------------------- 楊林? 《面向移動Ad Hoc網絡的自適應網關發現算法研究》 碩士學位論文 2018年6月
?
總結
以上是生活随笔為你收集整理的基于Ad hoc的多跳通信的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java76-GUL单选按钮和复选按钮
- 下一篇: 【翻译论文】 Supervised Pa