MATLAB實現洪氾路由的模擬

2021-09-22 18:28:50 字數 3585 閱讀 6366

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位址表,以至崩潰,使得交換機不得不使用廣播發包,從而獲取其他人的報文資訊。實驗所需要安...