精品久久看,欧美成人久久一级c片免费,日本加勒比在线精品视频,国产一区二区三区免费大片天美,国产成人精品999在线,97理论三级九七午夜在线观看

當(dāng)前位置:首頁文章首頁 IT學(xué)院 IT技術(shù)

nagle算法在網(wǎng)絡(luò)編程的作用

作者:  來源:  發(fā)布時間:2011-5-19 11:45:40  點擊:

TCP/IP協(xié)議中,無論發(fā)送多少數(shù)據(jù),總是要在數(shù)據(jù)前面加上協(xié)議頭,同時,對方接收到數(shù)據(jù),也需要發(fā)送ACK表示確認。為了盡可能的利用網(wǎng)絡(luò)帶寬,TCP總是希望盡可能的發(fā)送足夠大的數(shù)據(jù)。(一個連接會設(shè)置MSS參數(shù),因此,TCP/IP希望每次都能夠以MSS尺寸的數(shù)據(jù)塊來發(fā)送數(shù)據(jù))。

Nagle算法就是為了盡可能發(fā)送大塊數(shù)據(jù),避免網(wǎng)絡(luò)中充斥著許多小數(shù)據(jù)塊。

Nagle算法的基本定義是任意時刻,最多只能有一個未被確認的小段。 所謂“小段”,指的是小于MSS尺寸的數(shù)據(jù)塊,所謂“未被確認”,是指一個數(shù)據(jù)塊發(fā)送出去后,沒有收到對方發(fā)送的ACK確認該數(shù)據(jù)已收到。

舉個例子,比如之前的blog中的實驗,一開始client端調(diào)用socket的write操作將一個int型數(shù)據(jù)(稱為A塊)寫入到網(wǎng)絡(luò)中,由于此時連接是空閑的(也就是說還沒有未被確認的小段),因此這個int型數(shù)據(jù)會被馬上發(fā)送到server端,接著,client端又調(diào)用write操作寫入‘\r\n’(簡稱B塊),這個時候,A塊的ACK沒有返回,所以可以認為已經(jīng)存在了一個未被確認的小段,所以B塊沒有立即被發(fā)送,一直等待A塊的ACK收到(大概40ms之后),B塊才被發(fā)送。整個過程如圖所示:

這里還隱藏了一個問題,就是A塊數(shù)據(jù)的ACK為什么40ms之后才收到?這是因為TCP/IP中不僅僅有nagle算法,還有一個ACK延遲機制 。當(dāng)Server端收到數(shù)據(jù)之后,它并不會馬上向client端發(fā)送ACK,而是會將ACK的發(fā)送延遲一段時間(假設(shè)為t),它希望在t時間內(nèi)server端會向client端發(fā)送應(yīng)答數(shù)據(jù),這樣ACK就能夠和應(yīng)答數(shù)據(jù)一起發(fā)送,就像是應(yīng)答數(shù)據(jù)捎帶著ACK過去。在我之前的時間中,t大概就是40ms。這就解釋了為什么'\r\n'(B塊)總是在A塊之后40ms才發(fā)出。

如果你覺著nagle算法太搗亂了,那么可以通過設(shè)置TCP_NODELAY將其禁用 。當(dāng)然,更合理的方案還是應(yīng)該使用一次大數(shù)據(jù)的寫操作,而不是多次小數(shù)據(jù)的寫操作。

文章評論

軟件按字母排列: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
主站蜘蛛池模板: 美女网站免费久久久久久久 | 成人精品视频在线观看 | 九九精品视频在线播放 | 99热精品免费 | a级国产视频 | 国产精品日韩欧美亚洲另类 | 亚洲欧美日韩激情在线观看 | 成人黄色小电影 | 青草青草视频2免费观看 | 天天爱天天做久久天天狠狼 | 五月婷婷丁香在线观看 | 精品国产一区二区三区久久久狼 | 国产精品成人一区二区 | 乱人伦中文视频在线观看免费 | 岛国搬运工一区二区免费 | 狠狠综合久久久综合 | 成人在线精品视频 | 国产精品久久婷婷六月丁香 | 国产成人aa免费视频 | www.性| 久久青草免费视频 | 理论片一级 | 丁香六月婷婷在线 | 黄视频在线免费看 | 国产精品毛片在线大全 | 国产一区二区在线视频 | 无码精品一区二区三区免费视频 | www.亚洲视频.com | 青草青草伊人精品视频 | 国产经典大片爱情片 | 欧美日韩一区在线观看 | 午夜国产福利在线观看 | 国产一级毛片电影 | 嫂子的职业电影在线观看 | 开心色xxxx| 99热4| 国产一区二区三区在线免费观看 | 丁香五香天堂网卡 | 国产亚洲第一精品社区麻豆 | 国产综合成人久久大片91 | 日韩欧美一级大片 |