目录
[1️⃣3.1 网络初始化与参数配置](#1️⃣3.1 网络初始化与参数配置)
[2️⃣3.2 定向随机步阶段](#2️⃣3.2 定向随机步阶段)
[3️⃣3.3 下一跳选择概率模型](#3️⃣3.3 下一跳选择概率模型)
[4️⃣3.4 幻影节点生成](#4️⃣3.4 幻影节点生成)
[5️⃣3.5 最短路径转发阶段](#5️⃣3.5 最短路径转发阶段)
✅1.引言
定向步幻影路由(Directed Step Phantom Routing, DSPR)是面向无线传感器网络(WSN)源节点位置隐私保护的核心路由机制,通过"定向随机游走+最短路径转发"的两阶段传输,在攻击者反向追踪时制造虚假路径,显著提升源节点位置隐匿性,同时平衡网络能耗与传输时延。该算法核心是在数据包传输初期引入可控随机步,生成 "幻影源" 混淆攻击者,后续沿最优路径向汇聚节点(Sink)传输,兼顾隐私安全与传输效率。
👉2.算法测试效果


💡3.算法涉及理论知识概要
1️⃣3.1 网络初始化与参数配置
网络部署完成后,所有节点通过定位协议(如RSSI、TOA)获取自身坐标,并广播至一跳邻居节点;源节点S与汇聚节点Sink完成身份初始化,配置核心参数:
定向随机步长h:控制幻影路径长度,通常取3~8跳(平衡隐私与能耗);
方向权重系数α:控制随机步的定向性,α∈[0,1],α越大,随机步越偏向预设方向;
通信半径R:节点有效通信范围,决定邻居节点集合。
2️⃣3.2 定向随机步阶段
源节点S生成数据包后,启动h步定向随机游走,每一步按"方向优先+随机选择"规则选择下一跳节点,最终抵达幻影节点P:
初始化当前节点为源节点S,步数计数器k=0;
计算当前节点vₖ的邻居节点集N(vₖ),筛选出非回溯节点(排除上一跳节点,避免环路);
基于预设方向(通常为与Sink方向垂直或反向),计算邻居节点的方向权重,按权重概率选择下一跳节点vₖ₊₁;
步数k自增1,重复步骤2~3,直至k=h,当前节点即为幻影节点P。
3️⃣3.3 下一跳选择概率模型
结合方向权重α与随机因子(1-α),定义邻居节点vⱼ的被选概率:

其中N'(vₖ) 为vₖ的非回溯邻居集,ωⱼ为节点vⱼ的随机权重(通常取1,保证基础随机性)。
4️⃣3.4 幻影节点生成
经过h步概率选择后,最终节点即为幻影节点P,满足:

5️⃣3.5 最短路径转发阶段
幻影节点P接收数据包后,启动最短路径转发流程,将数据包高效传输至Sink:
幻影节点P广播路由请求(RREQ),全网节点基于拓扑信息计算到Sink的最短路径;
采用Dijkstra算法构建最短路径树,确定P到Sink的最优路径P→vₐ→vᵦ→...→Sink;
沿最短路径逐跳转发数据包,直至抵达Sink,完成传输。
❤️4.MATLAB核心程序
%定向步幻影路
%基于跳数的定向随机步路由hwalk
Dist2= [];
indx = [];
for i = 1:Node
Dist2(i) = abs(sqrt((X(i) - X(Sn))^2 + (Y(i) - Y(Sn))^2));
if Dist2(i) <= Radius & Dist2(i) > 0
indx = [indx,i];
end
end
%随机12
Index2 = randperm(length(indx));
Index2_= indx(Index2(1:min(hwalk,length(Index2))));
%段是最短路径路
[paths,costs] = func_dijkstra(Index2_(end),En,dmatrix);
path_distance = 0;
for d=2:length(paths)
path_distance = path_distance + dmatrix(paths(d-1),paths(d));
end
✨5.完整算法代码文件获得
完整程序见博客首页左侧或者打开本文底部GZH名片
( V关注后回复码 :X133)
V