WIFI无线网络之Wi-Fi Direct(Wi-Fi P2P)协议

Wi-Fi Direct 简介

Wi-Fi Direct(Wi-Fi P2P) 是由 Wi-Fi 联盟(Wi-Fi Alliance) 推出的一种基于 IEEE 802.11 标准的无线通信协议,允许设备在 不依赖路由器或接入点(AP) 的情况下,直接建立点对点连接。广泛用于 文件共享、无线投屏、打印、游戏联机等场景

Wi-Fi Direct 协议栈大致结构

+-----------------------------+
|        Application Layer    |   (Miracast, RTSP, UPnP)
+-----------------------------+
|       Wi-Fi Direct Layer    |   (Group Formation, Negotiation)
+-----------------------------+
|        IEEE 802.11 MAC      |   (MAC 层协议处理)
+-----------------------------+
|           PHY               |   (物理层,Wi-Fi 射频)
+-----------------------------+

Wi-Fi Direct vs IBSS(Ad-Hoc)

Wi-Fi Direct(Wi-Fi P2P) 和 IBSS(Independent Basic Service Set,即 Ad-Hoc 模式) 都是用于实现设备之间“点对点”通信的技术。虽然它们都允许设备不通过接入点(AP)直接通信,但在协议架构、功能支持、安全性、应用场景等方面有显著差异。在前面介绍 IBSS 的时候也简单对比过:https://notes.z-dd.online/2025/05/03/WIFI%E6%97%A0%E7%BA%BF%E7%BD%91%E7%BB%9C%E4%B9%8BIBSS(Ad-Hoc)%E6%A8%A1%E5%BC%8F/

对比维度 Wi-Fi Direct IBSS(Ad-Hoc)
标准协议 IEEE 802.11z(Wi-Fi Alliance 定义) IEEE 802.11 原生支持
连接方式 支持 Group Owner(GO)角色,可作为临时 AP 所有设备地位相同,无中心节点
是否需要路由器
IP 分配机制 GO 可充当 DHCP 服务器分配 IP 需手动配置或使用自定义 DHCP
安全性 支持 WPA/WPA2 加密和 WPS 快速配对 通常不加密,或仅支持 WEP(老旧)
服务发现机制 支持 SSDP/DNS-SD 等服务发现 不支持自动服务发现
带宽/速率 高(支持 802.11n/ac) 较低(通常为 802.11b/g)
延迟表现 低延迟,适合实时应用 延迟较高,不适合视频串流
组网能力 支持多设备连接(一个 GO 可连接多个 Client) 多设备共享同一信道,容易冲突
兼容性 Android、Linux、Windows 支持较好 老系统支持好,现代系统支持差
典型应用 Miracast 投屏、文件传输、打印 局域网直连、旧版游戏联机
驱动支持要求 需要 nl80211 和 mac80211 支持 P2P 支持较广,但功能有限

Wi-Fi Direct vs Bluetooth

Wi-Fi Direct 结合了传统 Wi-Fi 的高速率和蓝牙的便捷性,使两个 Wi-Fi 设备可以像蓝牙一样直接配对连接,但具备更高的带宽和更低的延迟。

对比项 Wi-Fi Direct Bluetooth
最大速率 几百 Mbps 通常 < 3 Mbps
连接距离 100 米左右 10 米以内
功耗 较高 较低(BLE 更省电)
配对速度 较快
是否需要中间设备
安全性 支持 WPA2 支持 AES 加密
适用场景 高带宽需求(如视频) 低功耗、小数据量(如耳机)

Wi-Fi Direct vs Miracast

对比项 Wi-Fi Direct Miracast
定位 通用连接协议 视频投屏协议
基础 IEEE 802.11 基于 Wi-Fi Direct
功能 任意类型的数据传输 视频流 + 音频流
编码格式 H.264、HDCP 等 H.264
应用场景 文件共享、打印、IoT 手机投电视、PC 投电视

基本工作原理

Wi-Fi Direct 基于 IEEE 802.11 协议族,并引入了一些新的机制来实现点对点通信:

