版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、互換機(jī)MAC地址表的形成進(jìn)程動態(tài)演示今天不經(jīng)意間從電腦里發(fā)覺了自己大學(xué)時(shí)的一課程設(shè)計(jì),仍是自己在學(xué)校時(shí)那會比較勤奮,勇于想象,敢天動腦筋仍是貼到那個(gè)地址留念一下一、課程設(shè)計(jì)的目的路由與互換技術(shù)這門課程的內(nèi)容包括了運(yùn)算機(jī)網(wǎng)絡(luò)的關(guān)鍵技術(shù),要學(xué)好這門課程,與實(shí)踐是不能分開的。 路由器和互換機(jī)已普遍應(yīng)用于運(yùn)算機(jī)局域網(wǎng)及互聯(lián)網(wǎng)中,把握路由器和互換機(jī)的利用方式和配置知 識及相關(guān)內(nèi)容,關(guān)于學(xué)好路由與互換技術(shù)這門課程有專門 大的幫忙。希望同窗們能夠在一周的時(shí)刻里,切實(shí)依照課程設(shè)計(jì)的要求,結(jié)合所學(xué)的理論知識和平常積存 的實(shí)踐能力,踴躍查找相關(guān)資料,完成好這次課程設(shè)計(jì),熟悉所選項(xiàng)目的內(nèi) 容,提高網(wǎng)絡(luò)應(yīng)用能力,豐碩
2、自己的網(wǎng)絡(luò)實(shí)踐經(jīng)歷,為以后的實(shí)際工作積存一些體會。二、設(shè)計(jì)內(nèi)容1、設(shè)計(jì)題目:互換機(jī)MAC地址表的形成進(jìn)程動態(tài)演示2、原理知識:如果網(wǎng)絡(luò)中的運(yùn)算機(jī)是通過集線器連接的,那么這種網(wǎng)絡(luò)就被稱為共享式以太 網(wǎng)。利用集線器互連的網(wǎng)絡(luò)環(huán)境很容易發(fā)生數(shù)據(jù)的碰撞,因?yàn)椴还馨l(fā)送數(shù)據(jù)仍是接收數(shù)據(jù) 都利用同一個(gè)數(shù)據(jù)通道,因此,主機(jī)在發(fā)送數(shù)據(jù)的同時(shí)必需利用接收 線對檢測是不是發(fā)生了碰撞,這種機(jī)制使得主機(jī)只能以半雙工的模式工作。 另一 方面,集線器是物 理層設(shè)備,通過對信號的中繼放大,延長了網(wǎng)線的通達(dá)距離, 擴(kuò)展了網(wǎng)絡(luò)規(guī)模。網(wǎng)絡(luò)規(guī)模的擴(kuò)大意味著碰撞域的擴(kuò)大, 進(jìn)一步地降低了網(wǎng)絡(luò)的 性能。共享式局域網(wǎng)的特性嚴(yán)峻制約著網(wǎng)絡(luò)性
3、能的提高,慢慢地被利用互換機(jī)組成的互 換式局域網(wǎng)所取代:(1) 互換機(jī)取代集線器解決了碰撞問題?;Q機(jī)是工作在數(shù)據(jù)鏈路層的設(shè)備(因此 也稱第2層互換機(jī)),它能夠識別數(shù)據(jù)幀中封裝的 MAC地址,并依照地址信息把數(shù)據(jù)互換到特定的端口,而不是像集線器工作時(shí)那樣,把從一個(gè)端口接收到的數(shù) 據(jù)復(fù)制到所有其他端口。如此的工作方式使互換機(jī)的不同端口之間可不能產(chǎn)生碰 撞,也確實(shí)是說互換性能夠分割碰撞域。 若是一個(gè)端口只連接一臺主機(jī)的話, 就 等于排除碰撞。(2) 互換機(jī)解決了集線器與和它相連的主機(jī)不能全雙工通信的問題。互換機(jī)利用 獨(dú)立的收、發(fā)通道為每一個(gè)接口相連的主機(jī)轉(zhuǎn)發(fā)數(shù)據(jù), 如此主性能夠全雙工地工 作。(3
4、) 互換性能夠?yàn)槿我鈨蓚€(gè)互換數(shù)據(jù)的端口成立一條獨(dú)立的數(shù)據(jù)通道進(jìn)行 互換數(shù)據(jù),大大提高了數(shù)據(jù)互換的效率?;Q機(jī)具有這些特性是由它的工作原理決定的。互換機(jī)依照數(shù)據(jù)幀中封裝的目的地 MAC地址做出轉(zhuǎn)發(fā)數(shù)據(jù)的決定?;Q 機(jī)在轉(zhuǎn)發(fā)數(shù)據(jù)前必需明白它的每一個(gè)端口所連接的主機(jī)的MAC地址,構(gòu)建出一個(gè)MAC地址表,以便作出正確的轉(zhuǎn)發(fā)決定。當(dāng)互換機(jī)從某個(gè)端口收到數(shù)據(jù)幀后,讀 取數(shù)據(jù)幀中封裝的目的地 MAC地址信息,然后查閱事前構(gòu)建的 MAC地 址表, 找出和目的地址相對應(yīng)的端口,從該接口把數(shù)據(jù)轉(zhuǎn)發(fā)出去,其他接口不受阻 礙。互換機(jī)在地址表中找不到目的地址和端口的相對應(yīng)記錄時(shí),那么會把數(shù) 據(jù)向除 數(shù)據(jù)來源端口外的其他
5、所有端口轉(zhuǎn)發(fā),因此廣播數(shù)據(jù)會被互換機(jī)轉(zhuǎn) 發(fā)到其所有端口,使得和互換機(jī)相連的設(shè)備處于同一個(gè)廣播域內(nèi)。下面舉例說明互換機(jī)成立地址表的進(jìn)程。fi I -2上七產(chǎn)應(yīng)當(dāng)互換機(jī)啟動時(shí),初始的 MAC地址表是空的現(xiàn)在,主機(jī)A向主機(jī)C發(fā)送一個(gè)數(shù)據(jù)幀(每一個(gè)數(shù)據(jù)幀中都包括有源MAC地址和目的MAC地址),當(dāng)該數(shù)據(jù)幀從E0端口進(jìn)入互換機(jī)后,互換機(jī)通過檢查數(shù)據(jù)幀中的源MAC地址字段,將該字段的值(主機(jī)A的MAC地址)放入MAC地址表中,并把它與 E0端口對應(yīng)起來,表 示E0端口所連接的主機(jī)是 A。在MAC地址表中沒有關(guān)于目的地 MAC地址(主機(jī)C的MAC地址) 的條款,因此互換機(jī)將此幀向除E0端口之外的所有端口轉(zhuǎn)發(fā)
6、。從而保證工作站C能收到該幀。其它接口的傳送進(jìn)程相同。二、設(shè)計(jì)方式1.拓?fù)鋱D2.設(shè)計(jì)思想Computer 發(fā) Messagefrommac,data,tomac,Switcher 從 Computer所在 的port ( 15)接收Message對 Message拆圭寸取得 Message的來源 mac和目標(biāo) mac從頭運(yùn)算機(jī)MACTable駐留在內(nèi)存),并存入文件Table.txt,而又 MACTable.txt是記錄MACS每次轉(zhuǎn)變的情形,相當(dāng)于 Table的日記文件。 (Table.txt 和 MACTable.txt 在 MAC目錄下)必然要先計(jì)算 MACTable 再轉(zhuǎn)發(fā),如此運(yùn)算機(jī)
7、若是給自己發(fā)消息的話即 frommac=tomac互換機(jī)即能夠直接向消息來的 port轉(zhuǎn)發(fā),就不需要廣播了 .其 實(shí)實(shí)際情形是若是frommac=tomac,消息在通過運(yùn)算機(jī)網(wǎng)卡時(shí),便立刻返回給 了自己,全然沒有向網(wǎng)絡(luò)上發(fā)布 . 這也是本系統(tǒng)做的一個(gè)不符合實(shí)際情形的地址, 實(shí)際情 況是運(yùn)算機(jī)給自己發(fā)消息,自己收到消息,而互換機(jī)的MACTable沒有記 錄源主機(jī)的MAC地址.因?yàn)闀r(shí)刻傖促沒有及時(shí)修改,十分遺憾。其它的工作情形大體符合事實(shí) , 而且運(yùn)行正常的很。哪怕在系統(tǒng)工作的時(shí) 候?qū)?Computer 換接了 Switcher 端口,仍然依照修改后的系統(tǒng)正常工作。3. 開發(fā)工具4. 具體設(shè)計(jì)系統(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 / 運(yùn)算機(jī)類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;/ 互換機(jī)類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)建一個(gè) Recordset 類型的序列容器 MACTAbl
12、e;主程序 (詳細(xì)的見程序源代碼 , 有注解 )const COMPUTER_NUM=5;void Graph();/ 打印拓?fù)鋱Dvoid Menu();/ 打印可選菜單char SelectNum();/ 等待輸入選項(xiàng)void MakeMessage();/ 構(gòu)造消息void Init();/ 系統(tǒng)初始化char* InputMAC();專門用于輸入 MAC地址并返回其指針void SetComputer();/用于設(shè)置運(yùn)算機(jī)void SetSwitcher();/用于設(shè)置互換機(jī)void Start();/ 演示系統(tǒng)運(yùn)行void Working();/ 環(huán)境系統(tǒng)工作/ 構(gòu)造演示系統(tǒng)的環(huán)境和設(shè)
13、備Switcher sw(5,"switcher");實(shí)例一個(gè)五口的互換機(jī) 名:switcherComputer coCOMPUTER_NUM;概念五臺電腦Message message1;/ 概念一個(gè)消息int port;/ 消息從互換機(jī)的 port 端口進(jìn)入int from,to;/ 記錄消息的始 , 終運(yùn)算機(jī)的下標(biāo)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')/必然要保證第二個(gè)從鍵盤輸入的為回車return ch0;elsereturn error;/不然返回一個(gè) errorvoid MakeMessage()int i=1;char computer_name20;while(i)/ 確保系統(tǒng)中有源主機(jī),直到輸入正確的為至cout<<" 選擇源主機(jī) :"cin>>computer_name;for(i=0;i<COMPUTER_
15、NUM;i+)if(!strcmp(,computer_name)/ 找到這臺運(yùn)算機(jī)from=i;/ 記錄源主機(jī)在數(shù)組中的下標(biāo)port=coi.port;/ 源主機(jī)所接入的 switcher 的端口號break;if(i=5)cout<<" 輸入錯(cuò)誤 !n"elsei=0;i=1;/ 一樣確保系統(tǒng)中有宿主機(jī),直到輸入正確的為至 while(i)cout<<" 選擇宿主機(jī) :"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<<" 輸入錯(cuò)誤 !n"elsei=0;strcpy(cofrom.mess.FromMAC,cofrom.MAC);/ 構(gòu)造源主機(jī)所發(fā)消息的源MAC目標(biāo)MACstrcpy(cofrom.mess.ToMAC,coto.MAC);port=cofrom.port;strcpy(message1.FromMAC,cofrom.MAC);構(gòu)造系統(tǒng)消息的源 MACS標(biāo) 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'/ 因此要過濾第一個(gè)字符 'r'for(i=0;i<1024&&message1.Datai!='0'i+)message1.Datai=message1.Datai+1;strcpy(cofrom.mess.Data,message1.Data);/ 構(gòu)造源主機(jī)所發(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 立刻跳到最后錯(cuò)誤立刻跳到最后+2)!='-')error=true;goto last;error=true;goto last;for(i=0;i<5;i+)/ 只要有一個(gè)if(temp.at(3*i個(gè)不在
19、 "0123456789abcdef" 中產(chǎn)生錯(cuò)誤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:那個(gè)地址確信是正確的MAC沒有errorif(error)錯(cuò)誤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)造消息 以后從互換機(jī)哪個(gè) port 進(jìn)入是確信的 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<<" 選擇錯(cuò)誤從頭選擇 "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機(jī)乩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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《職業(yè)農(nóng)民培育》課件
- 2024年鄉(xiāng)鎮(zhèn)組織員個(gè)人年終工作總結(jié)
- 《旅行社的戰(zhàn)略管理》課件
- 協(xié)力共贏:團(tuán)隊(duì)力量
- 酒店前廳保安執(zhí)勤要領(lǐng)
- 保險(xiǎn)行業(yè)銷售技巧培訓(xùn)總結(jié)
- 2001年天津高考語文真題及答案(圖片版)
- 媒體行業(yè)客服工作感想
- 景觀設(shè)計(jì)師年終總結(jié)7篇
- 2023年項(xiàng)目管理人員安全培訓(xùn)考試題(能力提升)
- 第六章傳質(zhì)基本概念
- API-685-中文_
- 政治經(jīng)濟(jì)學(xué)結(jié)構(gòu)圖解
- 服裝品質(zhì)管理人員工作手冊
- 國家開放大學(xué)電大專科《獸醫(yī)基礎(chǔ)》2023-2024期末試題及答案試卷編號:2776
- 初三畢業(yè)班后期管理措施
- 超星爾雅慕課公共關(guān)系禮儀實(shí)務(wù)杜漢榮課后習(xí)題及答案(1)word版本
- 示教機(jī)械手控制系統(tǒng)設(shè)計(jì)
- 氧化鋁生產(chǎn)工藝教學(xué)(拜耳法)
- 選礦學(xué)基礎(chǔ)PPT課件
- 安利食品經(jīng)銷商合同協(xié)議范本模板
評論
0/150
提交評論