matlab實現洪氾路由的模擬,採用dfs演算法,直接上**。
flooding.m
clear;clc;
%global ttl;
ttl=7;%設定最大傳輸跳數為7
%% 初始化無線感測網示意圖
%.感測器節點區域界限
envsize=10;
%區域內感測器數量
global numofnodes;
numofnodes=100;
global radius;%作用範圍
radius=1.5;
global xlocation;
global ylocation;
xlocation = rand(numofnodes,1) * envsize;
ylocation = rand(numofnodes,1) * envsize; %x,y座標
global srcx;
global destx;
srcx = floor(rand(1,1) * numofnodes)+1; %第srcx個節點作為源節點
destx = floor(rand(1,1) * numofnodes)+1;%第destx個節點作為目的節點
global success;%標記是否成功訪問到目的節點
success=0;
global visited;%標記節點是否被訪問過
visited=zeros(1,100);%初始時都未被訪問
global route;%記錄傳輸路徑
route=;
%% 畫圖
figure(1);hold on;
plot(xlocation, ylocation, '.');
plot(xlocation(srcx),ylocation(srcx),'ko','marke***cecolor','k','markersize',3);
plot(xlocation(destx),ylocation(destx),'ko','marke***cecolor','k','markersize',3);
text(xlocation(srcx),ylocation(srcx), '源節點');
text(xlocation(destx),ylocation(destx), '目的節點');%標記源節點和目的節點
src=[xlocation(srcx),ylocation(srcx)]; dest=[xlocation(destx),ylocation(destx)];
%% 建立距離矩陣
global distmatrix;
distmatrix = zeros(numofnodes);
for i=1:numofnodes
for j=i+1:numofnodes
distmatrix(i,j)=distance([xlocation(i),ylocation(i)],[xlocation(j),ylocation(j)]);
enddistmatrix(i,i)=10;%排除自身節點
enddistmatrix = distmatrix+distmatrix';
%% 開始查詢
dfs(srcx,ttl);
%% 畫出傳輸路徑圖
if(ismember(destx,route))
disp('傳輸成功')
j=length(route);
while(j~=1)
for i=1:j-1
if(distmatrix(route(i),route(j))<=radius&&i~=j-1)
route(i+1:1:j-1)=;
break;
endend
j=i;
endelse
route=;
disp('傳輸失敗');
endplot(xlocation(route),ylocation(route),'ro','marke***cecolor','r','markersize',3);
dfs.m
function = dfs(r,ttl)% r:源節點 ttl:生存週期
%% global success;
global visited;%標記節點是否被訪問過
global distmatrix;%節點間的距離矩陣
global destx;%目的節點
global radius;%作用範圍
global route;%記錄傳輸路徑
visited(r)=1;
if(success==1||ttl<0)
return;
endif(~ismember(r,route))
route=[route,r];
else
temp=find(route==r);
route=[route,r];
route(temp+1:1:end)=;
endneighbornodes=find(distmatrix(r,:)<=radius);%查詢在作用範圍內的鄰節點
neighbornodes=intersect(neighbornodes, find(visited(:) == 0));%找到可訪問的 neighbornodes是列向量
if(ismember(destx,neighbornodes))%如果鄰節點中含有目的節點
success=1;
route=[route destx];
return;
end%% 遞迴程式的出口
if (isempty(neighbornodes))%鄰節點為空
route(end)=;%刪除當前源節點,返回上一層
%route=;
return;
end%% 遞迴--當前節點的鄰節點中不含有目的節點,從其鄰節點開始查詢
ttl=ttl-1;
for k = 1:length(neighbornodes)
% if (visited(neighbornodes(k)) == 0)
if(neighbornodes(k)==destx)%當傳給中心點時結束
success=1;
break;
end;
dfs(neighbornodes(k),ttl);
%end;
end;
distance.m
%% 求兩個節點之間的距離
function dis = distance(a,b)
dis = sqrt((a(1)-b(1))^2+(a(2)-b(2))^2);
end
傳輸成功後的示意圖:紅色節點表示傳輸路徑,源節點和目的節點都是隨機生成的
輸出失敗後的示意圖:只標記出了源節點和目的節點,沒有傳輸路徑
非同步路由 單播泛洪產生的安全偵聽風險
存在於經典網路架構中的乙個資訊竊取風險 背景 核心交換機和其他idc用三層互聯,和接入交換機執行二層網路。核心交換機執行 vrrp 做本idc 內網閘道器 左邊為主,右邊為備 現有其他 idc需訪問本 idc內 10.1.1.1 拓撲 流量走向 入向流量 1 目的為10.1.1.1的流量到達右邊核心...
泛洪與廣播的區別
首先解釋一下arp請求,位址解析協議,即arp address resolution protocol 是 根據ip位址 獲取物理 位址的乙個tcp ip協議。主機傳送資訊時將包含目標ip位址的arp請求廣播到網路上的所有主機,並接收返回訊息,以此確定目標的 實體地址 收到返回訊息後將該ip位址和實...
MAC位址泛洪攻擊的原理
mac位址泛洪攻擊的原理 交換機中有一張叫做mac的表,但它的大小有限制,交換機的乙個原理是會自動學習並記錄mac位址。而攻擊者就利用交換機的mac位址學習機制,不斷的進行mac位址重新整理,迅速填滿交換機的mac位址表,以至崩潰,使得交換機不得不使用廣播發包,從而獲取其他人的報文資訊。實驗所需要安...