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