- 实验原理
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月