新聞中心
前言
TCP在OSI七層模型中,屬于第四層(傳輸層),幫我們處理了傳輸層的細(xì)節(jié)。包括限流、丟包、網(wǎng)絡(luò)傳輸亂序等問題。那TCP到底是如何實(shí)現(xiàn)限流的呢?
如果你需要復(fù)習(xí)一下基礎(chǔ)知識,請戳這里《TCP/IP基礎(chǔ)十分鐘入門》 ,博主比較懶,下周補(bǔ)上
接收端緩沖區(qū)被塞滿
如果sender發(fā)送速度快,reciever處理速度慢。會發(fā)生什么事?
過一段時(shí)間,reciever的緩沖區(qū)被打滿。
- 當(dāng)reciever緩沖區(qū)被打滿后,通過ack(win=0)告訴sender不要給我發(fā)送數(shù)據(jù)了,我處理不了了。
- sender就會停止發(fā)送數(shù)據(jù)。
- 過一會,reciever處理數(shù)據(jù)后,緩沖區(qū)有了空閑空間。
- 通過ack聲明自己的窗口大小
- sender繼續(xù)發(fā)送數(shù)據(jù)
滑動窗口出場
通過動畫我們可以直觀的看到窗口向右滑動,所以叫做滑動窗口。
分解動作
滑動前
圖示都包含哪些信息呢?我們分解來看。
- 接收端的窗口大小為6
- 窗口外,左側(cè)為已經(jīng)發(fā)送且已經(jīng)收到ack,這部分?jǐn)?shù)據(jù)可以丟棄了。
- 12-14為已經(jīng)發(fā)送,但未收到ack。(不能丟棄,有可能需要重發(fā))
- 15-17為未發(fā)送數(shù)據(jù),由于未確認(rèn)數(shù)據(jù)小于6,所以可以很快發(fā)送
- 窗口外,右側(cè)為未發(fā)送數(shù)據(jù),但由于窗口已滿,不能發(fā)送
滑動后
- sender收到ack=12的確認(rèn)包
- 窗口向右滑動
- 窗口內(nèi)的數(shù)據(jù)改為13-18
總結(jié)
以上就是TCP/IP中的滑動窗口。
滑動窗口也是服務(wù)限流的一種算法。其他
有些同學(xué)可能會問,如果首先收到ack=13的確認(rèn)包,滑動窗口是什么樣的呢?我們直接上圖吧!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
當(dāng)前文章:TCP-IP之滑動窗口-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://www.dlmjj.cn/article/deoiho.html