互換機MAC地址表形成進程動態(tài)演示_第1頁
互換機MAC地址表形成進程動態(tài)演示_第2頁
互換機MAC地址表形成進程動態(tài)演示_第3頁
互換機MAC地址表形成進程動態(tài)演示_第4頁
互換機MAC地址表形成進程動態(tài)演示_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、互換機MAC地址表的形成進程動態(tài)演示今天不經(jīng)意間從電腦里發(fā)覺了自己大學時的一課程設(shè)計,仍是自己在學校時那會比較勤奮,勇于想象,敢天動腦筋仍是貼到那個地址留念一下一、課程設(shè)計的目的路由與互換技術(shù)這門課程的內(nèi)容包括了運算機網(wǎng)絡(luò)的關(guān)鍵技術(shù),要學好這門課程,與實踐是不能分開的。 路由器和互換機已普遍應(yīng)用于運算機局域網(wǎng)及互聯(lián)網(wǎng)中,把握路由器和互換機的利用方式和配置知 識及相關(guān)內(nèi)容,關(guān)于學好路由與互換技術(shù)這門課程有專門 大的幫忙。希望同窗們能夠在一周的時刻里,切實依照課程設(shè)計的要求,結(jié)合所學的理論知識和平常積存 的實踐能力,踴躍查找相關(guān)資料,完成好這次課程設(shè)計,熟悉所選項目的內(nèi) 容,提高網(wǎng)絡(luò)應(yīng)用能力,豐碩

2、自己的網(wǎng)絡(luò)實踐經(jīng)歷,為以后的實際工作積存一些體會。二、設(shè)計內(nèi)容1、設(shè)計題目:互換機MAC地址表的形成進程動態(tài)演示2、原理知識:如果網(wǎng)絡(luò)中的運算機是通過集線器連接的,那么這種網(wǎng)絡(luò)就被稱為共享式以太 網(wǎng)。利用集線器互連的網(wǎng)絡(luò)環(huán)境很容易發(fā)生數(shù)據(jù)的碰撞,因為不管發(fā)送數(shù)據(jù)仍是接收數(shù)據(jù) 都利用同一個數(shù)據(jù)通道,因此,主機在發(fā)送數(shù)據(jù)的同時必需利用接收 線對檢測是不是發(fā)生了碰撞,這種機制使得主機只能以半雙工的模式工作。 另一 方面,集線器是物 理層設(shè)備,通過對信號的中繼放大,延長了網(wǎng)線的通達距離, 擴展了網(wǎng)絡(luò)規(guī)模。網(wǎng)絡(luò)規(guī)模的擴大意味著碰撞域的擴大, 進一步地降低了網(wǎng)絡(luò)的 性能。共享式局域網(wǎng)的特性嚴峻制約著網(wǎng)絡(luò)性

3、能的提高,慢慢地被利用互換機組成的互 換式局域網(wǎng)所取代:(1) 互換機取代集線器解決了碰撞問題。互換機是工作在數(shù)據(jù)鏈路層的設(shè)備(因此 也稱第2層互換機),它能夠識別數(shù)據(jù)幀中封裝的 MAC地址,并依照地址信息把數(shù)據(jù)互換到特定的端口,而不是像集線器工作時那樣,把從一個端口接收到的數(shù) 據(jù)復(fù)制到所有其他端口。如此的工作方式使互換機的不同端口之間可不能產(chǎn)生碰 撞,也確實是說互換性能夠分割碰撞域。 若是一個端口只連接一臺主機的話, 就 等于排除碰撞。(2) 互換機解決了集線器與和它相連的主機不能全雙工通信的問題?;Q機利用 獨立的收、發(fā)通道為每一個接口相連的主機轉(zhuǎn)發(fā)數(shù)據(jù), 如此主性能夠全雙工地工 作。(3

4、) 互換性能夠為任意兩個互換數(shù)據(jù)的端口成立一條獨立的數(shù)據(jù)通道進行 互換數(shù)據(jù),大大提高了數(shù)據(jù)互換的效率?;Q機具有這些特性是由它的工作原理決定的?;Q機依照數(shù)據(jù)幀中封裝的目的地 MAC地址做出轉(zhuǎn)發(fā)數(shù)據(jù)的決定。互換 機在轉(zhuǎn)發(fā)數(shù)據(jù)前必需明白它的每一個端口所連接的主機的MAC地址,構(gòu)建出一個MAC地址表,以便作出正確的轉(zhuǎn)發(fā)決定。當互換機從某個端口收到數(shù)據(jù)幀后,讀 取數(shù)據(jù)幀中封裝的目的地 MAC地址信息,然后查閱事前構(gòu)建的 MAC地 址表, 找出和目的地址相對應(yīng)的端口,從該接口把數(shù)據(jù)轉(zhuǎn)發(fā)出去,其他接口不受阻 礙?;Q機在地址表中找不到目的地址和端口的相對應(yīng)記錄時,那么會把數(shù) 據(jù)向除 數(shù)據(jù)來源端口外的其他

