網路拓撲圖
實驗過程描述
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,它的意思是 網路的網路 是乙個通用名詞...