模擬實現透明網橋的自學習與過濾功能

2021-07-27 16:51:11 字數 2707 閱讀 9207

模擬實現透明網橋的自學習與過濾功能

實驗內容:

看了實驗內容之後,重新溫習了書中網橋自學習的知識點。梳理網橋自學習演算法的流程。試驗中用於網橋測試其學習和過濾功能的網路結構如下:

① 當 a 向 b 傳送幀時,網橋 b1 會先按源位址 a 查詢**表。如果在網橋 b1 中沒有 a 的位址,於是會把 a 和收到此幀的藉口 1 寫入**表。接著再按目的位址 b 查詢**表,**表中沒有 b 的位址,就會把 b 用另乙個介面 2 **出去。網橋 b2 收到這個發過來的幀。

② 對於網橋 b2 按同樣的方式處理收到的幀。網橋 2 的**表中沒有 a 的位址,因此會在**表中寫入位址 a 和介面 1. 網橋 b2 的**表中沒有 b 的位址,因此網橋 2 通過介面 4 傳送此幀。

③ b 向 a 傳送幀 網橋 b1 會從其介面 1 收到該幀。同理,網橋 b1 的**表中沒有 b, 則會把源位址 b 和介面 1 寫入**表。而對於目的位址 a,網橋 b1 的**表中存在 a,**介面也是 1,網橋 b1 會把次幀丟棄。

實現 實驗採用 c 語言實現,採用二維陣列來表示網橋的**表。

**實現如下:

#include

void main()

; char arr2[2]=;

char arr3[3]=;

int a[2]=;

int b[2]=;

int i,j,m,n,k1 = 0,k2 = 0,t=0;

char s,d,k;

while(1)

for(i=0;i<2;i++)

for(i=0;i<3;i++)

switch(m)

} if(i==k1) //沒有記錄,在網橋陣列中插入源位址

for(i=0;i//查詢網橋陣列中是否有目的位址

} if(i==k1) printf("網橋1中沒有目的記錄%c,向右**\n",d);//不含有,**

else

//含有且在同在網段丟棄

else

printf("不在同一網段,網橋1向右**\n");//含有不在同一網段**

} if(t!=1) //不在同一網段時

if(i==k1) //沒有記錄,在網橋陣列中插入源位址

for(i=0;i//查詢網橋陣列中是否有目的位址

} if(i==k2) printf("網橋2中沒有目的記錄%c,向右**\n",d);//不含有,**

else

} break;

} case

2:

if(i==k1) //沒有記錄,在網橋陣列中插入源位址

for(i=0;i//查詢網橋陣列中是否有目的位址

} if(i==k1) printf("網橋1中沒有目的記錄%c,向左**\n",d);//不含有,**

else

//向右**

for(i=0;iif(b[i][0]==s)

if(i==k2) //沒有記錄,在網橋陣列中插入源位址

for(i=0;i//查詢網橋陣列中是否有目的位址

} if(i==k2) printf("網橋2中沒有目的記錄%c,向右**\n",d);//不含有,**

else

break;

} case

3:

if(i==k2) //沒有記錄,在網橋陣列中插入源位址

for(i=0;i//查詢網橋陣列中是否有目的位址

} if(i==k2) printf("網橋2中沒有目的記錄,向左**\n");//不含有,**

else

//含有且在同在網段丟棄

else

printf("不在同一網段,網橋2向左**\n");//含有不在同一網段**

} if(t!=1)//不在同一網段時

if(i==k1) //木有記錄,在網橋陣列中插入源位址

for(i=0;i//查詢網橋陣列中是否有目的位址

} if(i==k1) printf("網橋1中沒有目的記錄%c,向左**\n",d);//不含有,**

else

} break;

} default: ;

} putchar('\n');

printf("網橋1\n");

printf("--------\n");

for(i=0;iprintf(" %c ",a[i][0]);

printf("%d ",a[i][1]);

putchar('\n');

} printf("--------\n");

printf("網橋2\n");

printf("--------\n");

for(i=0;iprintf(" %c ",b[i][0]);

printf("%d ",b[i][1]);

putchar('\n');

} printf("-------\n");

scanf("%c",&k);

} }

C語言模擬實現C 的繼承與多型

一 面向過程程式設計與物件導向程式設計的區別 眾所周知,c語言是一種典型的面向過程程式語言,而c 確實在它的基礎上改進的一款物件導向程式設計語言,那麼,面向過程與物件導向到底有什麼樣的區別呢?從設計方法角度看 面向過程程式設計方法採用函式 或過程 來描述對資料的操作,但又將函式與其操作的資料分離開來...

C語言模擬實現C 的繼承與多型

一 面向過程程式設計與物件導向程式設計的區別 眾所周知,c語言是一種典型的面向過程程式語言,而c 確實在它的基礎上改進的一款物件導向程式設計語言,那麼,面向過程與物件導向到底有什麼樣的區別呢?從設計方法角度看 面向過程程式設計方法採用函式 或過程 來描述對資料的操作,但又將函式與其操作的資料分離開來...

C語言模擬實現C 的繼承與多型示例

一 面向過程程式設計與物件導向程式設計的區別 眾所周知,c語言是一種典型的面向過程程式語言,而c 確實在它的基礎上改進的一款物件導向程式設計語言,那麼,面向過程與物件導向到底有什麼樣的區別呢?從設計方法角度看 面向過程程式設計方法採用函式 或過程 來描述對資料的操作,但又將函式與其操作的資料分離開來...