变态重口极致另类在线-波多久久夜色精品国产-波多野结衣在线观看一区-波多野结衣在线观看一区二区-污污的网站免费阅读-污污视频网址

當前位置:首頁文章首頁 IT學院 IT技術

nagle算法在網絡編程的作用

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

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

Nagle算法就是為了盡可能發送大塊數據,避免網絡中充斥著許多小數據塊。

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

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

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

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

文章評論

軟件按字母排列: 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
主站蜘蛛池模板: 人人爱人人搞 | 色综合久久久高清综合久久久 | 欧美亚洲风情 | 狠狠综合久久久久综合 | 手机毛片免费看 | 午夜伦理网 | 亚洲美女爱做色禁图无遮 | 日韩一区国产一级 | 一级aaa毛片| 亚洲激情小视频 | 黄色免费的视频 | 一个人www免费看的视频 | 国产黄色的视频 | 亚洲综合久久伊人热 | 国产成人综合精品一区 | 日本又色又爽又黄的大片 | 成年免费大片黄在线观看com | 欧美性最xxx | 亚州毛色毛片免费观看 | 国产草 | 免费毛片网站在线观看 | 青青草国产免费 | 天天操视频 夜夜 | 欧美成人精品第一区 | 日韩免费观看的一级毛片 | 91短视频版在线观看www免费 | 久久午夜夜伦鲁鲁影院 | 先锋三级 | 狠狠狠干 | 看全色黄大色黄大片免责看 | 欧美成人精品第一区 | 国产精品久久久久久久 | 日韩在线视频播放 | 最近最新高清免费中文字幕 | 男女黄色毛片 | 国产在线高清不卡免费播放 | 日本三级韩国三级三级a级按摩 | 99热色| 视频日韩p影院永久免费 | 亚洲欧洲日产国码二区首页 | 国产满18av精品免费观看视频 |