Nagle算法與delay-ack

tcp數(shù)據(jù)傳輸分為兩種:

  • 交互數(shù)據(jù)傳輸

    交互數(shù)據(jù)就是發(fā)送控制命令的數(shù)據(jù)流,如telnet、ftp等;利用Nagle算法與delay-ack進(jìn)行擁塞避免

  • 塊數(shù)據(jù)傳輸

    塊數(shù)據(jù)是用來(lái)發(fā)送控制命令的包;利用滑動(dòng)窗口進(jìn)行流控、利用“慢啟動(dòng)與擁塞避免算法、快速重傳算法”進(jìn)行擁塞避免

為何Nagle算法和delay-ack可以使交互數(shù)據(jù)避免擁塞

交互數(shù)據(jù)流屬于多而小的數(shù)據(jù)流,如果是在局域網(wǎng)內(nèi)則沒(méi)什么問(wèn)題,但如果是在廣域網(wǎng)上,時(shí)刻充斥著大量TCP小分組,那么可能會(huì)造成網(wǎng)絡(luò)的擁塞。此二算法就是為了減少TCP小分組而產(chǎn)生的,目的即是為了提高網(wǎng)絡(luò)效率。

Nagle算法

Nagle要求一個(gè)TCP連接上最多只能有一個(gè)未被確認(rèn)的小分組,在該分組的確認(rèn)到達(dá)之前不能發(fā)送其他小分組。TCP會(huì)搜集這些小的分組,然后在之前小分組的確認(rèn)到達(dá)后將剛才搜集的小分組合并發(fā)送出去。

該算法的優(yōu)越之處在于它是自適應(yīng)的,確認(rèn)到達(dá)的越快,數(shù)據(jù)也就發(fā)送的越快;而在希望減少微小分組數(shù)目的低速?gòu)V域網(wǎng)上,則會(huì)發(fā)送更少的分組。

當(dāng)然,有些時(shí)候是需要禁用Nagle算法的,如遠(yuǎn)程連接時(shí)的鼠標(biāo)移動(dòng)操作

delay-ack

通常Server在接收到從Client發(fā)送過(guò)來(lái)的數(shù)據(jù)時(shí),并不馬上發(fā)送ACK,而是等一個(gè)規(guī)定時(shí)延,看看本機(jī)是否有數(shù)據(jù)要反饋給Client,如果有,就將數(shù)據(jù)包含在此ACK包中,以前發(fā)送給Client。一般情況下這個(gè)時(shí)延為200ms。

好處:

  • 避免糊涂窗口綜合癥
  • 捎帶ack,減少小分組

當(dāng)Nagle遇上延遲ACK

試想:通過(guò)多個(gè)寫小片數(shù)據(jù)向?qū)Χ税l(fā)送單個(gè)邏輯的操作,兩次寫數(shù)據(jù)長(zhǎng)度小于MSS,當(dāng)第一次寫數(shù)據(jù)到達(dá)對(duì)端后,對(duì)端延遲ack,不發(fā)送ack,而本端因?yàn)橐l(fā)送的數(shù)據(jù)長(zhǎng)度小于MSS,所以nagle算法起作用,數(shù)據(jù)并不會(huì)立即發(fā)送,而是等待對(duì)端發(fā)送的第一次數(shù)據(jù)確認(rèn)ack;這樣的情況下,需要等待對(duì)端超時(shí)發(fā)送ack,然后本段才能發(fā)送第二次寫的數(shù)據(jù),從而造成延遲;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、TCP為什么需要3次握手,4次斷開(kāi)? “三次握手”的目的是“為了防止已失效的連接請(qǐng)求報(bào)文段突然又傳送到了服務(wù)端...
    杰倫哎呦哎呦閱讀 3,662評(píng)論 0 6
  • 1.這篇文章不是本人原創(chuàng)的,只是個(gè)人為了對(duì)這部分知識(shí)做一個(gè)整理和系統(tǒng)的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,380評(píng)論 6 174
  • 個(gè)人認(rèn)為,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,196評(píng)論 0 8
  • TCP/IP詳解系列,關(guān)于tcp擁塞控制和數(shù)據(jù)流的地方講的不細(xì)致,或許是涉及概念/算法太多,作者略去了一些對(duì)初學(xué)者...
    半島夏天閱讀 1,217評(píng)論 0 1
  • 主目錄見(jiàn):Android高級(jí)進(jìn)階知識(shí)(這是總目錄索引)[written by 無(wú)心追求] TCP問(wèn)題分析 網(wǎng)絡(luò)的五...
    ZJ_Rocky閱讀 1,639評(píng)論 0 5

友情鏈接更多精彩內(nèi)容