版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
TCP擁塞控制畢業(yè)論文TCP擁塞控制畢業(yè)論文/TCP擁塞控制畢業(yè)論文摘要TCP的擁塞控制由“慢啟動(dòng)(Slowstart)”和“擁塞避免(Congestionavoidance)”組成,后來TCPReno版本中又針對(duì)性的加入了“快速重傳(Fastretransmit)”、“快速恢復(fù)(FastRecovery)”算法,再后來在TCPNewReno中又對(duì)“快速恢復(fù)”算法進(jìn)行了改進(jìn),近些年又出現(xiàn)了選擇性應(yīng)答(SACK)算法,還有其他方面的大大小小的改進(jìn),成為網(wǎng)絡(luò)研究的一個(gè)熱點(diǎn)。TCP的擁塞控制主要原理依賴于一個(gè)擁塞窗口(cwnd)來控制,窗口值的大小就代表能夠發(fā)送出去的但還沒有收到ACK的最大數(shù)據(jù)報(bào)文段,顯然窗口越大那么數(shù)據(jù)發(fā)送的速度也就越快,但是也就越可能使得網(wǎng)絡(luò)出現(xiàn)擁塞,如果窗口值為1,那么就簡化為一個(gè)停等協(xié)議,每發(fā)送一個(gè)數(shù)據(jù),都要等到對(duì)方的確認(rèn)才能發(fā)送第二個(gè)數(shù)據(jù)包,顯然數(shù)據(jù)傳輸效率低下。TCP擁塞控制算法就是要在這兩者之間權(quán)衡,選取最好的cwnd值,從而使得網(wǎng)絡(luò)吞吐量最大化且不產(chǎn)生擁塞。[1]計(jì)算機(jī)網(wǎng)絡(luò)已經(jīng)逐漸發(fā)展成為現(xiàn)代生活中必不可少的一個(gè)部分,本論文的主要研究目的就是針對(duì)計(jì)算機(jī)網(wǎng)絡(luò)中的TCP協(xié)議中的Reno擁塞控制,對(duì)其實(shí)行可視化,使其變得更加容易理解,讓我們對(duì)計(jì)算機(jī)網(wǎng)絡(luò)有更深刻的認(rèn)識(shí)。關(guān)鍵詞:慢啟動(dòng);擁塞避免;快速重傳;快速恢復(fù);可視化AbstractTCPcongestioncontrolfrom"Slowstart"and"Congestionavoidance"composedofTCPRenoversionslaterthentargetedtojointhe"Fastretransmit","FastRecovery"algorithm,andthenlateragainintheTCPNewRenointhe"fastrecovery"algorithmhasbeenimprovedinrecentyearshasemergedselectiveacknowledgementalgorithm,aswellasotherlargeandsmallimprovementsbecomearesearchhotspotnetwork.ThemainprincipleofTCPcongestioncontrolreliesonacongestionwindow(cwnd)tocontrolthewindowsizevaluerepresentstheabilitytosendoutbutnotyetreceivedthemaximumdatapacketACKDuan,clearwindow,sothegreaterthespeedofdatasentthefaster,butalsomorelikelytomakethenetworkcongestionoccurs,ifthewindowis1,thenreducedtoastopsuchagreement,eachsendingadata,mustwaitforconfirmationoftheotherpartycansendasecondpacket,thedataclearlytransmissionefficiencyislow.TCPcongestioncontrolalgorithmistobalancebetweenthesetwo,choosethebestcwndvalue,allowingthenetworktomaximizethroughputanddoesnotcreatecongestion.Computernetworkhasgraduallybecomeanessentialofmodernlife,apartofthemainresearchobjectiveofthisthesisisacomputernetworkfortheTCPRenocongestioncontrolprotocolinitsimplementationofvisualizationtomakeitmoreeasytounderstand,letthecomputernetworkhasabetterunderstanding.Keywords:Slowstart;Congestionavoidance;Fastretransmit;FastRecovery;Visualization目錄1緒論 11.1課題背景與意義 11.2課題現(xiàn)狀 11.3本文的主要研究內(nèi)容 22開發(fā)平臺(tái)與技術(shù)的選擇與介紹 32.1開發(fā)環(huán)境的介紹 32.1.1 硬件環(huán)境 32.1.2軟件環(huán)境 32.2Reno擁塞控制簡介 32.3開發(fā)平臺(tái)簡介 33需求分析與可行性研究 53.1需求分析 53.1.1時(shí)間要求 53.1.2功能要求 53.1.3Reno擁塞控制的四個(gè)階段 53.1.4性能要求 83.2可行性研究 93.2.1成本可行性分析 93.2.2技術(shù)可行性分析 94相關(guān)開發(fā)技術(shù)的原理性說明 104.1VisualStuidio2008相關(guān)簡介 104.2TCP/IP協(xié)議和擁塞控制簡介 114.3 C#簡介與特點(diǎn) 134.3.1C#簡介 134.3.2 C#與C++、JAVA的區(qū)別 134.3.3C#的前途 145系統(tǒng)功能模塊分析 155.1主框架具體功能 155.2各功能模塊詳細(xì)設(shè)計(jì) 156詳細(xì)設(shè)計(jì)與編碼實(shí)現(xiàn) 176.1主框架詳細(xì)設(shè)計(jì) 176.2模塊的詳細(xì)設(shè)計(jì) 176.2.1程序代碼 176.2.2程序運(yùn)行結(jié)果 23結(jié)論 27參考文獻(xiàn) 28致謝 291緒論1.1課題背景與意義網(wǎng)絡(luò)協(xié)議本身是一個(gè)復(fù)雜的抽象的交互過程,其行為由大量的參數(shù)(定時(shí)器,窗口大小,重傳次數(shù),應(yīng)答的方式等)來確定,甚至不同的參數(shù)組合定義了不同的網(wǎng)絡(luò)協(xié)議,很難通過靜態(tài)的文字或者圖表描述讓學(xué)生理解網(wǎng)絡(luò)原理與協(xié)議的含義和精髓,本次畢業(yè)設(shè)計(jì)希望通過采用C#編程,用功能強(qiáng),操作性能好,配置靈活的軟件的方式和多媒體的形式,動(dòng)態(tài)直觀的演示計(jì)算機(jī)網(wǎng)絡(luò)中的TCPReno擁塞控制的原理和工作過程,為大家學(xué)好計(jì)算機(jī)網(wǎng)絡(luò)提供一個(gè)更加直觀簡單的環(huán)境。計(jì)算機(jī)網(wǎng)絡(luò)已經(jīng)逐漸發(fā)展成為現(xiàn)代生活中必不可少的一個(gè)部分,本論文的主要研究目的就是針對(duì)計(jì)算機(jī)網(wǎng)絡(luò)中的TCP協(xié)議中的Reno擁塞控制,對(duì)其進(jìn)行可視化,使其變得更加的明了和容易理解,讓我們對(duì)計(jì)算機(jī)網(wǎng)絡(luò)有更深刻的理解,同時(shí)通過實(shí)現(xiàn)TCPReno擁塞控制的可視化讓自己對(duì)計(jì)算機(jī)網(wǎng)絡(luò)有一個(gè)更深層次的認(rèn)識(shí)。1.2課題現(xiàn)狀因特網(wǎng)的快速發(fā)展帶來了信息量的急劇膨脹,網(wǎng)絡(luò)擁塞已經(jīng)成為制約因特網(wǎng)發(fā)展的瓶頸。在眾多TCP擁塞控制算法中,TCPVegas表現(xiàn)出比其他算法更為優(yōu)越的性能,然而自1995年提出至今,仍然沒有取代TCPReno成為現(xiàn)今最廣泛使用的TCP擁塞控制算法。有研究表明,這是由于Vegas在與Reno共存的網(wǎng)絡(luò)環(huán)境下不能公平地競爭到帶寬,因此不能實(shí)質(zhì)性地提高網(wǎng)絡(luò)性能。在分析Reno如何在網(wǎng)絡(luò)路由中占用帶寬的基礎(chǔ)上,提出一種在兩者兼容環(huán)境下的擁塞控制方法,根據(jù)不同瓶頸緩沖區(qū)容量合理選擇a、β等參數(shù),實(shí)現(xiàn)了在Vegas與Reno共存環(huán)境下兩者良好的兼容性,并通過仿真實(shí)驗(yàn)證明了該算法的有效性和正確性。近年來,因特網(wǎng)取得了突飛猛進(jìn)的發(fā)展,同時(shí)伴隨而來的是信息流量的急劇膨脹。有限的網(wǎng)絡(luò)帶寬不能滿足日益增長的用戶需求,網(wǎng)絡(luò)擁塞已經(jīng)成為制約因特網(wǎng)發(fā)展和應(yīng)用的一個(gè)瓶頸。如何預(yù)防和控制擁塞,已經(jīng)成為近年來網(wǎng)絡(luò)研究的熱點(diǎn)。TCP是Internet上通用的傳輸層協(xié)議之一,是目前應(yīng)用最廣泛的傳輸控制協(xié)議,其核心是擁塞控制機(jī)制?;贗nternet的交換機(jī)的通信信道、處理速度與緩沖存儲(chǔ)空間通常是網(wǎng)上所有主機(jī)共享的資源,也是網(wǎng)絡(luò)系統(tǒng)潛在的瓶頸。隨著信源主機(jī)數(shù)以與信源業(yè)務(wù)端業(yè)務(wù)量的不斷增多,瓶頸處就有可能發(fā)生資源競爭,從而導(dǎo)致網(wǎng)絡(luò)擁塞。TCP的一個(gè)重要組成部分是執(zhí)行擁塞控制和擁塞恢復(fù)的算法集合。TCP擁塞控制算法的目標(biāo)是最大限度利用網(wǎng)絡(luò)帶寬,同時(shí)不產(chǎn)生數(shù)據(jù)流傳輸中的擁塞現(xiàn)象。因此,自從上個(gè)世紀(jì)80年代出現(xiàn)第一次擁塞崩潰以來,TCP擁塞控制策略就在不斷地進(jìn)行完善和改進(jìn)。[2]1.3本文的主要研究內(nèi)容Reno機(jī)制是目前應(yīng)用最為廣泛的比較成熟的機(jī)制,也是以后眾多改進(jìn)機(jī)制的基礎(chǔ)。隨著網(wǎng)絡(luò)迅速的發(fā)展和網(wǎng)絡(luò)應(yīng)用的多元化,單一的TCP擁塞控制不能較好的發(fā)揮其作用,于是基于Reno的,從多方面改進(jìn)的擁塞控制機(jī)制呈現(xiàn)了出來,本論文主要研究的就是如何將Reno擁塞控制進(jìn)行可視化,通過動(dòng)畫的形式演繹TCP協(xié)議中的Reno擁塞控制,使得TCP協(xié)議可以立體的展現(xiàn)在大家的面前。2開發(fā)平臺(tái)與技術(shù)的選擇與介紹2.1開發(fā)環(huán)境的介紹我所設(shè)計(jì)的是一個(gè)TCP協(xié)議的可視化,它面對(duì)的是所有的學(xué)習(xí)計(jì)算機(jī)網(wǎng)絡(luò)的朋友,在一個(gè)立體的環(huán)境中使大家可以直白的理解Reno擁塞控制,因?yàn)檫x擇的是VisualStuidio2008這款功能強(qiáng)大的開發(fā)軟件,因此對(duì)硬件的要求就上升了一個(gè)高度,關(guān)于硬件將會(huì)在下面給大家詳細(xì)的介紹。硬件環(huán)境開發(fā)該系統(tǒng)應(yīng)盡可能采用高檔的硬件。因此,在應(yīng)用時(shí)應(yīng)采用更好的配置。處理器:IntelPentiumPIII或更高處理器。內(nèi)存:512MB或更高。2.1.2軟件環(huán)境選擇好的操作系統(tǒng)和好的編程語言是系統(tǒng)優(yōu)劣的關(guān)鍵,我們要求系統(tǒng)在盡可能多的環(huán)境下運(yùn)行,故選擇WindowsXP或者WindowsVista系統(tǒng)。因?yàn)閂isualStudio2008具有友好的集成開發(fā)界面、面向?qū)ο蟮目梢暬_發(fā)模式、良好的數(shù)據(jù)庫與多媒體應(yīng)用支持以與高效的軟件開發(fā)與程序運(yùn)行,功能更大,開發(fā)效率更高,不僅是網(wǎng)絡(luò)環(huán)境下的優(yōu)秀前端開發(fā)語言和工具,也是服務(wù)器端Web編程的優(yōu)秀工具。加之本人對(duì)本系統(tǒng)的操作最為熟練,所以選擇該平臺(tái)為開發(fā)環(huán)境。操作系統(tǒng):WindowsXP或WindowsVista。開發(fā)工具:VisualStudio2008。2.2Reno擁塞控制簡介V.Jacobson在1988年的論文中提出的TCP的擁塞控制由“慢啟動(dòng)(Slowstart)”和“擁塞避免(Congestionavoidance)”組成,后來TCPReno版本中又針對(duì)性的加入了“快速重傳(Fastretransmit)”,“快速恢復(fù)(FastRecovery)”算法,再后來在TCPNewReno中又對(duì)“快速恢復(fù)”算法進(jìn)行了改進(jìn),近些年又出現(xiàn)了選擇性應(yīng)答(selectiveacknowledgement,SACK)算法,還有其他方面的大大小小的改進(jìn),這就是Reno擁塞控制的成長歷程,在軟件開發(fā)完成后我將會(huì)對(duì)以上幾個(gè)階段進(jìn)行一個(gè)系統(tǒng)的介紹和演示,這也是本次開發(fā)的目的。[3]2.3開發(fā)平臺(tái)簡介開發(fā)平臺(tái)我選用了VisualStudio2008,因?yàn)榇髮W(xué)四年我們基本都是使用微軟出品的開發(fā)平臺(tái)進(jìn)行學(xué)習(xí),對(duì)此我們比較熟悉使用起來也比較的得心應(yīng)手,再者VisualStudio2008同樣是由微軟開發(fā)的系統(tǒng),而且編程設(shè)計(jì)也更加的人性化,使用起來也更加的方便,所以選用VisualStudio2008來做為本次開發(fā)的平臺(tái)。3需求分析與可行性研究3.1需求分析需求分析是設(shè)計(jì)軟件之前的必做功課,軟件需求分析的質(zhì)量對(duì)軟件開發(fā)的影響是深遠(yuǎn)的、全局性的,高質(zhì)量需求對(duì)軟件開發(fā)往往起到事半功倍的效果,所謂“磨刀不誤砍柴功”。如果需求分析出現(xiàn)錯(cuò)誤,在后續(xù)階段改正需求分析階段產(chǎn)生的錯(cuò)誤將付出高昂的代價(jià)。3.1.1時(shí)間要求本項(xiàng)目作為大學(xué)本科畢業(yè)設(shè)計(jì)題目,從3月22號(hào)接受選題開始,在5月20號(hào)之前完成系統(tǒng)設(shè)計(jì),編碼實(shí)現(xiàn)工作,在6月3號(hào)之前完成畢業(yè)設(shè)計(jì)論文初稿,6月12號(hào)之前最終完成論文。3.1.2功能要求這個(gè)程序要實(shí)現(xiàn):程序要求對(duì)Reno擁塞控制的幾個(gè)階段進(jìn)行分別的演示。程序要求有開始,暫停,繼續(xù),停止等按鈕用以方便程序的演示。(3)在演示框的右側(cè)有和演示同步的語言描述方便大家對(duì)程序的理解。(4)通過對(duì)Reno擁塞控制的可視化讓人們更加深入的了解計(jì)算機(jī)網(wǎng)絡(luò)中的TCP協(xié)議。(5)要求整個(gè)過程簡單明了,不繁冗拖沓,界面美麗大方。3.1.3Reno擁塞控制的四個(gè)階段慢啟動(dòng)階段(slowstart):發(fā)送方一開始便向網(wǎng)絡(luò)發(fā)送多個(gè)報(bào)文段,直至達(dá)到接收方通告的窗口大小為止(如圖3.1)。當(dāng)發(fā)送方和接收方處于同一個(gè)局域網(wǎng)時(shí),這種方式是可以的。但是如果在發(fā)送方和接收方之間存在多個(gè)路由器和速率較慢的鏈路時(shí),就有可能出現(xiàn)一些問題。一些中間路由器必須緩存分組,并有可能耗盡存儲(chǔ)器的空間。最初的TCP在連接建立成功后會(huì)向網(wǎng)絡(luò)中發(fā)送大量的數(shù)據(jù)包,這樣很容易導(dǎo)致網(wǎng)絡(luò)中路由器緩存空間耗盡,從而發(fā)生擁塞。因此新建立的連接不能夠一開始就大量發(fā)送數(shù)據(jù)包,而只能根據(jù)網(wǎng)絡(luò)情況逐步增加每次發(fā)送的數(shù)據(jù)量,以避免上述現(xiàn)象的發(fā)生。具體來說,當(dāng)新建連接時(shí),cwnd初始化為1個(gè)最大報(bào)文段(MSS)大小,發(fā)送端開始按照擁塞窗口大小發(fā)送數(shù)據(jù),每當(dāng)有一個(gè)報(bào)文段被確認(rèn),cwnd就增加1個(gè)MSS大小。這樣cwnd的值就隨著網(wǎng)絡(luò)往返時(shí)間(RoundTripTime,RTT)呈指數(shù)級(jí)增長,事實(shí)上,慢啟動(dòng)的速度一點(diǎn)也不慢,只是它的起點(diǎn)比較低一點(diǎn)而已。我們可以簡單計(jì)算下:開始>cwnd=1經(jīng)過1個(gè)RTT后>cwnd=2*1=2經(jīng)過2個(gè)RTT后>cwnd=2*2=4經(jīng)過3個(gè)RTT后>cwnd=4*2=8如果帶寬為W,那么經(jīng)過RTT*log2W時(shí)間就可以占滿帶寬。圖3.1慢開始演示擁塞避免階段(congestionavoidance):當(dāng)發(fā)現(xiàn)超時(shí)或收到3個(gè)相同ACK確認(rèn)幀時(shí),則表示有丟包事件,此時(shí)網(wǎng)絡(luò)已發(fā)生擁塞現(xiàn)象,此時(shí)要進(jìn)行相應(yīng)的擁塞控制(圖3.2所示)。將慢啟動(dòng)閾值設(shè)置為當(dāng)前擁塞窗口的一半;如檢測(cè)到超時(shí),擁塞窗口就被置為l。如果擁塞窗口小于或等于慢啟動(dòng)閾值,TCP重新進(jìn)人慢啟動(dòng)階段;如果擁塞窗口大于慢啟動(dòng)閾值,TCP執(zhí)行擁塞避免算法。圖3.2擁塞控制過程從慢啟動(dòng)可以看到,cwnd可以很快的增長上來,從而最大程度利用網(wǎng)絡(luò)帶寬資源,但是cwnd不能一直這樣無限增長下去,一定需要某個(gè)限制。TCP使用了一個(gè)叫慢啟動(dòng)門限(ssthresh)的變量,當(dāng)cwnd超過該值后,慢啟動(dòng)過程結(jié)束,進(jìn)入擁塞避免階段。對(duì)于大多數(shù)TCP實(shí)現(xiàn)來說,ssthresh的值是65536(同樣以字節(jié)計(jì)算)。擁塞避免的主要思想是加法增大,也就是cwnd的值不再指數(shù)級(jí)往上升,開始加法增加。此時(shí)當(dāng)窗口中所有的報(bào)文段都被確認(rèn)時(shí),cwnd的大小加1,cwnd的值就隨著RTT開始線性增加,這樣就可以避免增長過快導(dǎo)致網(wǎng)絡(luò)擁塞,慢慢的增加調(diào)整到網(wǎng)絡(luò)的最佳值。上面討論的兩個(gè)機(jī)制都是沒有檢測(cè)到擁塞的情況下的行為,那么當(dāng)發(fā)現(xiàn)擁塞了cwnd應(yīng)該這樣去調(diào)整。首先來看TCP是如何確定網(wǎng)絡(luò)進(jìn)入了擁塞狀態(tài)的,TCP認(rèn)為網(wǎng)絡(luò)擁塞的主要依據(jù)是它重傳了一個(gè)報(bào)文段。上面提到過,TCP對(duì)每一個(gè)報(bào)文段都有一個(gè)定時(shí)器,稱為重傳定時(shí)器(RTO),當(dāng)RTO超時(shí)且還沒有得到數(shù)據(jù)確認(rèn),那么TCP就會(huì)對(duì)該報(bào)文段進(jìn)行重傳,當(dāng)發(fā)生超時(shí)時(shí),那么出現(xiàn)擁塞的可能性就很大,某個(gè)報(bào)文段可能在網(wǎng)絡(luò)中某處丟失,并且后續(xù)的報(bào)文段也沒有了消息,在這種情況下,TCP反應(yīng)比較“強(qiáng)烈”:1.把ssthresh降低為cwnd值的一半。2.把cwnd重新設(shè)置為1。3.重新進(jìn)入慢啟動(dòng)過程。從整體上來講,TCP擁塞控制窗口變化的原則是AIMD原則,即加法增大、乘法減小??梢钥闯鯰CP的該原則可以較好地保證流之間的公平性,因?yàn)橐坏┏霈F(xiàn)丟包,那么立即減半退避,可以給其他新建的流留有足夠的空間,從而保證整個(gè)的公平性。其實(shí)TCP還有一種情況會(huì)進(jìn)行重傳:那就是收到3個(gè)相同的ACK。TCP在收到亂序到達(dá)包時(shí)就會(huì)立即發(fā)送ACK,TCP利用3個(gè)相同的ACK來判定數(shù)據(jù)包的丟失,此時(shí)進(jìn)行快速重傳,快速重傳做的事情有:1.把ssthresh設(shè)置為cwnd的一半2.把cwnd再設(shè)置為ssthresh的值(具體實(shí)現(xiàn)有些為ssthresh+3)3.重新進(jìn)入擁塞避免階段快速重傳階段(fastretransmit):當(dāng)TCP源端收到到三個(gè)相同的ACK副本時(shí),即認(rèn)為有數(shù)據(jù)包丟失,則源端重傳丟失的數(shù)據(jù)包,而不必等待RTO超時(shí)。同時(shí)將ssthresh設(shè)置為當(dāng)前cwnd值的一半,并且將cwnd減為原先的一半(如圖3.3所示)。[8]圖3.3快速重傳階段演示快速恢復(fù)階段(fastrecovery):當(dāng)"舊"數(shù)據(jù)包離開網(wǎng)絡(luò)后,才能發(fā)送"新"數(shù)據(jù)包進(jìn)入網(wǎng)絡(luò),即同一時(shí)刻在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)包數(shù)量是恒定的。如果發(fā)送方收到一個(gè)重復(fù)的ACK,則認(rèn)為已經(jīng)有一個(gè)數(shù)據(jù)包離開了網(wǎng)絡(luò),于是將擁塞窗口加1。3.1.4性能要求首先要求程序要完全可靠,可以應(yīng)付種種由于系統(tǒng)問題產(chǎn)生的錯(cuò)誤。要求提前設(shè)想到類似的盡可能多的可能發(fā)生的事件,做出相應(yīng)的應(yīng)對(duì)措施,并向用戶提交簡單易懂清晰明白的提示信息。程序要有良好的容錯(cuò)性,當(dāng)用戶進(jìn)行非法操作時(shí)或者系統(tǒng)本身出現(xiàn)問題時(shí)要能以最好的方式退出程序,避免發(fā)生程序假死現(xiàn)象。開發(fā)文檔要有好的易理解性,如果系統(tǒng)又要交由別人接手開發(fā),或者自己由于種種原因需要進(jìn)行二次開發(fā),那么要保證以后能夠清晰的理解整個(gè)系統(tǒng)的設(shè)計(jì)思路以與實(shí)現(xiàn)細(xì)節(jié)。要求程序?qū)λ\(yùn)行之系統(tǒng)的硬件條件要求盡可能低,運(yùn)行時(shí)內(nèi)存占用盡可能小,響應(yīng)速度要盡可能快。并且不發(fā)生內(nèi)存泄漏之類影響系統(tǒng)運(yùn)行的錯(cuò)誤事件。并且要求易于維護(hù)與擴(kuò)展。所以應(yīng)該采用模塊化開發(fā),各個(gè)模塊之間不要有太多的聯(lián)系,以免維護(hù)困難。3.2可行性研究3.2.1成本可行性分析因?yàn)楸拒浖蛔鲩_發(fā)學(xué)習(xí)使用,所以暫且不考慮經(jīng)濟(jì)成本與盈利問題。3.2.2技術(shù)可行性分析首先搭建畢業(yè)設(shè)計(jì)所需要的軟件平臺(tái),軟件使用的VisualStuidio2008,做好畢業(yè)設(shè)計(jì)的前期準(zhǔn)備。進(jìn)行開發(fā)前的準(zhǔn)備,做好需求分析,熟悉VisualStuidio2008的功能以便開發(fā),同時(shí)對(duì)課題進(jìn)行深入的了解。VisualStuidio2008是一款非常強(qiáng)大的開發(fā)軟件,滿足了我做畢業(yè)設(shè)計(jì)所需要的一切功能,因此我選擇了VisualStuidio2008做為我的畢業(yè)設(shè)計(jì)的開發(fā)軟件。此課題在技術(shù)上沒有什么大的困難,而且有功能強(qiáng)大的VisualStuidio2008做為平臺(tái),所以這個(gè)課題在技術(shù)上是完全可以實(shí)施的。4相關(guān)開發(fā)技術(shù)的原理性說明4.1VisualStuidio2008相關(guān)簡介VisualStudio是微軟公司推出的開發(fā)環(huán)境,也是目前最流行的Windows平臺(tái)應(yīng)用程序開發(fā)環(huán)境。目前已經(jīng)開發(fā)到9.0版本,也就是VisualStudio2008。VisualStudio可以用來創(chuàng)建Windows平臺(tái)下的Windows應(yīng)用程序和網(wǎng)絡(luò)應(yīng)用程序,也可以用來創(chuàng)建網(wǎng)絡(luò)服務(wù)、智能設(shè)備應(yīng)用程序和Office插件。MicrosoftVisualStudio2008是面向WindowsVista、Office2007、Web2.0的下一代開發(fā)工具,代號(hào)“Orcas”,是對(duì)VisualStudio2005一次與時(shí)、全面的升級(jí)。VisualStudio2008引入了250多個(gè)新特性,整合了對(duì)象、關(guān)系型數(shù)據(jù)、XML的訪問方式,語言更加簡潔。使用VisualStudio2008可以高效開發(fā)Windows應(yīng)用。設(shè)計(jì)器中可以實(shí)時(shí)反映變更,XAML中智能感知功能可以提高開發(fā)效率。同時(shí)VisualStudio2008支持項(xiàng)目模板、調(diào)試器和部署程序。VisualStudio2008可以高效開發(fā)Web應(yīng)用,集成了ASP.NETAJAX1.0,包含ASP.NETAJAX項(xiàng)目模板,它還可以高效開發(fā)Office應(yīng)用和Mobile應(yīng)用。VisualStudio2008提供了高級(jí)開發(fā)工具、調(diào)試功能、數(shù)據(jù)庫功能和創(chuàng)新功能,幫助在各種平臺(tái)上快速創(chuàng)建當(dāng)前最先進(jìn)的應(yīng)用程序。VisualStudio2008包括各種增強(qiáng)功能,例如可視化設(shè)計(jì)器(使用.NETFramework3.5加速開發(fā))、對(duì)Web開發(fā)工具的大量改進(jìn),以與能夠加速開發(fā)和處理所有類型數(shù)據(jù)的語言增強(qiáng)功能。VisualStudio2008為開發(fā)人員提供了所有相關(guān)的工具和框架支持,幫助創(chuàng)建引人注目的、令人印象深刻并支持AJAX的Web應(yīng)用程序。開發(fā)人員能夠利用這些豐富的客戶端和服務(wù)器端框架輕松構(gòu)建以客戶為中心的Web應(yīng)用程序,這些應(yīng)用程序可以集成任何后端數(shù)據(jù)提供程序、在任何當(dāng)前瀏覽器內(nèi)運(yùn)行并完全訪問ASP.NET應(yīng)用程序服務(wù)和Microsoft平臺(tái)。VisualStudio2008在三個(gè)方面為開發(fā)人員提供了關(guān)鍵改進(jìn):1.快速的應(yīng)用程序開發(fā)為了幫助開發(fā)人員迅速創(chuàng)建先進(jìn)的軟件,VisualStudio2008提供了改進(jìn)的語言和數(shù)據(jù)功能,例如語言集成的查詢(LINQ),各個(gè)編程人員可以利用這些功能更輕松地構(gòu)建解決方案以分析和處理信息。VisualStudio2008還使開發(fā)人員能夠從同一開發(fā)環(huán)境內(nèi)創(chuàng)建面向多個(gè).NETFramework版本的應(yīng)用程序。開發(fā)人員能夠構(gòu)建面向.NETFramework2.0、3.0或3.5的應(yīng)用程序,意味他們可以在同一環(huán)境中支持各種各樣的項(xiàng)目。2.突破性的用戶體驗(yàn)VisualStudio2008為開發(fā)人員提供了在最新平臺(tái)上加速創(chuàng)建緊密聯(lián)系的應(yīng)用程序的新工具,這些平臺(tái)包括Web、WindowsVista、Office2007、SQLServer2008和WindowsServer2008。對(duì)于Web,ASP.NETAJAX與其他新技術(shù)使開發(fā)人員能夠迅速創(chuàng)建更高效、交互式更強(qiáng)和更個(gè)性化的新一代Web體驗(yàn)。3.高效的團(tuán)隊(duì)協(xié)作VisualStudio2008提供了幫助開發(fā)團(tuán)隊(duì)改進(jìn)協(xié)作的擴(kuò)展的和改進(jìn)的服務(wù)項(xiàng)目,包括幫助將數(shù)據(jù)庫專業(yè)人員和圖形設(shè)計(jì)人員加入到開發(fā)流程的工具。4.2TCP/IP協(xié)議和擁塞控制簡介TCP/IP協(xié)議實(shí)際上就是在物理網(wǎng)上的一組完整的網(wǎng)絡(luò)協(xié)議。其中TCP是提供傳輸層服務(wù),而IP則是提供網(wǎng)絡(luò)層服務(wù)。TCP/IP主要包括以下協(xié)議:IP:網(wǎng)間協(xié)議(InternetProtocol),負(fù)責(zé)主機(jī)間數(shù)據(jù)的路由和網(wǎng)絡(luò)上數(shù)據(jù)的存儲(chǔ)。同時(shí)為ICMP,TCP,UDP提供分組發(fā)送服務(wù)。用戶進(jìn)程通常不需要涉與這一層。ICMP:網(wǎng)間報(bào)文控制協(xié)議(InternetControlMessageProtocol),此協(xié)議處理網(wǎng)關(guān)和主機(jī)的差錯(cuò)和傳送控制。TCP:傳輸控制協(xié)議(TransmissionControlProtocol),這是一種提供給用戶進(jìn)程的可靠的全雙工字節(jié)流面向連接的協(xié)議。它要為用戶進(jìn)程提供虛電路服務(wù),并為數(shù)據(jù)可靠傳輸建立檢查。TCP/IP協(xié)議的核心部分是傳輸層協(xié)議(TCP、UDP),網(wǎng)絡(luò)層協(xié)議(IP)和物理接口層,這三層通常是在操作系統(tǒng)內(nèi)核中實(shí)現(xiàn)。因此用戶一般不涉與。編程時(shí),編程界面有兩種形式:一、是由內(nèi)核直接提供的系統(tǒng)調(diào)用;二、使用以庫函數(shù)方式提供的各種函數(shù)。前者為核內(nèi)實(shí)現(xiàn),后者為核外實(shí)現(xiàn)。用戶服務(wù)要通過核外的應(yīng)用程序才能實(shí)現(xiàn),所以要使用套接字(socket)來實(shí)現(xiàn)。TCP提供面向連接的服務(wù)。TCP不提供廣播或多播服務(wù)。由于TCP要提供可靠的、面向連接的運(yùn)輸服務(wù),因此不可避免地增加了許多的開銷。這不僅使協(xié)議數(shù)據(jù)單元的首部增大很多,還要占用許多的處理機(jī)資源。因?yàn)樵诒驹O(shè)計(jì)中主要是完成TCP的擁塞控制所以下面主要介紹一下TCP的擁塞控制的一般原理和它所起到的作用1.在某段時(shí)間,若對(duì)網(wǎng)絡(luò)中某資源的需求超過了該資源所能提供的可用部分,網(wǎng)絡(luò)的性能就要變壞——產(chǎn)生擁塞(congestion)。2.出現(xiàn)資源擁塞的條件:對(duì)資源需求的總和>可用資源3.若網(wǎng)絡(luò)中有許多資源同時(shí)產(chǎn)生擁塞,網(wǎng)絡(luò)的性能就要明顯變壞,整個(gè)網(wǎng)絡(luò)的吞吐量將隨輸入負(fù)荷的增大而下降。4.擁塞控制所起到的作用如圖4.1所示圖4.1擁塞控制所以到的作用擁塞控制是很難設(shè)計(jì)的,因?yàn)樗且粋€(gè)動(dòng)態(tài)的(而不是靜態(tài)的)問題。當(dāng)前網(wǎng)絡(luò)正朝著高速化的方向發(fā)展,這很容易出現(xiàn)緩存不夠大而造成分組的丟失。但分組的丟失是網(wǎng)絡(luò)發(fā)生擁塞的征兆而不是原因。在許多情況下,甚至正是擁塞控制本身成為引起網(wǎng)絡(luò)性能惡化甚至發(fā)生死鎖的原因。這點(diǎn)應(yīng)特別引起重視。5.當(dāng)網(wǎng)絡(luò)出現(xiàn)擁塞時(shí),無論在慢開始階段還是在擁塞避免階段,只要發(fā)送方判斷網(wǎng)絡(luò)出現(xiàn)擁塞(其根據(jù)就是沒有按時(shí)收到確認(rèn)),就要把慢開始門限ssthresh設(shè)置為出現(xiàn)擁塞時(shí)的發(fā)送方窗口值的一半(但不能小于2)。然后把擁塞窗口cwnd重新設(shè)置為1,執(zhí)行慢開始算法如圖4.2所示。這樣做的目的就是要迅速減少主機(jī)發(fā)送到網(wǎng)絡(luò)中的分組數(shù),使得發(fā)生擁塞的路由器有足夠時(shí)間把隊(duì)列中積壓的分組處理完畢。6.當(dāng)發(fā)送端收到連續(xù)三個(gè)重復(fù)的確認(rèn)時(shí),就執(zhí)行“乘法減小”算法,把慢開始門限ssthresh減半。但接下去不執(zhí)行慢開始算法。由于發(fā)送方現(xiàn)在認(rèn)為網(wǎng)絡(luò)很可能沒有發(fā)生擁塞,因此現(xiàn)在不執(zhí)行慢開始算法,即擁塞窗口cwnd現(xiàn)在不設(shè)置為1,而是設(shè)置為慢開始門限ssthresh減半后的數(shù)值,然后開始執(zhí)行擁塞避免算法(“加法增大”),使擁塞窗口緩慢地線性增大?!?】圖4.2擁塞控制整個(gè)過程C#簡介與特點(diǎn)4.3.1C#簡介C#是一種安全的、穩(wěn)定的、簡單的、優(yōu)雅的,由C和C++衍生出來的面向?qū)ο蟮木幊陶Z言。它在繼承C和C++強(qiáng)大功能的同時(shí)去掉了一些它們的復(fù)雜特性(例如沒有宏和模版,不允許多重繼承)。C#綜合了VB簡單的可視化操作和C++的高運(yùn)行效率,以其強(qiáng)大的操作能力、優(yōu)雅的語法風(fēng)格、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.NET開發(fā)的首選語言,并且C#成為ECMA與ISO標(biāo)準(zhǔn)規(guī)范。C#看似基于C++寫成,但又融入其它語言如Pascal、Java、VB等。微軟C#語言定義主要是從C和C++繼承而來的,而且語言中的許多元素也反映了這一點(diǎn)。C#在設(shè)計(jì)者從C++繼承的可選選項(xiàng)方面比Java要廣泛一些(比如說struts),它還增加了自己新的特點(diǎn)(比方說源代碼版本定義)。但它還太不成熟,不可能擠垮Java。C#還需要進(jìn)化成一種開發(fā)者能夠接受和采用的語言。而微軟當(dāng)前為它的這種新語言大造聲勢(shì)也是值得注意的。目前大家的反應(yīng)是:“這是對(duì)Java的反擊?!盋#更像Java一些,雖然微軟在這個(gè)問題上保持沉默.這也是意料中的事情,我覺得,因?yàn)镴ava近來很成功而使用Java的公司都報(bào)告說它們?cè)谏a(chǎn)效率上比C++獲得了提高。C#與C++、JAVA的區(qū)別C#是微軟公司在去年六月發(fā)布的一種新的編程語言,并定于在微軟職業(yè)開發(fā)者論壇(PDC)上登臺(tái)亮相。C#是微軟公司研究員AndersHejlsberg的最新成果。C#看起來與Java有著驚人的相似;它包括了諸如單一繼承,界面,與Java幾乎同樣的語法,和編譯成中間代碼再運(yùn)行的過程。但是C#與Java有著明顯的不同,它借鑒了Delphi的一個(gè)特點(diǎn),與COM(組件對(duì)象模型)是直接集成的,而且它是微軟公司.NETwindows網(wǎng)絡(luò)框架的主角。微軟C#語言定義主要是從C和C++繼承而來的,而且語言中的許多元素也反映了這一點(diǎn)。C#在設(shè)計(jì)者從C++繼承的可選選項(xiàng)方面比Java要廣泛一些(比如說structs),它還增加了自己新的特點(diǎn)(比方說源代碼版本定義)。但它還太不成熟,不可能擠垮Java。C#還需要進(jìn)化成一種開發(fā)者能夠接受和采用的語言。而微軟當(dāng)前為它的這種新語言大造聲勢(shì)也是值得注意的。目前大家的反應(yīng)是:“這是對(duì)Java的反擊”。4.3.3C#的前途這世界上沒有什么比編程工具更加牽動(dòng)程序員的心。VC、VB、DELPHI、JAVA……這些耀眼的名字不僅占據(jù)了程序員的生活,而且似乎已經(jīng)成為了某種信仰??墒牵殡S著新世紀(jì)的腳步,這些信仰又一次遭遇了重大的挑戰(zhàn)。如果拋開一切非技術(shù)方面的因素,C#無疑是這個(gè)星球上有史以來最好的編程語言,它幾乎集中了所有關(guān)于軟件開發(fā)和軟件工程研究的最新成果。面向?qū)ο?、類型安全、組件技術(shù)、自動(dòng)內(nèi)存管理、跨平臺(tái)異常處理、版本控制、代碼安全管理……你不可能在另外的一種語言中找到所有這些特性。盡管像很多人注意到的一樣,當(dāng)我羅列上述特性時(shí),總是讓人想到JAVA,然而C#確實(shí)走得更遠(yuǎn)。但是,C#也有弱點(diǎn)。首先,在一些版本較舊的Windows平臺(tái)上,C#的程序還不能運(yùn)行,因?yàn)镃#程序需要.NET運(yùn)行庫作為基礎(chǔ),而.NET運(yùn)行庫作為現(xiàn)在的的Windows(XP與以后版本)的一部分發(fā)行,WindowsMe和Windows2000用戶只能以ServicePack的形式安裝使用。其次,C#能夠使用的組件或庫還只有.NET運(yùn)行庫等很少的選擇,沒有豐富的第三方軟件庫可用,這需要有一個(gè)過程,同時(shí)各軟件開發(fā)商的支持也很重要。第三,JAVA的成功因素里有一些是反微軟陣營的吹捧,雖然“只寫一次,到處運(yùn)行”只是一句口號(hào),但畢竟已經(jīng)是一種成熟的技術(shù)。而C#的鼓吹者目前只有名聲不佳的微軟,且只能運(yùn)行在Windows上。實(shí)際上這兩種語言都不是不可替代的,理智的說,對(duì)軟件開發(fā)商而言,什么用的最熟什么就是最好的工具。尤其對(duì)C++的使用者,C#沒有帶來任何新東西,因?yàn)?NET運(yùn)行庫在C++中也可以使用,沒有要換的絕對(duì)的理由。綜上所述,我個(gè)人認(rèn)為,近幾年,C#將不可避免地崛起,在Windows平臺(tái)上成為主角,而JAVA將在UNIX、Linux等平臺(tái)上成為霸主,C++將繼續(xù)在系統(tǒng)軟件領(lǐng)域大展拳腳。非常有意思的是,這些語言的語法極其接近,因?yàn)镴AVA和C#都是由C++發(fā)展而來的。其他的開發(fā)工具當(dāng)然還會(huì)在相當(dāng)長的時(shí)間里繼續(xù)他們的旅程,不過在市場份額上,將不可避免地受到?jīng)_擊。5系統(tǒng)功能模塊分析5.1主框架具體功能為了更好的把TCP協(xié)議中的Reno擁塞控制展現(xiàn)出來,需要有一個(gè)優(yōu)美的窗口,在窗口中實(shí)現(xiàn)擁塞控制的各個(gè)階段的可視化,然后有幾個(gè)按鈕控制整個(gè)演示過程的開始,停止,暫停,繼續(xù),使得動(dòng)態(tài)演示更加的完美,在演示的同時(shí)要在演示窗的旁邊有同步的文字解釋,使得整個(gè)過程中的每一個(gè)步驟更加容易理解,這就是本課題的總體設(shè)計(jì)結(jié)構(gòu)和目的。本設(shè)計(jì)主要由以下幾大部分組成:慢開始部分,擁塞避免部分,實(shí)現(xiàn)兩部分的算法大體一致。慢開始部分由演示部分,控制按鈕和文字解說三個(gè)部分組成,三個(gè)部分相互聯(lián)系構(gòu)成一個(gè)有機(jī)的整體,給TCP協(xié)議的Reno擁塞控制的可視化一個(gè)完美的詮釋。5.2各功能模塊詳細(xì)設(shè)計(jì)本次畢業(yè)設(shè)計(jì)主要要實(shí)現(xiàn)的功能就是使TCPReno擁塞控制實(shí)現(xiàn)可視化,現(xiàn)在對(duì)要實(shí)現(xiàn)的幾個(gè)功能模塊和詳細(xì)的設(shè)計(jì)理念進(jìn)行系統(tǒng)的分析。首先要做的就是在窗口中實(shí)現(xiàn)數(shù)據(jù)的發(fā)送和接收,因?yàn)椴皇亲龅腇lash,要以程序來實(shí)現(xiàn)數(shù)據(jù)包的來回傳送,所以就要用函數(shù)不斷的改變數(shù)據(jù)包的坐標(biāo)來實(shí)現(xiàn)數(shù)據(jù)包的滑動(dòng),但是同時(shí)要控制數(shù)據(jù)包的停止,在數(shù)據(jù)包發(fā)送到接收端消失后,要讓其停止而不是在隱藏后繼續(xù)滑動(dòng),這就要用一個(gè)函數(shù)來實(shí)現(xiàn),在后面程序的分析時(shí)再做具體的分析。這其中的具體實(shí)現(xiàn)就是當(dāng)傳送輪次一發(fā)送出數(shù)據(jù)M1在接收方接收到數(shù)據(jù)包的同時(shí),數(shù)據(jù)M1停止,同時(shí)接收方發(fā)送出確認(rèn)M1返回發(fā)送方,第一個(gè)傳輸輪次結(jié)束。在整個(gè)傳輸過程中數(shù)據(jù)M1和確認(rèn)M1都不僅僅是從顯示傳送到隱藏,在隱藏后還繼續(xù)滑動(dòng),而是在從顯示到隱藏的同時(shí)就已經(jīng)停止滑動(dòng),這是為了方便程序在后面做進(jìn)一步完善而做好的準(zhǔn)備。其次是控制按鈕的設(shè)計(jì),簡單的來說控制按鈕由開始,停止,暫停,繼續(xù)四個(gè)按鈕組成,開始和停止按鈕組成一個(gè)按鈕,開始按鈕按下后數(shù)據(jù)開始傳送,此時(shí)開始按鈕自動(dòng)變成停止按鈕,按下停止按鈕,數(shù)據(jù)M1回到初始位置,按鈕自動(dòng)變?yōu)殚_始按鈕。暫停和繼續(xù)按鈕組成一個(gè)按鈕,未按動(dòng)開始按鈕前暫停按鈕和繼續(xù)按鈕為未啟動(dòng)狀態(tài)顯示為灰色,當(dāng)開始按鈕按下后暫停按鈕自動(dòng)啟動(dòng),按下暫停按鈕后暫停按鈕自動(dòng)轉(zhuǎn)化成繼續(xù)按鈕,同時(shí)數(shù)據(jù)傳送定格,按下開始按鈕后,開始按鈕自動(dòng)轉(zhuǎn)化為暫停按鈕,同時(shí)數(shù)據(jù)繼續(xù)傳送,這就是幾個(gè)按鈕的狀態(tài)和功能。最后就是文字同步演示窗口,在數(shù)據(jù)開始傳送后下面的文字同步演示窗口啟動(dòng)并對(duì)數(shù)據(jù)傳送進(jìn)行同步的傳送介紹,當(dāng)數(shù)據(jù)M1開始有發(fā)送方發(fā)送后文字同步演示窗口將對(duì)此作出解釋即“輪次一,數(shù)據(jù)M1開始由發(fā)送方開始傳送”,當(dāng)數(shù)據(jù)M1由接收方接受到后確認(rèn)M1開始返回,文字同步演示窗口同樣會(huì)作出解釋“輪次一,確認(rèn)M1開始由接收方返回到發(fā)送方”。由于是文字同步演示,所以當(dāng)暫停和開始按鈕按下后文字同步演示窗口會(huì)相應(yīng)的暫停和開始,這也是程序完善性的一個(gè)基本的體現(xiàn)。當(dāng)停止按鈕按下后文字同步演示窗口的的所有解釋文字全部清空進(jìn)入到下一輪的數(shù)據(jù)傳送演示狀態(tài)。這就是整個(gè)TCPReno擁塞控制可視化的過程,整個(gè)過程將全部由C#語言實(shí)現(xiàn),程序簡潔嚴(yán)密,幾乎考慮到了所有的漏洞,使得程序盡善盡美。6詳細(xì)設(shè)計(jì)與編碼實(shí)現(xiàn)6.1主框架詳細(xì)設(shè)計(jì)為了更好的把TCP協(xié)議中的Reno擁塞控制展現(xiàn)出來,需要有一個(gè)優(yōu)美的窗口,在窗口中實(shí)現(xiàn)擁塞控制的各個(gè)階段的可視化,然后有幾個(gè)按鈕控制整個(gè)演示過程的開始,停止,暫停,繼續(xù),使得動(dòng)態(tài)演示更加的完美,同時(shí)在演示的同時(shí)要在演示窗的旁邊有同步的文字解釋,使得整個(gè)過程中的每一個(gè)步驟更加容易理解,這就是本課題的總體設(shè)計(jì)結(jié)構(gòu)和目的。本設(shè)計(jì)主要由以下幾大部分組成:慢開始部分,擁塞避免部分,實(shí)現(xiàn)兩部分的算法大體一致。慢開始部分由演示部分,控制按鈕和文字解說三個(gè)部分組成,三個(gè)部分相互聯(lián)系構(gòu)成一個(gè)有機(jī)的整體,給TCP協(xié)議的Reno擁塞控制的可視化一個(gè)完美的詮釋。6.2模塊的詳細(xì)設(shè)計(jì)6.2.1程序代碼usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespaceSlowStart{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();textBox1.Text="";textBox2.Text="";}privatePointLeft_s=newPoint(140,135);privatePointRight_e=newPoint(530,135);privatePointRight_s=newPoint(500,190);privatePointLeft_e=newPoint(120,190);privateintStep=0;privatevoidtimer1_Tick(objectsender,EventArgse){switch(Step){case0:if(pictureBox_s.Location==Left_s){textBox1.Text+="輪次1--cwnd=1發(fā)送方開始發(fā)送數(shù)據(jù)M1\r\n";}if(pictureBox_s.Location==Right_e){pictureBox_s.Visible=false;Step=1;pictureBox_s.Location=Left_s;}else{pictureBox_s.Visible=true;pictureBox_s.Location=newPoint(pictureBox_s.Location.X+10,pictureBox_s.Location.Y);}break;case1:if(pictureBox_r.Location==Right_s){textBox2.Text+="輪次1--接收方收到M1并發(fā)出確認(rèn)\r\n";}if(pictureBox_r.Location==Left_e){pictureBox_r.Visible=false;Step=2;pictureBox_r.Location=Right_s;}else{pictureBox_r.Visible=true;pictureBox_r.Location=newPoint(pictureBox_r.Location.X-10,pictureBox_r.Location.Y);}break;case2:if(pictureBox_s.Location==Left_s){textBox1.Text+="輪次2--cwnd=2發(fā)送方開始發(fā)送數(shù)據(jù)M2到M3\r\n";}if(pictureBox_s.Location==Right_e){pictureBox_s.Visible=false;Step=3;pictureBox_s.Location=Left_s;}else{pictureBox_s.Visible=true;pictureBox_s.Image=global::SlowStart.Properties.Resources.m2;pictureBox_s.Location=newPoint(pictureBox_s.Location.X+10,pictureBox_s.Location.Y);}break;case3:if(pictureBox_r.Location==Right_s){textBox2.Text+="輪次2--接收方收到M2到M3并發(fā)出確認(rèn)\r\n";}if(pictureBox_r.Location==Left_e){pictureBox_r.Visible=false;Step=4;pictureBox_r.Location=Right_s;}else{pictureBox_r.Visible=true;pictureBox_r.Image=global::SlowStart.Properties.Resources.q2;pictureBox_r.Location=newPoint(pictureBox_r.Location.X-10,pictureBox_r.Location.Y);}break;case4:if(pictureBox_s.Location==Left_s){textBox1.Text+="輪次3--cwnd=4發(fā)送方開始發(fā)送數(shù)據(jù)M4到M7\r\n";}if(pictureBox_s.Location==Right_e){pictureBox_s.Visible=false;Step=5;pictureBox_s.Location=Left_s;}else{pictureBox_s.Visible=true;pictureBox_s.Image=global::SlowStart.Properties.Resources.m3;pictureBox_s.Location=newPoint(pictureBox_s.Location.X+10,pictureBox_s.Location.Y);}break;case5:if(pictureBox_r.Location==Right_s){textBox2.Text+="輪次3--接收方收到M4到M7并發(fā)出確認(rèn)\r\n";}if(pictureBox_r.Location==Left_e){pictureBox_r.Visible=false;Step=6;pictureBox_r.Location=Right_s;}else{pictureBox_r.Visible=true;pictureBox_r.Image=global::SlowStart.Properties.Resources.q3;pictureBox_r.Location=newPoint(pictureBox_r.Location.X-10,pictureBox_r.Location.Y);}break;case6:if(pictureBox_s.Location==Left_s){textBox1.Text+="輪次4--cwnd=8發(fā)送方開始發(fā)送數(shù)據(jù)M8到M15\r\n";}if(pictureBox_s.Location==Right_e){pictureBox_s.Visible=false;Step=7;pictureBox_s.Location=Left_s;}else{pictureBox_s.Visible=true;pictureBox_s.Image=global::SlowStart.Properties.Resources.m4;pictureBox_s.Location=newPoint(pictureBox_s.Location.X+10,pictureBox_s.Location.Y);}break;case7:if(pictureBox_r.Location==Right_s){textBox2.Text+="輪次4--接收方收到M8到M15并發(fā)出確認(rèn)\r\n";}if(pictureBox_r.Location==Left_e){pictureBox_r.Visible=false;Step=8;pictureBox_r.Location=Right_s;}else{pictureBox_r.Visible=true;pictureBox_r.Image=global::SlowStart.Properties.Resources.q4;pictureBox_r.Location=newPoint(pictureBox_r.Location.X-10,pictureBox_r.Location.Y);}break;case8:textBox1.Text+="慢開始過程結(jié)束\r\n";textBox2.Text+="慢開始過程結(jié)束\r\n";pictureBox_s.Location=Left_s;pictureBox_r.Location=Right_s;pictureBox_s.Image=global::SlowStart.Properties.Resources.m1;pictureBox_s.Visible=true;pictureBox_r.Visible=false;pictureBox_r.Image=global::SlowStart.Properties.Resources.q1;timer1.Enabled=false;break;}}privatevoidbutton_start_Click(objectsender,EventArgse){if(button_start.Text=="開始"){button_start.Text="停止";timer1.Enabled=true;button_pause.Enabled=true;}else{button_start.Text="開始";timer1.Enabled=false;button_pause.Enabled=false;button_pause.Text="暫停";Step=0;textBox1.Text="";textBox2.Text="";pictureBox_s.Location=Left_s;pictureBox_r.Location=Right_s;pictureBox_s.Image=global::SlowStart.Properties.Resources.m1;pictureBox_s.Visible=true;pictureBox_r.Visible=false;pictureBox_r.Image=global::SlowStart.Properties.Resources.q1;}}privatevoidbutton_pause_Click(objectsender,EventArgse){if(button_pause.Text=="暫停"){button_pause.Text="繼續(xù)";timer1.Enabled=false;}else{button_pause.Text="暫停";t
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《標(biāo)準(zhǔn)理解與實(shí)施》課件
- 《盾構(gòu)施工測(cè)量培訓(xùn)》課件
- 《員工安全教育講義》課件
- 《測(cè)序技術(shù)介紹》課件
- 單位管理制度集合大全職工管理篇
- 單位管理制度集粹選集員工管理篇十篇
- 單位管理制度匯編大全職工管理篇
- 單位管理制度合并匯編【職員管理篇】
- 《客服分析報(bào)告會(huì)》課件
- 單位管理制度分享合集【人力資源管理】十篇
- DZ/T 0462.1-2023 礦產(chǎn)資源“三率”指標(biāo)要求 第1部分:煤(正式版)
- DLT 265-2012 變壓器有載分接開關(guān)現(xiàn)場試驗(yàn)導(dǎo)則
- 手術(shù)室護(hù)理年終總結(jié)
- 職業(yè)生涯規(guī)劃班會(huì)課教案設(shè)計(jì)
- 微觀經(jīng)濟(jì)學(xué)(對(duì)外經(jīng)濟(jì)貿(mào)易大學(xué))智慧樹知到期末考試答案2024年
- (正式版)HGT 6277-2024 甲醇制烯烴(MTO)級(jí)甲醇
- 注射用更昔洛韋的臨床療效研究
- 2023年1月廣東省自考00634廣告策劃試題及答案含解析
- 中國綠色建筑現(xiàn)狀與未來展望
- 河南省洛陽市2023-2024學(xué)年高二上學(xué)期期末考試英語試題(解析版)
- 超聲檢查醫(yī)療糾紛的防范培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論