5、所有端口轉(zhuǎn)發(fā),因此廣播數(shù)據(jù)會被互換機轉(zhuǎn) 發(fā)到其所有端口,使得和互換機相連的設(shè)備處于同一個廣播域內(nèi)。下面舉例說明互換機成立地址表的進程。fi I -2上七產(chǎn)應(yīng)當互換機啟動時,初始的 MAC地址表是空的現(xiàn)在,主機A向主機C發(fā)送一個數(shù)據(jù)幀(每一個數(shù)據(jù)幀中都包括有源MAC地址和目的MAC地址),當該數(shù)據(jù)幀從E0端口進入互換機后,互換機通過檢查數(shù)據(jù)幀中的源MAC地址字段,將該字段的值(主機A的MAC地址)放入MAC地址表中,并把它與 E0端口對應(yīng)起來,表 示E0端口所連接的主機是 A。在MAC地址表中沒有關(guān)于目的地 MAC地址(主機C的MAC地址) 的條款,因此互換機將此幀向除E0端口之外的所有端口轉(zhuǎn)發(fā)

6、。從而保證工作站C能收到該幀。其它接口的傳送進程相同。二、設(shè)計方式1.拓撲圖2.設(shè)計思想Computer 發(fā) Messagefrommac,data,tomac,Switcher 從 Computer所在 的port ( 15)接收Message對 Message拆圭寸取得 Message的來源 mac和目標 mac從頭運算機MACTable駐留在內(nèi)存),并存入文件Table.txt,而又 MACTable.txt是記錄MACS每次轉(zhuǎn)變的情形,相當于 Table的日記文件。 (Table.txt 和 MACTable.txt 在 MAC目錄下)必然要先計算 MACTable 再轉(zhuǎn)發(fā),如此運算機

7、若是給自己發(fā)消息的話即 frommac=tomac互換機即能夠直接向消息來的 port轉(zhuǎn)發(fā),就不需要廣播了 .其 實實際情形是若是frommac=tomac,消息在通過運算機網(wǎng)卡時,便立刻返回給 了自己,全然沒有向網(wǎng)絡(luò)上發(fā)布 . 這也是本系統(tǒng)做的一個不符合實際情形的地址, 實際情 況是運算機給自己發(fā)消息,自己收到消息,而互換機的MACTable沒有記 錄源主機的MAC地址.因為時刻傖促沒有及時修改,十分遺憾。其它的工作情形大體符合事實 , 而且運行正常的很。哪怕在系統(tǒng)工作的時 候?qū)?Computer 換接了 Switcher 端口,仍然依照修改后的系統(tǒng)正常工作。3. 開發(fā)工具4. 具體設(shè)計系統(tǒng)

8、工作的步驟:cofrom.SendData(sw);sw.RecvData(cofrom.port,cofrom.mess);sw.ComputeMACTable();sw.SendData();sw.SaveMAC();將MAC勺轉(zhuǎn)變輸出到文件以供查看for(int i=0;i<COMPUTER_NUM;i+)coi.RecvData(message1);程序文件結(jié)構(gòu)Class.h:聲明結(jié)構(gòu)和類Class.cpp :概念類的成員函數(shù)數(shù)數(shù)Main.cpp :主程序struct Message / 消息結(jié)構(gòu)char FromMAC18;char Data1024;char ToMAC18;

