简介:这份PDF实验指导书面向计算机网络、无线通信等课程的学生及自学者,聚焦无固定AP场景下的Ad-Hoc自组网搭建与文件共享,帮助读者在缺少交叉线等条件下利用无线网卡快速组网。资源共1个PDF文件,压缩包约1.67MB,内容涵盖实验目的、原理、拓扑图、设备要求、详细步骤、结论、心得与延伸思考,并配有背景案例与需求分析。读者可从中掌握Ad-Hoc网络的概念与对等网络结构,按步骤完成无线临时网络创建、共享属性设置、ping连通性测试,以及三台计算机间的文件夹共享与传输方案设计。目前已有231人学习,适合需要完成实验报告或快速上手无线自组网实践的学习者参考。
1. Ad-Hoc 模式无线网络:没有 AP 的时候,两台机器怎么自己组网
手头只有两台笔记本、一块无线网卡,没有路由器、没有交换机、没有任何 AP,但你需要让它们互相传文件、跑一个本地服务、做一次局域网联调。这种场景下,Ad-Hoc 模式就是最直接的答案。它不依赖任何中心节点,每台设备既是终端也是转发节点,彼此对等通信。标题里的“实验2_搭建Ad-Hoc模式的无线网络”本质上就是这件事:在无基础设施的环境里,用无线网卡自建一个临时网络。它适合嵌入式调试、实验室离线联调、应急通信演练、以及教学场景下理解 802.11 的 IBSS 模式。和常见的 AP 模式不同,Ad-Hoc 没有 DHCP 服务器,IP 要手动配,SSID 和信道要两端一致,加密方式也得对齐。很多人第一次配完发现 ping 不通,八成是信道或 IP 网段没对上。下面按“原理选型 → 动手配置 → 排错避坑 → 进阶验证”的顺序,把这条路走通。
2. Ad-Hoc 模式到底怎么工作:IBSS、信道与 IP 分配
2.1 IBSS 与 BSS 的本质区别
802.11 里有两个容易混淆的概念:BSS(Basic Service Set)和 IBSS(Independent BSS)。BSS 需要一个 AP 来协调,所有终端先关联到 AP,再由 AP 转发帧;IBSS 没有 AP,终端之间直接建链路,也就是 Ad-Hoc 模式。IBSS 里第一个启动的设备负责“发起”这个网络,它会周期性发送 Beacon 帧,Beacon 里携带 SSID、支持的速率集、信道等信息。后续设备扫描到相同 SSID 和信道后加入。这里有个关键点:IBSS 的 SSID 是大小写敏感的,MyNet和mynet会被当成两个不同的网络。另外,IBSS 不支持 802.11n/ac 的高吞吐特性,实际速率通常落在 11a/g 的 6~54 Mbps 区间,做文件传输够用,但别指望跑满千兆。
选型上,如果你只是两台机器点对点传数据,Ad-Hoc 最轻量;如果三台以上且需要稳定互访,建议还是上 AP 模式或软 AP。Ad-Hoc 在多跳场景下性能衰减明显,因为所有节点共享同一信道,冲突域是整张网。
2.2 信道选择与 IP 规划
信道必须两端一致,且最好选干扰少的。2.4 GHz 下常用 1、6、11 三个不重叠信道;5 GHz 下可选 36、40、44、48 等。实验室环境里,先用扫描工具看一眼周围占用情况再定。IP 规划上,Ad-Hoc 没有 DHCP,常见做法是手动配同网段静态 IP,比如一端192.168.10.1/24,另一端192.168.10.2/24,不配网关,或者网关指向对方。子网掩码必须一致,否则路由表里不会认为对方在同一个直连网段。
注意:Windows 下 Ad-Hoc 的 IP 配置要在“网络和共享中心 → 适配器设置 → 无线网络连接 → 属性 → IPv4”里手动填,不要依赖自动获取,因为 IBSS 没有 DHCP 服务端。
2.3 Linux 下用 nmcli 建 Ad-Hoc 的最小命令
Linux 桌面环境里,NetworkManager 的nmcli是最省事的入口。下面这条命令创建一个名为adhoc-lab、信道 6、不加密的 Ad-Hoc 连接:
# 创建 Ad-Hoc 连接,mode 设为 adhoc,信道 6,SSID 为 adhoc-lab nmcli con add type wifi ifname wlan0 con-name adhoc-lab ssid adhoc-lab mode adhoc # 设置信道和频段 nmcli con modify adhoc-lab wifi.channel 6 # 关闭加密(实验环境简化,生产建议用 WPA2) nmcli con modify adhoc-lab wifi-sec.key-mgmt none # 配置静态 IP nmcli con modify adhoc-lab ipv4.method manual ipv4.addresses 192.168.10.1/24 # 拉起连接 nmcli con up adhoc-lab逻辑说明:mode adhoc是关键参数,缺省是 infrastructure;wifi.channel决定射频落在哪个频点;ipv4.method manual避免 NetworkManager 等待不存在的 DHCP。参数上,ifname要换成你实际的无线网卡名,用iw dev或ip link查。如果网卡不支持 IBSS,nmcli con up会报Connection activation failed,这时先确认驱动是否支持。
2.4 Windows 下用 netsh 建 Ad-Hoc 网络
Windows 自带netsh可以建 Ad-Hoc,但注意:从 Windows 8 开始,部分网卡驱动不再支持 IBSS,命令会返回“不支持所请求的操作”。先试,不行就换 Linux 或外接网卡。
# 设置无线网络为 Ad-Hoc 模式,SSID 为 adhoc-win,密钥为 12345678 netsh wlan set hostednetwork mode=allow ssid=adhoc-win key=12345678 # 启动承载网络 netsh wlan start hostednetwork逻辑说明:mode=allow表示允许承载网络;ssid和key分别对应网络名和 WPA2 密码。启动后,在“网络连接”里会多出一个虚拟无线适配器,给它配静态 IP 即可。参数上,key至少 8 位,否则命令报错。如果start hostednetwork提示“无法启动”,先执行netsh wlan show drivers,看“支持的承载网络”是否为“是”。
3. 两端配置对齐:SSID、信道、加密、IP 四要素
3.1 四要素核对表
Ad-Hoc 建不起来,九成是下面四个要素里有一个没对齐。动手前先把这张表填好,两端逐项核对:
| 要素 | 一端配置 | 另一端配置 | 是否必须一致 |
|---|---|---|---|
| SSID | adhoc-lab | adhoc-lab | 是,大小写敏感 |
| 信道 | 6 | 6 | 是,否则扫不到 |
| 加密方式 | none 或 WPA2 | 同左 | 是,密钥也要同 |
| IP 网段 | 192.168.10.1/24 | 192.168.10.2/24 | 同网段即可 |
提示:如果一端用
none,另一端用 WPA2,关联阶段就会失败,现象是“一直正在连接”然后超时。先用不加密跑通,再逐步加安全配置。
3.2 用 iw 和 iwconfig 验证链路状态
配完之后别急着 ping,先看链路层有没有建起来。Linux 下用iw dev wlan0 link:
# 查看 wlan0 的链路状态 iw dev wlan0 link如果输出里有Connected to xx:xx:xx:xx:xx:xx (on wlan0)且SSID: adhoc-lab,说明 IBSS 已加入。如果显示Not connected,回到上一章检查四要素。iwconfig也能看,但信息旧一些:
# 查看无线接口概要信息 iwconfig wlan0关注Mode:Ad-Hoc、Cell、ESSID三项。Cell是 IBSS 的 BSSID,两端应该看到同一个值(由第一个发起者生成)。如果Cell不同,说明各自建了独立的 IBSS,SSID 相同也没用,这时要检查信道是否真的一致。
3.3 用 ping 和 arp 确认三层连通
链路层通了之后,三层能不能通看 ARP。先 ping 对方:
# 从 192.168.10.1 ping 192.168.10.2,发 4 个包 ping -c 4 192.168.10.2如果 ping 不通但链路显示已连接,先看 ARP 表:
# 查看 ARP 缓存 arp -n如果对方 IP 对应的 MAC 是incomplete,说明 ARP 请求没得到响应。常见原因是对方防火墙挡了 ICMP,或者 IP 不在同一网段。临时关掉防火墙验证:
# 临时关闭 ufw 防火墙(仅实验环境) sudo ufw disable参数说明:-c 4表示只发 4 个包,避免无限等待;arp -n不解析主机名,输出更快。如果 ARP 能学到 MAC 但 ping 不通,基本就是防火墙或路由问题,不是 Ad-Hoc 本身的问题。
3.4 文件传输与本地服务验证
连通之后,用scp或python -m http.server做一次实际传输,确认带宽和稳定性:
# 在 192.168.10.2 上启动一个 HTTP 服务,端口 8000 python3 -m http.server 8000 # 在 192.168.10.1 上用 curl 下载测试 curl -O http://192.168.10.2:8000/testfile.bin逻辑说明:http.server是 Python 标准库自带的简易服务,适合临时验证;curl -O把文件保存到当前目录。参数上,端口选 1024 以上避免权限问题。传输时用iftop或nload看实时速率,Ad-Hoc 在 2.4 GHz 信道 6 下,实测通常 2~5 MB/s,取决于距离和干扰。
4. 避坑与排查:Ad-Hoc 搭建中最容易翻车的 5 个点
4.1 现象:两端都显示已连接,但互相 ping 不通
原因:IP 不在同一网段,或者子网掩码不一致。比如一端192.168.10.1/24,另一端192.168.10.2/16,虽然看起来像同网段,但路由表计算出的直连范围不同,ARP 请求发不出去。
解决:统一用/24,并确认ip addr输出里inet行显示的网段一致。改完 IP 后重新拉起连接,不要只改配置不重连。
4.2 现象:netsh wlan start hostednetwork报“无法启动承载网络”
原因:网卡驱动不支持 IBSS,或者无线服务被禁用。Windows 8 以后很多厂商驱动移除了 Ad-Hoc 支持,尤其是 Intel 部分型号。
解决:先netsh wlan show drivers看“支持的承载网络”是否为“是”。如果是“否”,换一块外置 USB 无线网卡,或者改用 Linux 环境。不要在这上面耗太久,驱动层不支持,软件层无解。
4.3 现象:Linux 下nmcli con up报Connection activation failed (7)
原因:网卡被其他进程占用,或者wpa_supplicant正在管理该接口,导致 NetworkManager 无法切换模式。
解决:先nmcli dev disconnect wlan0,再sudo systemctl stop wpa_supplicant(如果没在用),然后重新nmcli con up adhoc-lab。如果还不行,用dmesg | tail -30看内核有没有报IBSS not supported。
4.4 现象:能 ping 通但传输大文件时断流
原因:Ad-Hoc 没有 ACK 聚合和块确认机制,加上信道共享,大流量下冲突增多,表现为速率骤降甚至短暂断流。另外,电源管理策略可能让网卡休眠。
解决:关闭无线网卡的省电模式,iw dev wlan0 set power_save off。传输时尽量靠近,减少重传。如果必须稳定大流量,换 AP 模式或改用有线。
4.5 现象:重启后 Ad-Hoc 连接消失,需要重新配
原因:nmcli创建的连接默认可能没设autoconnect yes,或者 Windows 的承载网络不会自动恢复。
解决:Linux 下nmcli con modify adhoc-lab connection.autoconnect yes;Windows 下把netsh wlan start hostednetwork写进启动脚本,或者用任务计划程序在登录时触发。注意 Windows 的承载网络在休眠后经常需要手动重启。
5. 进阶:用 iperf3 量化 Ad-Hoc 吞吐,以及一个稳定复现的脚本习惯
跑通 ping 只是第一步,要知道这条链路到底能扛多少流量,得用iperf3压一下。一端做服务端,一端做客户端:
# 服务端(192.168.10.2) iperf3 -s # 客户端(192.168.10.1),跑 10 秒,每 1 秒报一次 iperf3 -c 192.168.10.2 -t 10 -i 1逻辑说明:-s是服务端模式;-c指定服务端 IP;-t 10表示测试 10 秒;-i 1表示每秒输出一次中间结果。参数上,如果想测 UDP 吞吐,加-u -b 10M,-b指定目标带宽。Ad-Hoc 下 TCP 吞吐通常比 UDP 稳,因为 TCP 有重传兜底。实测中,2.4 GHz 信道 6、距离 3 米无遮挡,TCP 单向大约 8~15 Mbps;5 GHz 信道 36 能到 20~30 Mbps。如果低于这个数,先查信道干扰,再看是不是网卡省电没关。
我自己的习惯是:每次搭 Ad-Hoc 之前,先写一个adhoc-up.sh,把nmcli con add/modify/up三行和iw dev wlan0 set power_save off放进去,换机器时改一下ifname和 IP 就能跑。这样避免每次手敲命令漏参数,也方便在实验记录里复现。另一个习惯是,配完先iw dev wlan0 link确认Cell一致,再 ping,再 iperf3,三步走完才算这条 Ad-Hoc 链路真正可用。别跳过链路层检查直接 ping,那样出了问题你连是二层还是三层都分不清。希望帮到你。
本文还有配套的精品资源,点击获取