中南大学计算机网.doc,中南大学计算机网络实验报告.doc
計算機網絡實驗報告0909122820周建權
第
第 PAGE \* MERGEFORMAT 1 頁 共 NUMPAGES \* MERGEFORMAT 11 頁
計算機網絡實驗報告
專業班級:信安1202班
指導老師:王偉平
姓 名:周建權
學 號:0909122820
實驗二 網絡路由層協議模擬實驗
網絡路由算法是路由器工作的核心,本實驗針對因特網常用的距離向量路由算法和鏈路狀態路由算法進行模擬實現,進一步掌握其工作原理及其相關性能。
【實驗目的和要求】
掌握VB、VC++、VS或JAVA等集成開發環境編寫路由仿真程序的方法;
理解并掌握距離向量路由協議和鏈路狀態路由協議的工作原理。
【實驗內容】
2.實現鏈路狀態路由算法的模擬。
基本要求(動態生成網絡拓撲圖,節點間的距離隨機生成。每個節點生成自己的鏈路狀態分組,依據收到的鏈路狀態表得到整體網絡結構,在得到的整體網絡結構上用最短路徑算法,生成每個節點的路由表)
進一步的要求:可以將模擬實驗的每個節點程序部署在不同的電腦上,通過socket通信程序完成路由表信息或者鏈路狀態分組的發送(與實驗三結合)。請用兩臺機器虛擬成多個網絡節點(一臺機器上開啟多個通信進程,每個進程虛擬成一個節點),完成每個虛擬節點的路由表生成,進而按照路由表轉發數據包。
【編程語言和環境】
編程語言C++
編程環境Windows(MS Visual系列,VC/VB/VS.Net;)
【基本原理】
在一個鏈路狀態路由選擇中,一個結點檢查所有直接鏈路的狀態,并將所得的狀態信息發送給網上所有的其他的結點,而不僅僅是發給那些直接相連的結點。每個節點都用這種方式,所有其他的結點從網上接收包含直接鏈路狀態的路由信息。
每當鏈路狀態報文到達時,路由結點便使用這些狀態信息去更新自己的網路拓撲和狀態“視野圖”,一旦鏈路狀態發生改變,結點對跟新的網絡圖利用Dijkstra最短路徑算法重新計算路由,從單一的報源發出計算到達所有的結點的最短路徑。
【實現過程】
1.流程圖
輸入數據 初始化連接矩陣 迪杰斯特拉算法 打印路徑
部分代碼
void createGraph(int *arcs[],int & num){
//創建并初始化網絡拓撲圖
cout<
for (int i=0;i
arcs[i]=new int [num];
for(int j=0;j
cin>>arcs[i][j];
}
}
void Dijkstra(int * arcs[],int * R[],int RL[],int vexnum){
//迪杰斯特拉算法
int v0; //定義源節點
bool * visit=new bool [vexnum];//已經確定最短路徑的節點的集合
cout<
cin>>v0;
cout<
for(int cnt=0;cnt
visit[cnt]=FALSE;
RL[cnt]=arcs[v0][cnt];
if(RL[cnt]
R[cnt][0]=v0;
R[cnt][1]=cnt;
}
} //for
RL[v0]=0;//源節點的標志
visit[v0]=TRUE; //初始化已經找到最短路徑的點集合
for(int i=1;i
int min=INFINITY;
int v=v0;
for(int j=0;j
if(!visit[j])
if(RL[j]
v=j;
min=RL[j];
}
visit[v]=TRUE; //離v0頂點最近的v加入到s集
for(int k=0;k
if(!visit[k]&&(min+arcs[v][k]
//modify shortest r[j] and RL[j]
RL[k]=min+arcs[v][k];
updateRouteLen(R[k],R[v],k,vexnum);
}//if
}//for
de
總結
以上是生活随笔為你收集整理的中南大学计算机网.doc,中南大学计算机网络实验报告.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微型计算机使用键盘上的alt键称为,微型
- 下一篇: 三星电脑屏幕怎么打开软件(三星电脑屏幕怎