计算机网络重要机制(一)可靠数据传输
操作系統(tǒng),計(jì)算機(jī)網(wǎng)絡(luò)都屬于計(jì)算機(jī)系統(tǒng),為了使得整個(gè)系統(tǒng)運(yùn)行起來(lái),人們根據(jù)當(dāng)時(shí)的硬件條件和理論認(rèn)識(shí)設(shè)計(jì)了各種的算法(也可以叫機(jī)制),這些機(jī)制有些被拋棄,有些被進(jìn)化。所以操作系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)里面的內(nèi)容概括起來(lái)就是:條件(已知)、問(wèn)題(未知)----》算法----》實(shí)現(xiàn);在具體實(shí)現(xiàn)的時(shí)候?yàn)榱伺浜纤惴ㄔO(shè)計(jì)了各種精巧的數(shù)據(jù)結(jié)構(gòu)。《計(jì)算機(jī)網(wǎng)絡(luò)重要機(jī)制》系列總結(jié)的是自己學(xué)習(xí)計(jì)算機(jī)網(wǎng)絡(luò)中的重要機(jī)制,材料主要參考《計(jì)算機(jī)網(wǎng)絡(luò)自頂向下》和網(wǎng)上資料,敘述方式就是上面的框架。
1,傳輸?shù)幕玖鞒虉D如下所示:
圖1
2,下面要解決傳輸中兩個(gè)問(wèn)題:丟包、壞包(01bit發(fā)生翻轉(zhuǎn)),要使用到的工具是數(shù)學(xué)中的有限狀態(tài)機(jī)如下圖:
圖2
3,假設(shè)說(shuō)網(wǎng)絡(luò)層的傳輸是沒(méi)有問(wèn)題的,如圖1b圖,那應(yīng)該怎樣設(shè)計(jì)我們的傳輸層協(xié)議呢?如下圖:
圖3
4,假設(shè)網(wǎng)絡(luò)層中傳輸過(guò)程中存在包被破壞(01翻轉(zhuǎn))且接收方還能收到這個(gè)壞包,那么上面的1.0協(xié)議該如何改進(jìn)呢,如下圖:
圖4
5,上面的rdt2.0沒(méi)有考慮NAK/ACK包在傳輸中被破壞且還能被發(fā)送方接受到的問(wèn)題,未解決這個(gè)問(wèn)題為每個(gè)數(shù)據(jù)包增加了1bit位的序列號(hào),即0或1,rdt2.1如下圖:因?yàn)樵黾恿藘蓚€(gè)序列號(hào),所以rdt2.1的狀態(tài)是2.0狀態(tài)的二倍,此時(shí)從圖上已經(jīng)感覺(jué)到略顯復(fù)雜,其實(shí)并不復(fù)雜,就是把2.0版本重復(fù)一次而已(但并不完全一樣),還有這個(gè)圖是可以簡(jiǎn)化的。
圖5
圖6
6,觀察圖6知道,receiver在收到壞包時(shí),會(huì)向sender發(fā)送NAK,receiver收到上一個(gè)包(重復(fù)包)時(shí),會(huì)向sender發(fā)送ACK,但是目的都是一樣,需要sender送正確的當(dāng)前包,所以這兩個(gè)情況可以合并起來(lái)考慮,那怎么合并呢,其實(shí)很簡(jiǎn)單,就是出現(xiàn)上面兩種情況時(shí),都發(fā)送上一個(gè)包的ACK(此時(shí)的ACK也帶有序列號(hào)01了),這樣sender也稍微調(diào)整一下就可以了。如rdt2.2下圖:
圖7
圖8
jj
總結(jié)
以上是生活随笔為你收集整理的计算机网络重要机制(一)可靠数据传输的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: javascript 在对象中使用 定时
- 下一篇: excel图表模板免费下载_40个免费的