計算機網路1 距離向量路由演算法模擬

2021-07-13 15:13:25 字數 2561 閱讀 9334

網路拓撲圖

實驗過程描述

1、將上面的網路拓撲圖儲存待用

例如,可用二維陣列儲存,陣列下標或索引可隱含表示網路節點。陣列元素儲存網路拓撲圖邊上的權值

2、為每個網路節點初始化並儲存一張路由表

例如,可以用單鏈表表示乙個網路節點的路由表,單鏈表的每個結點儲存乙個表項資訊;表項資訊是乙個三元組(目的節點,下一跳,開銷),可用結構體表示。結構體包括四個字段:目的節點,下一跳,開銷,指向下乙個結點的指標。以網路節點a為例,它的初始路由表僅包含兩個表項,如下所示:

可將所有網路節點的路由表頭指標儲存在乙個一維陣列中,陣列下標或索引可隱含表示網路節點。

3、給每個網路節點一次執行距離向量路由更新的機會,可用乙個迴圈達到此效果

例如,當a執行距離向量路由更新時,它需要它的鄰居b和g的路由表,這裡可忽略b和g傳送路由表的操作,直接使用即可。

a更新前的路由表不能丟棄,原因有二:一、需要與更新後的路由表比較,看是否有變化;二、在a的鄰居節點執行距離向量路由更新時,它使用的是a的舊表,儘管此方式並非實際所用,但我們要求採用此種方式模擬所有節點同時進行路由更新的效果。

距離向量路由更新的過程見書。

需要記錄這一次路由更新過程中,每個節點的路由表是否發生變化。可用乙個布林變數來標記,初始化這個布林變數為「假」,若出現乙個網路節點的路由表發生變化的情況就置為「真」。

4、若布林變數為「真」,則累加一次更新記錄,並重複開始步驟3;若為「假」,則所有節點的路由表穩定了,可以輸出乙個節點從初始到穩定的所有路由表資料以及更新次數。

1.用c語言來實現(結構化程式設計)

根據上述實驗內容來做。一點一點實現即可。

2.實驗中的注意點和難點。

(1)注意記憶體**,不要造成記憶體洩漏。即每乙個malloc都要與乙個free對應,申請的記憶體用完後要記得釋放。

(2)全域性變數的使用要注意,因為程式中哪兒都可以修改全域性變數的值。

(3)要注意模組化,主函式要短小精悍,將每個功能都用乙個函式實現。

/*距離向量路由演算法實驗模擬 

輸入:網路拓撲圖,表示網路中結點之間的聯絡

輸出:乙個節點(結點a)從初始到穩定的所有路由表資料以及更新次數。

*/#includeusing namespace std;

#define n 8

struct node

;typedef node* nodeptr;

int graph[n][n]; //儲存網路拓撲圖

nodeptr routeheaders[n]; //舊路由表 儲存路由表頭指標

nodeptr newrouteheaders[n]; //新的路由表

int gxcount = 0; //更新次數

bool ischange=false; //更新一次後,路由表是否改變

void initgraph(); //初始化網路拓撲圖

void initroutetable(); //初始化路由表

void showroutetable(nodeptr head); //列印某個結點的路由表

nodeptr copyroutetable(nodeptr head); //複製某個結點的路由表,返回頭指標

void deleterouteheaders(nodeptr head); //刪除以head為頭結點的路由表,該實驗主要用來刪除舊表

void update(); //進行更新,由舊表得到新錶

int main()

cout

} void showroutetable(nodeptr head)

}nodeptr copyroutetable(nodeptr head)

return newtable;

} //更新路由表

void update()

//根據獲得的路由表去更新路由資訊

nodeptr t2 = head; //t2指向獲取的路由表

while(t2)

}else else

//否則什麼也不做 }}

t2 = t2->nextnode;

}

}}

newrouteheaders[i] = newtable; }

for(int i=0; inextnode;

while(t1)

}

1.因為這學期來,實際寫**的時間比較少,都已經生疏了。所以這次實驗自己做的並不順利,中間停停寫寫好幾次才做出來,甚至其中有過幾次要放棄。所幸自己最後還是堅持下來並且做出來了。

2.自己在做的過程中,發現自己的基本碼**能力還是不夠強,所以以後還是要多多練習。希望自己以後再看這些**的時候,會認為這些**很low,會將**進行更多的改進。

3.通過此次實驗,對距離向量路由演算法有了比較清楚的認識。所以說實踐是學習知識的最好途徑,以後要多動手做實驗,以便於更好的理解理論。

計算機網路 RIP協議距離向量演算法

include include includeusing namespace std bool rout 12 struct net struct router 各網路更新時間 初始化為0 r 12 void initroutetable void merge int x,int y,int tim...

計算機網路 路由演算法

路由演算法,又名選路演算法,可以根據多個特性來加以區分。演算法的目的是找到一條從源路由器到目的路由器的 好 路徑 即具有最低費用的路徑 演算法設計者的特定目標影響了該路由協議的操作 具體來說存在著多種路由演算法,每種演算法對網路和路由器資源的影響都不同 由於路由演算法使用多種度量標準 metric ...

計算機網路 一 1 計算機網路簡介

1.2.網際網路發展 1.3.網際網路標準化 1.1.網路,網際網路,網際網路 先講一下計算機網路 network 就是將一台以上的計算機互連起來,互連的計算機之間可以實現通訊,實現資訊共享,這就是網路。那麼,什麼是網際網路,網際網路的英文是 internet,它的意思是 網路的網路 是乙個通用名詞...