9、struct Recordset /MAC 表的記錄結(jié)構(gòu)int p_num;char MAC18;class Computer / 運算機類public:char recvfile20;void PrintInfo();char name20;int port;char MAC18;Message mess;Computer();Computer(char* c_name,int s_port,char* c_MAC);void RecvData(Message s_mess);void SendData(Switcher sw);void BindPort(int s_port);void

10、SetMACAddr(char c_MAC);void SetName(char c_name);void SetData(char* data, char* ToMAC);void SetRecvFile(char *filename);virtual Computer();class Switcherfriend Switcher;/ 互換機類public:void SetName(char sname);char name20;Switcher();void ComputeMACTable();void SendData();void RecvData(int p_num,Message

11、 str_me);void PrintTable();void SaveMAC();Switcher(int s_pnum,char* s_name );friend Computer;virtual Switcher();private:int mess_FromPort;char mess_FromMAC18;int PORTNUM;int mess_ToPort;char mess_ToMAC18;Message buffer;Recordset Temp;vector<Recordset>MACTable;/ 利用創(chuàng)建一個 Recordset 類型的序列容器 MACTAbl

12、e;主程序 (詳細的見程序源代碼 , 有注解 )const COMPUTER_NUM=5;void Graph();/ 打印拓撲圖void Menu();/ 打印可選菜單char SelectNum();/ 等待輸入選項void MakeMessage();/ 構(gòu)造消息void Init();/ 系統(tǒng)初始化char* InputMAC();專門用于輸入 MAC地址并返回其指針void SetComputer();/用于設(shè)置運算機void SetSwitcher();/用于設(shè)置互換機void Start();/ 演示系統(tǒng)運行void Working();/ 環(huán)境系統(tǒng)工作/ 構(gòu)造演示系統(tǒng)的環(huán)境和設(shè)

13、備Switcher sw(5,"switcher");實例一個五口的互換機 名:switcherComputer coCOMPUTER_NUM;概念五臺電腦Message message1;/ 概念一個消息int port;/ 消息從互換機的 port 端口進入int from,to;/ 記錄消息的始 , 終運算機的下標char MAC18;/ 全局 MAC Input() 對其改變并返回指向它的指針/ 主函數(shù) 程序入口int main(int argc,char*)Init();Start();return 0;主程序中的部份函數(shù)char SelectNum()char