1. Group Formation(组形成)

  • 两个或多个设备协商谁作为“Group Owner”(GO),相当于临时 AP。
  • GO 负责管理 IP 分配、信道选择、安全认证等。
  • 其他设备为 Client,连接到 GO。

2. 服务发现机制(Service Discovery)

  • 支持 SSDP、DNS-SD 等协议,用于查找其他设备上可用的服务(如打印机、媒体服务器)。
  • 用户可以通过搜索找到附近的设备并发起连接。

3. 安全连接机制(WPS/WPA2)

  • 使用 WPS(Wi-Fi Protected Setup)进行快速配对。
  • 使用 WPA2 加密保证数据传输的安全性。

关键概念解释

  • Group Owner (GO) :类似临时 AP,负责管理连接和网络配置
  • Client :连接到 GO 的设备
  • Device Discovery :发现附近支持 Wi-Fi Direct 的设备
  • Negotiation :协商哪个设备成为 GO
  • WPS(Wi-Fi Protected Setup) :快速配对机制,包括 PBC(按钮连接)、PIN 码配对等方式
  • RTSP / Miracast :常见的应用层协议,用于视频投屏

主要特性

特性 描述
无需路由器 直接连接,无需中间设备
高带宽支持 最大速率可达数百 Mbps(取决于 Wi-Fi 标准)
低延迟通信 更适合实时应用(如音视频串流)
兼容传统 Wi-Fi 可与普通 Wi-Fi 网络共存
支持多设备连接 一个 GO 可以连接多个客户端
支持 IPv4/IPv6 自动分配 IP 地址

典型应用场景

应用 描述
无线打印 手机直接连接打印机打印文档
多媒体串流(Miracast) 手机将屏幕内容投射到电视或 PC
文件共享 在设备之间直接传输照片、视频等文件
游戏联机 多人本地游戏通过 Wi-Fi Direct 连接
远程控制 控制无人机、摄像头等 IoT 设备
车载系统互联 手机连接车机系统播放音乐或导航

Linux 下简单测试 Wi-Fi Direct

前提条件

  • WIFI芯片 :支持 IEEE 802.11n/ac 并支持 P2P
  • 驱动支持 :必须支持 nl80211 接口,且芯片相关驱动需支持

1. 查看wifi是否支持p2p

查看当前无线接口是否支持 P2P:

iw list

输出中应包含类似字段:

Supported interface modes:
	 * managed
	 * AP
	 * P2P-client
	 * P2P-GO

2. 确保wpa_supplicant已启用

从 v2.0 开始支持 Wi-Fi Direct,确保wpa_supplicant(核心守护进程)已启用未启用则启用:

示例命令:

sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -D nl80211

3. 使用wpa_cli简单测试p2p

可以按以下步骤进行简单测试:

  • 机器 A(GO)
    
    sudo wpa_cli -i wlan0
    ## 在交互模式下:
    > p2p_group_add        # 创建 Group
    > quit
    sudo ip addr add 192.168.44.1/24 dev p2p-wlan0-0
    sudo ip link set p2p-wlan0-0 up
    ##启动 DHCP 服务器(可选)
    sudo dnsmasq --interface=p2p-wlan0-0 --dhcp-range=192.168.44.100,192.168.44.200,255.255.255.0 --dhcp-option=3,192.168.44.1 --no-daemon
  • 机器 B(Client)
    sudo wpa_cli -i wlan0
    # 在交互模式下:
    > p2p_find      # 开始扫描
    > p2p_peers		# 查看已发现设备
    > p2p_connect <GO_MAC> pbc go_intent=0   # 连接设备
    > quit

    总结

项目 内容
中文名称 Wi-Fi 点对点 / Wi-Fi 直连
英文名称 Wi-Fi Direct / Wi-Fi P2P
标准组织 Wi-Fi Alliance
协议基础 IEEE 802.11(含 802.11z)
主要用途 设备直连、无线投屏、文件共享等
优势 高带宽、低延迟、无需路由器
劣势 功耗较高、配置复杂
支持平台 Android、Linux、Windows、嵌入式系统