網(wǎng)絡(luò)互聯(lián)實驗?zāi)M系統(tǒng)-計算機(jī)專業(yè)-本科本科畢業(yè)論文_第1頁
網(wǎng)絡(luò)互聯(lián)實驗?zāi)M系統(tǒng)-計算機(jī)專業(yè)-本科本科畢業(yè)論文_第2頁
網(wǎng)絡(luò)互聯(lián)實驗?zāi)M系統(tǒng)-計算機(jī)專業(yè)-本科本科畢業(yè)論文_第3頁
網(wǎng)絡(luò)互聯(lián)實驗?zāi)M系統(tǒng)-計算機(jī)專業(yè)-本科本科畢業(yè)論文_第4頁
網(wǎng)絡(luò)互聯(lián)實驗?zāi)M系統(tǒng)-計算機(jī)專業(yè)-本科本科畢業(yè)論文_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

天津職業(yè)技術(shù)師范大學(xué)2012屆本科生畢業(yè)設(shè)計PAGE241引言1.1課題研究的背景計算機(jī)網(wǎng)絡(luò)近年來獲得了飛速的發(fā)展。20年前,在我國很少有人接觸過網(wǎng)絡(luò)。現(xiàn)在,計算機(jī)通信網(wǎng)絡(luò)以及Internet已成為我們社會結(jié)構(gòu)的一個基本組成部分。網(wǎng)絡(luò)被應(yīng)用于工商業(yè)的各個方面,包括電子銀行、電子商務(wù)、現(xiàn)代化的企業(yè)管理、信息服務(wù)業(yè)等都以計算機(jī)網(wǎng)絡(luò)系統(tǒng)為基礎(chǔ)。從學(xué)校遠(yuǎn)程教育到政府日常辦公乃至現(xiàn)在的電子社區(qū),很多方面都離不開網(wǎng)絡(luò)技術(shù)??梢圆豢鋸埖卣f,網(wǎng)絡(luò)在當(dāng)今世界無處不在。網(wǎng)絡(luò)的發(fā)展也是一個經(jīng)濟(jì)上的沖擊。數(shù)據(jù)網(wǎng)絡(luò)使個人化的遠(yuǎn)程通信成為可能,并改變了商業(yè)通信的模式。一個完整的用于發(fā)展網(wǎng)絡(luò)技術(shù)、網(wǎng)絡(luò)產(chǎn)品和網(wǎng)絡(luò)服務(wù)的新興工業(yè)已經(jīng)形成,計算機(jī)網(wǎng)絡(luò)的普及性和重要性已經(jīng)導(dǎo)致在不同崗位上對具有更多網(wǎng)絡(luò)知識的人才的大量需求。企業(yè)需要雇員規(guī)劃、獲取、安裝、操作、管理那些構(gòu)成計算機(jī)網(wǎng)絡(luò)和Internet的軟硬件系統(tǒng)。另外,計算機(jī)編程已不再局限于個人計算機(jī),而要求程序員設(shè)計并實現(xiàn)能與其他計算機(jī)上的程序通信的應(yīng)用軟件。網(wǎng)絡(luò)互聯(lián)的最大優(yōu)點在于能集合任意多個網(wǎng)絡(luò)而成為規(guī)模更大的網(wǎng)絡(luò),并且能互通互聯(lián),資源共享。然而,昂貴的設(shè)備開銷是教學(xué)條件所不允許的,迫切地需要仿真軟件來實現(xiàn)實驗過程中基本的網(wǎng)絡(luò)互聯(lián)設(shè)備的連接、配置和結(jié)果校驗的仿真。市面上也有很多相同的產(chǎn)品都實現(xiàn)了虛擬設(shè)備的功能,比如:BosonNetSim、Dynamips、GNS3和PacketTracer。BosonNetSim是ITExamP推薦的路由器模擬軟件,可以模擬路由器和部分交換機(jī),而且是它最先提出自定義網(wǎng)絡(luò)拓?fù)涞墓δ?,使用BosonNetSim省去了制作網(wǎng)線連接設(shè)備,頻繁變換CONSOLE線,不停地往返于設(shè)備之間的環(huán)節(jié)。同時,BosonNetSim的命令也和最新的Cisco的IOS保持一致,它可以模擬出Cisco的部分中端產(chǎn)品35系列交換機(jī)和45系列路由器。Dynamips,是由我國CCIE小凡開發(fā)的一個思科模擬器圖形前端。這個優(yōu)秀的模擬器可以模仿思科設(shè)備的真實操作環(huán)境,可以說是目前最好的思科模擬器它不僅整合了思科所有的IOS模擬器,而且還整合了BES以及VPCS。它是一個綜合的模擬器解決方案。PacketTracer是由Cisco公司發(fā)布的一個輔助學(xué)習(xí)工具,為學(xué)習(xí)思科網(wǎng)絡(luò)課程的初學(xué)者去設(shè)計、配置、排除網(wǎng)絡(luò)故障提供了網(wǎng)絡(luò)模擬環(huán)境。用戶可以在軟件的圖形用戶界面上直接使用拖曳方法建立網(wǎng)絡(luò)拓?fù)洌⒖商峁?shù)據(jù)包在網(wǎng)絡(luò)中行進(jìn)的詳細(xì)處理過程,觀察網(wǎng)絡(luò)實時運(yùn)行情況??梢詫W(xué)習(xí)IOS的配置、鍛煉故障排查能力。而Internet的最初設(shè)計,并沒有考慮到需要支持目前這樣龐大的互聯(lián)網(wǎng),因此在IPv4的設(shè)計當(dāng)中,IP地址僅使用了32bit來標(biāo)識網(wǎng)絡(luò)中的一個節(jié)點設(shè)備,雖然這很好地解決了IP數(shù)據(jù)報的對齊問題,但隨著Internet的迅猛發(fā)展,網(wǎng)絡(luò)地址日益緊缺,已經(jīng)被視為一種寶貴的網(wǎng)絡(luò)資源。為了解決這個問題,NAT技術(shù)被人們廣泛使用,它將網(wǎng)絡(luò)地址從一個地址域映射到另一個地址域。1.2課題研究的目的網(wǎng)絡(luò)世界發(fā)展迅猛,各種技術(shù)豐富多彩。在過去的20年中最為成功的一項技術(shù)就是網(wǎng)絡(luò)互聯(lián)(Internetworking)技術(shù)。網(wǎng)絡(luò)互聯(lián)的最大優(yōu)點在于能集合任意多個網(wǎng)絡(luò)而成為規(guī)模更大的網(wǎng)絡(luò),并且能互通互聯(lián),資源共享。網(wǎng)絡(luò)的迅猛發(fā)展,必然導(dǎo)致部署及設(shè)計網(wǎng)絡(luò)的人才的需求量逐漸增大。為了訓(xùn)練這些人才,對網(wǎng)絡(luò)試驗環(huán)境的需求也逐漸增大。然而,昂貴的設(shè)備開銷是教學(xué)條件所不允許的,迫切地需要模擬軟件來實現(xiàn)實驗過程中基本的網(wǎng)絡(luò)互聯(lián)設(shè)備的連接、配置和結(jié)果校驗。畢業(yè)設(shè)計應(yīng)在滿足題目要求的基礎(chǔ)上盡可能完善功能,盡量模擬一個真實的網(wǎng)絡(luò)實驗環(huán)境,實現(xiàn)網(wǎng)絡(luò)設(shè)備的NAT模塊功能,對象的建立應(yīng)盡量貼近現(xiàn)實,成為一個使用方便、操作簡單、高效率的適合網(wǎng)絡(luò)課程初學(xué)者的使用銳捷命令集的模擬實驗系統(tǒng)。2網(wǎng)絡(luò)互聯(lián)模擬實訓(xùn)系統(tǒng)介紹在網(wǎng)絡(luò)互聯(lián)實訓(xùn)的實際操作中,實驗參與者必須在實訓(xùn)前做好充分的準(zhǔn)備工作,確定規(guī)劃方案。實訓(xùn)中則需按照事先準(zhǔn)備的規(guī)劃方案,進(jìn)行連線、配置及測試工作。實驗過程中大多需要配置、測試的多次反復(fù),交互性極強(qiáng)。為了盡可能地模擬真實的實驗過程,在配置和測試階段,系統(tǒng)應(yīng)模擬實驗者所選取的互聯(lián)設(shè)備的操作系統(tǒng),對實驗者的配置及時響應(yīng),盡可能地縮小與實際操作的差距。2.1系統(tǒng)總體設(shè)計網(wǎng)絡(luò)互聯(lián)實驗?zāi)M系統(tǒng)是一款實用性較高的軟件,實現(xiàn)了用軟件代替硬件,用編程模擬實驗的全過程,真實地模擬出實驗的操作過程,節(jié)省實驗中各種儀器的使用費用,省去了制作網(wǎng)線連接設(shè)備,頻繁變換CONSOLE線,不停地往返于設(shè)備之間的環(huán)節(jié),也為那些由于無法承擔(dān)起昂貴的設(shè)備開銷而無法學(xué)習(xí)網(wǎng)絡(luò)互聯(lián)知識和無法操作網(wǎng)絡(luò)互聯(lián)設(shè)備實驗的人們,提供了一個很好的機(jī)會。本系統(tǒng)的主要內(nèi)容有模擬實驗、經(jīng)典實驗、理論學(xué)習(xí)和幫助四個模塊。網(wǎng)絡(luò)互聯(lián)實驗?zāi)M系統(tǒng)總體框架圖如圖2-1所示。網(wǎng)絡(luò)互聯(lián)實驗?zāi)M系統(tǒng)網(wǎng)絡(luò)互聯(lián)實驗?zāi)M系統(tǒng)模模擬實驗實參考實驗參參考資料幫助圖2-1網(wǎng)絡(luò)互聯(lián)實驗?zāi)M系統(tǒng)總體框架圖1)模擬實驗該模塊可以完成實驗過程中對銳捷交換機(jī)路由器以及電腦主機(jī)的連接、配置和結(jié)果的校驗等功能的模擬。為網(wǎng)絡(luò)課程的初學(xué)者去配置網(wǎng)絡(luò)設(shè)備提供了網(wǎng)絡(luò)模擬環(huán)境。2)實驗參考該模塊羅列出多個常用網(wǎng)絡(luò)課程實驗的實驗步驟、拓?fù)鋱D等,方便實驗者在虛擬實驗的過程中對照經(jīng)典實驗,通過經(jīng)典實驗更好的了解網(wǎng)絡(luò)互聯(lián)設(shè)備的配置、調(diào)試。3)參考資料該模塊展示了網(wǎng)絡(luò)互聯(lián)的發(fā)展以及應(yīng)用情況,并詳細(xì)介紹了網(wǎng)絡(luò)互聯(lián)基礎(chǔ)、交換機(jī)原理與應(yīng)用、路由器原理與應(yīng)用等方面的知識。是網(wǎng)絡(luò)課程的初學(xué)者可以了解網(wǎng)絡(luò)的發(fā)展歷史與應(yīng)用現(xiàn)狀,更好的了解網(wǎng)絡(luò)這門課程。4)幫助該模塊包括網(wǎng)絡(luò)互聯(lián)模擬實訓(xùn)體統(tǒng)的使用說明,方便初學(xué)者了解該系統(tǒng)并使用該系統(tǒng)進(jìn)行網(wǎng)絡(luò)互聯(lián)模擬試驗;還包括命令提示功能,使實驗者在試驗過程中更方便的查找到所需要的命令,以便更好的完成試驗。2.2運(yùn)行環(huán)境1)硬件平臺(1)CPU:P41.8GHz。(2)內(nèi)存:256MB以上。2)軟件平臺(1)操作系統(tǒng):WindowsXP/WindowsVista/Windows7。(2)編程語言:C#。3NAT模塊的設(shè)計與實現(xiàn)3.1NAT技術(shù)簡介隨著Internet技術(shù)的不斷以指數(shù)級速度增長,珍貴的網(wǎng)絡(luò)地址分配給專用網(wǎng)絡(luò)終于被視作是一種對寶貴的虛擬房地產(chǎn)的浪費。因此出現(xiàn)了網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)標(biāo)準(zhǔn),就是將某些IP地址留出來供專用網(wǎng)絡(luò)重復(fù)使用。NAT英文全稱是NetworkAddressTranslation,稱是網(wǎng)絡(luò)地址轉(zhuǎn)換,它是一個IETF標(biāo)準(zhǔn),允許一個機(jī)構(gòu)以一個地址出現(xiàn)在Internet上。NAT將每個局域網(wǎng)節(jié)點的地址轉(zhuǎn)換成一個IP地址,反之亦然。它也可以應(yīng)用到防火墻技術(shù)里,把個別IP地址隱藏起來不被外界發(fā)現(xiàn),使外界無法直接訪問內(nèi)部網(wǎng)絡(luò)設(shè)備,同時,它還幫助網(wǎng)絡(luò)可以超越地址的限制,合理地安排網(wǎng)絡(luò)中的公有Internet地址和私有IP地址的使用。1)NAT技術(shù)的原理NAT技術(shù)能幫助解決令人頭痛的IP地址緊缺的問題,而且能使得內(nèi)外網(wǎng)絡(luò)隔離,提供一定的網(wǎng)絡(luò)安全保障。它解決問題的辦法是:在內(nèi)部網(wǎng)絡(luò)中使用內(nèi)部地址,通過NAT把內(nèi)部地址翻譯成合法的IP地址在Internet上使用,其具體的做法是把IP包內(nèi)的地址域用合法的IP地址來替換。NAT功能通常被集成到路由器、防火墻、ISDN路由器或者單獨的NAT設(shè)備中。NAT設(shè)備維護(hù)一個狀態(tài)表,用來把非法的IP地址映射到合法的IP地址上去。每個包在NAT設(shè)備中都被翻譯成正確的IP地址,發(fā)往下一級,這意味著給處理器帶來了一定的負(fù)擔(dān)。但對于一般的網(wǎng)絡(luò)來說,這種負(fù)擔(dān)是微不足道的。2)NAT的類型NAT有三種類型:靜態(tài)NAT(StaticNAT)、動態(tài)地址NAT(PooledNAT)、網(wǎng)絡(luò)地址端口轉(zhuǎn)換NAPT(Port-LevelNAT)。其中靜態(tài)NAT設(shè)置起來最為簡單和最容易實現(xiàn)的一種,內(nèi)部網(wǎng)絡(luò)中的每個主機(jī)都被永久映射成外部網(wǎng)絡(luò)中的某個合法的地址。而動態(tài)地址NAT則是在外部網(wǎng)絡(luò)中定義了一系列的合法地址,采用動態(tài)分配的方法映射到內(nèi)部網(wǎng)絡(luò)。NAPT則是把內(nèi)部地址映射到外部網(wǎng)絡(luò)的一個IP地址的不同端口上。根據(jù)不同的需要,三種NAT方案各有利弊。動態(tài)地址NAT只是轉(zhuǎn)換IP地址,它為每一個內(nèi)部的IP地址分配一個臨時的外部IP地址,主要應(yīng)用于撥號,對于頻繁的遠(yuǎn)程聯(lián)接也可以采用動態(tài)NAT。當(dāng)遠(yuǎn)程用戶聯(lián)接上之后,動態(tài)地址NAT就會分配給他一個IP地址,用戶斷開時,這個IP地址就會被釋放而留待以后使用。網(wǎng)絡(luò)地址端口轉(zhuǎn)換NAPT(NetworkAddressPortTranslation)是人們比較熟悉的一種轉(zhuǎn)換方式。NAPT普遍應(yīng)用于接入設(shè)備中,它可以將中小型的網(wǎng)絡(luò)隱藏在一個合法的IP地址后面。NAPT與動態(tài)地址NAT不同,它將內(nèi)部連接映射到外部網(wǎng)絡(luò)中的一個單獨的IP地址上,同時在該地址上加上一個由NAT設(shè)備選定的TCP端口號。在Internet中使用NAPT時,所有不同的TCP和UDP信息流看起來好像來源于同一個IP地址。這個優(yōu)點在小型辦公室內(nèi)非常實用,通過從ISP處申請的一個IP地址,將多個連接通過NAPT接入Internet。實際上,許多SOHO遠(yuǎn)程訪問設(shè)備支持基于PPP的動態(tài)IP地址。這樣,ISP甚至不需要支持NAPT,就可以做到多個內(nèi)部IP地址共用一個外部IP地址上Internet,雖然這樣會導(dǎo)致信道的一定擁塞,但考慮到節(jié)省的ISP上網(wǎng)費用和易管理的特點,用NAPT還是很值得的。3)NAT技術(shù)的應(yīng)用NAT技術(shù)可以讓你區(qū)域網(wǎng)路中的所有機(jī)器經(jīng)由一臺通往Internet的server線出去,而且只需要注冊該server的一個IP就夠了。在以往沒有NAT技術(shù)以前,我們必須在server上安裝sockd,并且所有的clients都必須要支援sockd,才能夠經(jīng)過server的sockd連線出去。這種方式最大的問題是,通常只telnet/ftp/www-browser支援sockd,其它的程式都不能使用;而且使用sockd的速度稍慢。因此我們使用網(wǎng)絡(luò)地址轉(zhuǎn)換NAT技術(shù),這樣client不需要做任何的更動,只需要把gateway設(shè)到該server上就可以了,而且所有的程式(例如kali/kahn等等)都可以使用。最簡單的NAT設(shè)備有兩條網(wǎng)絡(luò)連接:一條連接到Internet,一條連接到專用網(wǎng)絡(luò)。專用網(wǎng)絡(luò)中使用私有IP地址(有時也被稱做Network10地址,地址使用留做專用的從開始的地址)的主機(jī),通過直接向NAT設(shè)備發(fā)送數(shù)據(jù)包連接到Internet上。與普通路由器不同NAT設(shè)備實際上對包頭進(jìn)行修改,將專用網(wǎng)絡(luò)的源地址變?yōu)镹AT設(shè)備自己的Internet地址,而普通路由器僅在將數(shù)據(jù)包轉(zhuǎn)發(fā)到目的地前讀取源地址和目的地址。NAT這項技術(shù)主要是為了解決IP地址空間不足。在NAT功能的支持下,內(nèi)部網(wǎng)絡(luò)可以使用一個公共的IP地址訪問外部網(wǎng)絡(luò),因此,它很好地隱藏內(nèi)部網(wǎng)絡(luò)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),也使網(wǎng)絡(luò)更安全。由于這些特點,NAT也常常是作為Firewall的重要部分一起提供的,但是它并不是Firewall。由于NAT可以帶來一定的安全性,相信即使在IPv6的時代,它還是能夠繼續(xù)應(yīng)用。3.2模塊需求分析3.2.1功能要求為保證該模擬器能在最大程度上保證其與實際系統(tǒng)的相似度,NAT模塊的功能以及其工作方式也應(yīng)盡量貼近實際設(shè)備的功能和工作方式。本模塊需要實現(xiàn)的具體功能有以下方面:1)輸入的配置命令和輸出的響應(yīng)信息與真實配置環(huán)境一致,確保模擬實訓(xùn)系統(tǒng)的真實性;2)通過輸入正確的命令能在不同模式下進(jìn)行切換;3)輸入正確的的命令配置靜態(tài)路由;4)輸入正確的命令進(jìn)入端口配置模式,定義內(nèi)部、外部網(wǎng)絡(luò);5)定義內(nèi)部源地址靜態(tài)轉(zhuǎn)換關(guān)系;6)定義全局IP地址池,定義允許轉(zhuǎn)換的本地IP地址,定義內(nèi)部源地址轉(zhuǎn)換關(guān)系;7)輸入正確的命令,打印出地址轉(zhuǎn)換表。3.2.2性能要求能夠在本系統(tǒng)中穩(wěn)定快速的運(yùn)行,與交換機(jī)模塊緊密的結(jié)合,占用內(nèi)存控制在一定范圍之內(nèi)。對用戶的輸入給予快速反映。3.2.3運(yùn)行要求能正常運(yùn)行在微軟中文版WINDOWS系列,可以獨立運(yùn)行(需要微軟.NetFrameWork支持)。除自身數(shù)據(jù)文件之外不需要系統(tǒng)其他文件資源或信息的支持。路由模塊路由基本功能靜態(tài)路由添加靜態(tài)路由接口類IP數(shù)據(jù)包類路由類NAT靜態(tài)NAT路由模塊路由基本功能靜態(tài)路由添加靜態(tài)路由接口類IP數(shù)據(jù)包類路由類NAT靜態(tài)NAT動態(tài)NAT模塊的功能結(jié)構(gòu)如圖3-1所示。圖3-1模塊功能結(jié)構(gòu)圖3.3.1NAT的地址轉(zhuǎn)換過程1、連接的映射關(guān)系的建立階段發(fā)生在會話的開始,當(dāng)內(nèi)部的1臺機(jī)器要與外部的1臺機(jī)器發(fā)生通信時發(fā)生,NAT動態(tài)的為其分配未使用的端口號,并且會記下這個映射關(guān)系,為以后轉(zhuǎn)發(fā)IP數(shù)據(jù)包使用。2、映射關(guān)系的查找與轉(zhuǎn)換階段當(dāng)有外部進(jìn)入的數(shù)據(jù)包或后續(xù)從內(nèi)部出去的數(shù)據(jù)包通過NAT時,NAT都在內(nèi)部記錄的映射表中進(jìn)行查找,以便找到對應(yīng)的映射進(jìn)行地址轉(zhuǎn)換。3、映射關(guān)系解除階段當(dāng)連接使用完后,映射關(guān)系應(yīng)該解除,釋放分配給這條連接的端口,以便以后的連接可以繼續(xù)使用。通常實現(xiàn)中采用定時器中斷的方式處理,在中斷過程中調(diào)用釋放無用連接的例程。3.3.2NAT模塊設(shè)計以VisualStudio2008為框架,使用C#編程語言,采用DLL處理數(shù)據(jù)文件。模擬了路由器常用模式、配置命令及響應(yīng),將涉及到路由器的要用到的各種屬性抽象成不同的幾個對象,各個對象抽象成為不同的類,在實現(xiàn)靜態(tài)NAT是建立NAT映射表,在實現(xiàn)動態(tài)NAT時采用建立IP地址池的方法來實現(xiàn)。通過對控制臺輸入的命令進(jìn)行判斷和摘取,對路由器進(jìn)行了特權(quán)模式和全局模式的劃分。在不同模式下,安排不同的數(shù)據(jù)處理文件,獲取不同端口的配置。圖3-2NAT工作示意圖3.3.3靜態(tài)路由模塊設(shè)計首先采用面向?qū)ο蟮姆椒▽⑸婕暗铰酚善鞯囊玫降母鞣N屬性抽象成不同的幾個對象,各個對象抽象成為不同的類,路由類和接口類都要有與其對應(yīng)的相應(yīng)的處理數(shù)據(jù)包的方法和對外界輸入信息予以響應(yīng)的方法以及用于管理各自資源的守護(hù)線程。廣播包類和路由表類應(yīng)包含實現(xiàn)廣播包和路由表基本功能的各個屬性。其次,實現(xiàn)路由功能的配置命令以及響應(yīng)用DLL(DynamicLinkLibrary)和數(shù)據(jù)文件來完成。3.4模塊詳細(xì)設(shè)計3.4.1靜態(tài)NAT的詳細(xì)設(shè)計圖3-3靜態(tài)NAT過程靜態(tài)NAT中l(wèi)ocal地址與global地址必須是一一對應(yīng)的。所以靜態(tài)NAT一般用于服務(wù)器地址,要求能穿過NAT實現(xiàn)完全訪問的場合。銳捷路由器靜態(tài)NAT的配置主要有三個步驟:設(shè)置inside接口,設(shè)置outside接口,然后是指定靜態(tài)映射地址對。表3-1靜態(tài)NAT轉(zhuǎn)換映射表內(nèi)部本地IP地址內(nèi)部全局IP地址01圖3.4.2動態(tài)NAT的詳細(xì)設(shè)計內(nèi)網(wǎng)IP地址地址池~0表3-2動態(tài)NAT轉(zhuǎn)換映射表動態(tài)NAT可以是一對一的映射,也可以是多對一的映射,通過按比例把多個私有地址按需映射到一個公有地址的辦法,實現(xiàn)了公有地址的重復(fù)利用,設(shè)計IP地址池的時候有兩個因素要考慮,其一是同一時間內(nèi)最大需要的地址數(shù)量。如果池子太小,需要公網(wǎng)地址的主機(jī)卻很多,可能一下子就被淘干了,后來的人分不到IG地址,也就連接不了公網(wǎng)了。其二是空閑IP地址歸還時限,具體來說就是動態(tài)NAT項在NAT表中閑置的時間,如果分配出去的地址在一段時間內(nèi)沒有被再次使用的話,就要將它收回來。結(jié)合ACL,將訪問控制列表1的源地址,動態(tài)的從公網(wǎng)IP地址池p1的提取公網(wǎng)IP。圖3-6動態(tài)NAT過程圖3.4.3路由模塊詳細(xì)設(shè)計靜態(tài)路由指示出到目的地的固定的路徑,需要人工手動的配置。當(dāng)路由器收到用戶的配置命令時,獲取命令的參數(shù)后,然后新建一條新的路由記錄添加到路由表里。把路由表抽象成為一個集合隊列,路由記錄包含目的網(wǎng)絡(luò)或者目的主機(jī),要到達(dá)目的地址所要經(jīng)過的嚇一跳的IP地址或者為本地的出口的端口號,要到達(dá)目的網(wǎng)絡(luò)所要經(jīng)過的路由器的個數(shù),來表明路由記錄的質(zhì)量。將路由器和路由接口抽象為兩個類,每個路由器包含兩個串行接口和兩個以太網(wǎng)接口,把所有接口放在一個集合隊列里,每個接口都應(yīng)有自己的接收隊列和發(fā)送隊列和處理各種數(shù)據(jù)包的函數(shù),都應(yīng)有監(jiān)聽自己接收隊列的守護(hù)線程,每個接口都繼承父類路由器的屬性,都能調(diào)用父類路由的路由表對自己收到包進(jìn)行匹配來決定是回復(fù),丟包或者轉(zhuǎn)發(fā),詳細(xì)過程如圖3-7和圖3-8。開始開始發(fā)送ping發(fā)送ping包匹配路由表獲得ping匹配路由表獲得ping的目的地址選定端口,發(fā)送ICMP包選定端口,發(fā)送ICMP包廣播ARP包獲得mac廣播ARP包獲得mac有mac地址新建pingPacket是新建pingPacket調(diào)用send調(diào)用send函數(shù)發(fā)包等待回應(yīng)等待回應(yīng)收到回應(yīng)包收到回應(yīng)包IsReached==trueIP地址不可達(dá)否IsReached==trueIP地址不可達(dá)結(jié)束證明為連通的是結(jié)束證明為連通的結(jié)束結(jié)束圖3-7路由器作為發(fā)送端處理IP數(shù)據(jù)包開始開始監(jiān)聽端口的接收隊列有數(shù)據(jù)監(jiān)聽端口的接收隊列有數(shù)據(jù)包的目的地址和端口地址比較包的目的地址和端口地址比較調(diào)用轉(zhuǎn)發(fā)函數(shù)IsToMe否調(diào)用轉(zhuǎn)發(fā)函數(shù)IsToMeIsReached==trueIsByMe是IsReached==trueIsByMe選定端口,轉(zhuǎn)發(fā)原數(shù)據(jù)包否選定端口,轉(zhuǎn)發(fā)原數(shù)據(jù)包新建response發(fā)向下一實體的接收隊列是新建response發(fā)向下一實體的接收隊列調(diào)用發(fā)送函數(shù)調(diào)用發(fā)送函數(shù)回發(fā)到發(fā)送端結(jié)束回發(fā)到發(fā)送端結(jié)束結(jié)束結(jié)束圖3-8路由器作為接收端處理IP數(shù)據(jù)包在用代碼實現(xiàn)路由的基本功能時,編寫五個類函數(shù)分別為IP數(shù)據(jù)包類,廣播包類,路由表類,接口類和路由類。3.5模塊編碼實現(xiàn)3.5.1靜態(tài)路由模塊編碼配置靜態(tài)路由時,輸入相應(yīng)的命令,當(dāng)路由器收到配置靜態(tài)路由的命令時,調(diào)用處理函數(shù),新建一條新的路由記錄,添加路由記錄到路由表中。靜態(tài)路由模塊的核心代碼:publicvoidStaticRouter(stringmudi,stringMask,stringxia,stringid)//調(diào)用靜態(tài)路由選項{int[]dst;int[]mask;int[]xiayit;dst=newint[4];mask=newint[4];xiayit=newint[4];for(inti=0;i<4;i++){dst[i]=Convert.ToInt32(mudi.Split('.')[i]);mask[i]=Convert.ToInt32(Mask.Split('.')[i]);xiayit[i]=Convert.ToInt32(xia.Split('.')[i]);}//獲取路由相關(guān)信息intId;Id=Convert.ToInt32(id);RouterTablerecord;record=newRouterTable(dst,mask,0,xiayit,Id);tableRT.Add(record);//生成路由表}3.5.2NAT相關(guān)命令的模塊編碼在主程序中通過switchcase語句來判斷命令輸入?yún)^(qū)輸入的命令并在主程序中使用變量CMD來接收并且進(jìn)行摘取以獲得正確的命令。具體實現(xiàn)是使用DLL+數(shù)據(jù)文件的形式來實現(xiàn)NAT的配置目的。case"nat":{stringstrDetail=cmd.Split('')[2];switch(strDetail.ToLower()){case"inside"://Setinsiderouteinfoif(cmd.Split('').Length==3){this.SetTempToInside();//Setinsiderouteinfo}else{string[]strlist=cmd.Split('');stringsource=strlist[3];if(source.ToLower()!="source"){this.Display('"'+command+'"'+"不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件");//whenitiswrongcommandbreak;上述代碼是判斷NAT所需相關(guān)命令,獲取配置信息。在進(jìn)入端口后,輸入“ipnatinside”配置命令,定義該端口為連接內(nèi)部網(wǎng)絡(luò);在全局模式下,輸入“ipnatinsidesourcestatic”配置命令,進(jìn)行定義內(nèi)部源地址靜態(tài)轉(zhuǎn)換關(guān)系。3.5.1靜態(tài)NAT編碼的實現(xiàn)以下命令是創(chuàng)建映射表的核心代碼,存入內(nèi)部本地IP地址和內(nèi)部全局IP地址的映射關(guān)系。數(shù)據(jù)包的流程如圖3-9。系統(tǒng)接受命令后將獲取的IP地址存入動態(tài)列表,不同端口號的不同定義,形成映射關(guān)系,產(chǎn)生映射表。關(guān)鍵字source表明轉(zhuǎn)換屬于內(nèi)部源地址轉(zhuǎn)換,即當(dāng)內(nèi)部網(wǎng)絡(luò)需要與外部網(wǎng)絡(luò)通訊時,需要配置NAT,將內(nèi)部私有IP地址轉(zhuǎn)換成全局唯一IP地址。即當(dāng)內(nèi)網(wǎng)訪問列表中定義的內(nèi)部主機(jī)要訪問外網(wǎng)時,路由器將數(shù)據(jù)包的源地址轉(zhuǎn)換成地址池上定義的IP地址再發(fā)送出去。圖3-9數(shù)據(jù)包的NAT流程圖regionNATrelatedprivatePCInfoTempPCInfo;privatePCInfoOutSide,InSide;privateList<InOutRouteInfo>listStaticInfo=newList<InOutRouteInfo>();privatevoidSetTempPCInfo(stringip,stringmask){TempPCInfo=newPCInfo(){IP=ip,IPMask=mask};}voidSetTempToOutSide(){OutSide=newPCInfo(){IP=TempPCInfo.IP,IPMask=TempPCInfo.IPMask};}//SetOutsideIpaddressvoidSetTempToInside(){InSide=newPCInfo(){IP=TempPCInfo.IP,IPMask=TempPCInfo.IPMask};//SetInsideIpaddress}3.5.2動態(tài)NAT編碼的實現(xiàn)關(guān)鍵字destination,屬于目標(biāo)地址轉(zhuǎn)換,即將內(nèi)部全局地址轉(zhuǎn)換成內(nèi)部本地地址,用于實現(xiàn)外網(wǎng)訪問內(nèi)網(wǎng)的服務(wù)器時對IP數(shù)據(jù)包中的目的IP地址實現(xiàn)轉(zhuǎn)換。destination的目的是用來實現(xiàn)TCP的流量的負(fù)載均衡,poolname中指的是轉(zhuǎn)換后的內(nèi)網(wǎng)的某一臺服務(wù)器的可全局路由的IP地址。核心代碼是:privatePoolInfopoolInfo;voidSetPoolInfo(stringpoolname,string[]iplist,stringnetmask){poolInfo=newPoolInfo();poolInfo.poolname=poolname;poolImask=netmask;poolInfo.ipList=newstring[iplist.Length];Array.Copy(iplist,poolInfo.ipList,iplist.Length);ShowType=2;}switch(strDetail.ToLower()){case"pool":{string[]strlist=cmd.Split('');intnCount=strlist.Length;stringpoolname=strlist[3];stringnetmaskname=strlist[nCount-2];if(netmaskname.ToLower()!="netmask"){this.Display('"'+command+'"'+"不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件");//判斷命令組是否正確break;}stringnetmask=strlist[nCount-1];intIPCount=nCount-6;string[]iplist=newstring[IPCount];for(intz=0;z<IPCount;z++){iplist[z]=strlist[z+4];}this.SetPoolInfo(poolname,iplist,netmask);//獲取地址池名稱ip地址掩碼}break;}stringstrNext=strlist[4];switch(strNext.ToLower()){case"list":{if(strlist[6].ToLower()!="pool"){this.Display('"'+command+'"'+"不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件");break;}}break;以上命令定義地址池,調(diào)用ACL訪問控制列表文件,定義一個ACL表.將訪問控制列表的源地址,動態(tài)的從公網(wǎng)IP地址池p1的提取公網(wǎng)IP。3.6NAT模塊測試軟件測試(softwaretesting)是軟件質(zhì)量保證的主要活動之一。軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。也就是說軟件測試是根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計一批測試用例(即輸入數(shù)據(jù)及其預(yù)期的輸出結(jié)果),并利用這些測試用例去運(yùn)行程序,以發(fā)現(xiàn)程序錯誤的過程。3.6.1軟件測試的方法1)黑盒測試黑盒測試著重測試軟件的功能。黑盒測試并不能代替白盒測試,它是與白盒測試互補(bǔ)的測試方法,它很可能發(fā)現(xiàn)白盒測試并不容易發(fā)現(xiàn)的其他類型的錯誤。黑盒測試力圖發(fā)現(xiàn)下述類型的錯誤:(1)功能不正確或遺漏了功能。(2)界面錯誤。(3)數(shù)據(jù)結(jié)構(gòu)錯誤或外部數(shù)據(jù)庫訪問錯誤。(4)性能錯誤。(5)初始化和終止錯誤2)白盒測試白盒測試在測試過程的早期階段進(jìn)行,而黑盒測試主要用于測試過程的后期。設(shè)計黑盒測試方案時,應(yīng)該考慮下述問題。(1)怎樣測試功能的有效性(2)哪些類型的輸入可構(gòu)成好測試用例(3)系統(tǒng)是否對特定的輸入值特別敏感(4)怎樣劃定數(shù)據(jù)類的邊界(5)系統(tǒng)能夠承受什么樣的數(shù)據(jù)率和數(shù)據(jù)量(6)數(shù)據(jù)的特定組合將對系統(tǒng)運(yùn)行產(chǎn)生什么樣的影響3)錯誤推測通過大量的命令的輸入和邊界值的選取測試,可以大致確定錯誤及異常的原因是:(1)缺少對輸入命令所有有效字節(jié)的判斷。(2)缺少對命令格式的判斷。如:空格或換行個數(shù)未加限定。3.6.2軟件測試目標(biāo)按照軟件工程的方法,對模塊主要進(jìn)行了黑盒測試。測試目標(biāo)為:1)當(dāng)輸入配置靜態(tài)路由的命令時,是否新建了一條新的路由記錄添加到路由表中,路由器能否根據(jù)更新了的路由表進(jìn)行路徑的選擇,路由器選擇的路徑是否為正確到達(dá)目的網(wǎng)絡(luò)的路徑2)是否能夠正確收到模擬器客戶端發(fā)來的數(shù)據(jù);3)是否能夠?qū)?shù)據(jù)進(jìn)行正確的分析,可以對cmd格式進(jìn)行校驗;4)是否能夠從接收到的命令中讀取到正確的內(nèi)部ip地址,外部ip地址;5)是否能夠根據(jù)客戶端輸入的信息建立相應(yīng)的ip映射表,對NAT學(xué)習(xí)表表記錄進(jìn)行實時的更新,刪除;6)是否能夠定義控制列表地址;7)能否保證級聯(lián)路由器間能夠通信;8)路由器能夠通過配置,能否生成地址池;是否能夠分配和釋放IP地址;9)用戶是否可以通過配置命令查看NAT的translation列表。3.6.3模塊測試用例及結(jié)果NAT模塊的測試過程。用例的設(shè)計方案主要采取黑盒測試。通過上面的方法可以實現(xiàn)測試用例對程序的邏輯覆蓋和路徑覆蓋。當(dāng)然無論設(shè)計多少測試用例,無論測試方案多么完美,都不可能完全100%的發(fā)現(xiàn)所有BUG,所需要做的是用最少的資源,做最多測試檢查,尋找一個平衡點保證程序的正確性。窮舉測試是不可能的。所以現(xiàn)在進(jìn)行的測試,選用的是現(xiàn)在一般用的比較多的黑盒測試法。故依照此原則,測試過程如下:圖3-10測試拓?fù)鋱D1)靜態(tài)路由的測試用例在Router0控制臺輸入如下命令:Router>enRouter#configureterminal Router(config)#inf0/1Router(config-if)#ipaddressRouter(config-if)#noshutRouter(config-if)#exitRouter(config)#inf0/0Router(config-if)#ipaddressRouter(config-if)#noshutRouter(config-if)#exitRouter(config)#iproutef0/1在Router1控制臺輸入如下命令:Router#configureterminalRouter(config)#inf0/0Router(config-if)#ipaddressRouter(config-if)#exitRouter(config)#inf0/1Router(config-if)#ipaddressRouter(config-if)#noshutRouter(config-if)#exitRouter(config)#iproutef0/12)配置靜態(tài)NAT的測試用例在控制臺輸入如下命令:R1(config)#interfacefastethernet0/0R1(config-if)#ipnatinsideR1(config-if)#exitR1(config)#interfacefastethernet0/1R1(config-if)#ipnatoutsideR1(config-if)#exitR1(config)#ipnatinsidesourcestatic00R1(config)#ipnatinsidesourcestatic11R1(config)#end預(yù)期結(jié)果:將相應(yīng)的IP地址存放入映射表中。表3-3靜態(tài)NAT映射表InsideglobalInsidelocalOutsidelocalOutsideglobal10003)動態(tài)NAT的測試用例在控制臺輸入如下命令Router>Router>enRouter#conftRouter(config)#hostR1R1(config)#inte0R1(config-if)#ipaddR1(config-if)#ipnatinsideR1(config-if)#noshutR1(config-if)#ints0R1(config-if)#ipadd52R1(config-if)#ipnatoutsideR1(config-if)#clockrate1000000R1(config-if)#noshutR1(config-if)#encapsulationhdlcR1(config-if)#exitR1(config)#access-list1permit

55在Router2控制臺輸入如下命令Router>Router>enRouter#conftEnterconfigurationcommands,oneperline.

EndwithCNTL/Z.Router(config)#hostR2R2(config)#inte0R2(config-if)#ipaddR2(config-if)#noshutR2(config-if)#ints0R2(config-if)#ipadd52R2(config-if)#noshutR2(config-if)#exitR2(config)#routerripR2(config-router)#version2R2(config-router)#networkR2(config-router)#networkR2(config-router)#end預(yù)期結(jié)果:將相應(yīng)的IP地址存放入映射表中表3-4動態(tài)NAT映射表InsideglobalInsidelocalOutsidelocalOutsideglobal3.6.4模塊測試結(jié)果1)配置靜態(tài)路由的測試結(jié)果測試結(jié)果如圖3-11,可以看到通過命令配置靜態(tài)路由已成功生成路由表。

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論