14、error='e'char ch2;ch0=getche();ch1=getch();if(ch1='r'|ch1='n')/必然要保證第二個從鍵盤輸入的為回車return ch0;elsereturn error;/不然返回一個 errorvoid MakeMessage()int i=1;char computer_name20;while(i)/ 確保系統(tǒng)中有源主機,直到輸入正確的為至cout<<" 選擇源主機 :"cin>>computer_name;for(i=0;i<COMPUTER_

15、NUM;i+)if(!strcmp(,computer_name)/ 找到這臺運算機from=i;/ 記錄源主機在數(shù)組中的下標port=coi.port;/ 源主機所接入的 switcher 的端口號break;if(i=5)cout<<" 輸入錯誤 !n"elsei=0;i=1;/ 一樣確保系統(tǒng)中有宿主機,直到輸入正確的為至 while(i)cout<<" 選擇宿主機 :"cin>>computer_name;for(i=0;i<COMPUTER_NUM;i+)if(!strcmp(coi.na

16、me,computer_name)to=i;break;if(i=5)cout<<" 輸入錯誤 !n"elsei=0;strcpy(cofrom.mess.FromMAC,cofrom.MAC);/ 構(gòu)造源主機所發(fā)消息的源MAC目標MACstrcpy(cofrom.mess.ToMAC,coto.MAC);port=cofrom.port;strcpy(message1.FromMAC,cofrom.MAC);構(gòu)造系統(tǒng)消息的源 MACS標 MACstrcpy(message1.ToMAC,coto.MAC);cin.getline(message1.Data,1

17、024,'');cout<<" 輸入要發(fā)送的內(nèi)容 (以終止):"/ASSERT(message1.Data0='r');/ 用宏調(diào)試出message1.Data0為'r'/ 因此要過濾第一個字符 'r'for(i=0;i<1024&&message1.Datai!='0'i+)message1.Datai=message1.Datai+1;strcpy(cofrom.mess.Data,message1.Data);/ 構(gòu)造源主機所發(fā)消息的數(shù)據(jù)部份char* I

18、nputMAC()int i;string temp;bool error=true;while(error)/直到輸入正確的MAC形式如"fd-ae-bc-97-65-01"string:"cin>>temp;cout<<"inputif(temp.length()!=17)/輸入的字符長度不是 17 立刻跳到最后錯誤立刻跳到最后+2)!='-')error=true;goto last;error=true;goto last;for(i=0;i<5;i+)/ 只要有一個if(temp.at(3*i個不在

19、 "0123456789abcdef" 中產(chǎn)生錯誤for(i=0;i<18;i=i+3)/ 只要一if(!( (temp.at(i)>='0'&&temp.at(i)<='9')|(temp.at(i)>='A'&&temp.at(i)<='F')|(temp.at(i)>='a'&&temp.at(i)<='f') )cout<<" 輸入有cout<<&q

20、uot; 輸入有&&!(temp.acout<<" 輸入有t(i+1)>='0'&&temp.at(i+1)<='9')|cout<<" 輸入有cout<<" 輸入有(temp.cout<<" 輸入有at(i+1)>='A'&&temp.at(i+1)<='F')|cout<<" 輸入有cout<<" 輸入有(temp.at(i+

21、1)>='acout<<" 輸入有'&&temp.at(i+1)<='f') error=true;goto last;error=false;/ 若是程度執(zhí)行到last:那個地址確信是正確的MAC沒有errorif(error)錯誤n"cout<<" 輸入有elsefor(i=0;i<temp.length();i+)MACi=tempi;MACi='0'/正確的MAC退出while(error) 返回MAC return MAC;void Start()b

22、ool flag=true;char num_select;while(flag)system("cls");Menu();Graph();num_select=SelectNum();switch(num_select)case'1':cout<<endl;cin.clear();/ 清空輸入流MakeMessage();Working();cout.flush();system("pause");break;case'2':cout<<endl;sw.PrintTable();cout.flus

23、h();/ 刷新輸出流system("pause");/ 暫停break;case'3':cout<<endl;if(port>0&&port<6)/ 構(gòu)造消息 以后從互換機哪個 port 進入是確信的 15/ 才能工作Working();elsecout<<" 先構(gòu)造消息 n"cout.flush();system("pause"); break;case'4':cout<<endl;SetComputer();cout.flush();

24、case'5':case'6':system("pause");break;cout<<endl;SetSwitcher();cout.flush();system("pause");break;/ 退出程序終止 while(flag)cout<<endl;flag=false;break;default:cout<<endl;cout<<" 選擇錯誤從頭選擇 "system("pause");break;void Working()c

25、ofrom.SendData(sw);sw.RecvData(cofrom.port,cofrom.mess);sw.ComputeMACTable();sw.SendData();sw.SaveMAC();將MAC勺轉(zhuǎn)變輸出到文件以供查看for(int i=0;i<COMPUTER_NUM;i+)coi.RecvData(message1);四、軟件說明書1. 界面如下圖A h c D E *A.1f機乩a L _MBa. L1 11-11-11 11'llQI !2-2 2-23 -22-12-2KD:55-55-55-55-15-5507諄.二十京電 一1直rwt 二 ->>>>>> -1 2 3 4- E h.1 耳7 Dwiitcherti 1為沢盲主hm_'扎獸蜀芒的內(nèi)容血練沁綠 好轉(zhuǎn) 訂利".畫±1賁據(jù)心幣 - Ult4 h"叢筑 lImgi"向朝口*畫巒耀:MHh寸空堤口N壇:上欲戶;Mlf <h«S80fa 4 W:®: irltcliej' 豐匚F r 較頂;2. 操作流程MAC表形成演示1. 構(gòu)造消息2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論