標題: 糊涂窗口綜合癥及其解決方法 [打印本頁]
作者: 51黑tt 時間: 2016-3-5 18:44
標題: 糊涂窗口綜合癥及其解決方法
7-13:能否更詳細些討論一下糊涂窗口綜合癥及其解決方法? 答:發送端產生的癥狀
如果發送端為產生數據很慢的應用程序服務,例如,一次產生一個字節。這個應用程序一次將一個字節的數據寫入發送端的TCP的緩存。如果發送端的TCP沒有特定的指令,它就產生只包括一個字節數據的報文段。結果有很多41字節的IP數據報就在互連網中傳來傳去。
解決的方法是防止發送端的TCP逐個字節地發送數據。必須強迫發送端的TCP收集數據,然后用一個更大的數據塊來發送。發送端的TCP要等待多長時間呢?如果它等待過長,它就會使整個的過程產生較長的時延。如果它的等待時間不夠長,它就可能發送較小的報文段。Nagle找到了一個很好的解決方法。
?Nagle算法
Nagle算法非常簡單,但它能解決問題。這個算法是為發送端的TCP用的:
1. 發送端的TCP將它從發送應用程序收到的第一塊數據發送出去,哪怕只有一個字節。
2. 在發送第一個報文段(即報文段1)以后,發送端的TCP就在輸出緩存中積累數據,并等待:或者接收端的TCP發送出一個確認,或者數據已積累到可以裝成一個最大的報文段。在這個時候,發送端的TCP就可以發送這個報文段。
3. 對剩下的傳輸,重復步驟2。這就是:如果收到了對報文段x的確認,或者數據已積累到可以裝成一個最大的報文段,那么就發送下一個報文段(x + 1)。
Nagle算法的優點就是簡單,并且它考慮到應用程序產生數據的速率,以及網絡運輸數據的速率。若應用程序比網絡更快,則報文段就更大(最大報文段)。若應用程序比網絡慢,則報文段就較小(小于最大報文段)。
接收端產生的癥狀
接收端的TCP可能產生糊涂窗口綜合癥,如果它為消耗數據很慢的應用程序服務,例如,一次消耗一個字節。假定發送應用程序產生了1000字節的數據塊,但接收應用程序每次只吸收1字節的數據。再假定接收端的TCP的輸入緩存為4000字節。發送端先發送第一個4000字節的數據。接收端將它存儲在其緩存中。現在緩存滿了。它通知窗口大小為零,這表示發送端必須停止發送數據。接收應用程序從接收端的TCP的輸入緩存中讀取第一個字節的數據。在入緩存中現在有了1字節的空間。接收端的TCP宣布其窗口大小為1字節,這表示正渴望等待發送數據的發送端的TCP會把這個宣布當作一個好消息,并發送只包括一個字節數據的報文段。這樣的過程一直繼續下去。一個字節的數據被消耗掉,然后發送只包含一個字節數據的報文段。這又是一個效率問題和糊涂窗口綜合癥(見下圖)。
對于這種糊涂窗口綜合癥,即應用程序消耗數據比到達的慢,有兩種建議的解決方法。
?Clark解決方法 Clark解決方法是只要有數據到達就發送確認,但宣布的窗口大小為零,直到或者緩存空間已能放入具有最大長度的報文段,或者緩存空間的一半已經空了。
?延遲的確認 第二個解決方法是延遲一段時間后再發送確認。這表示當一個報文段到達時并不立即發送確認。接收端在確認收到的報文段之前一直等待,直到入緩存有足夠的空間為止。延遲的確認防止了發送端的TCP滑動其窗口。當發送端的TCP發送完其數據后,它就停下來了。這樣就防止了這種癥狀。
遲延的確認還有另一個優點:它減少了通信量。接收端不需要確認每一個報文段。但它也有一個缺點,就是遲延的確認有可能迫使發送端重傳其未被確認的報文段。
可以用協議來平衡這個優點和缺點,例如現在定義了確認的延遲不能超過500毫秒
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
欧美精品一区三区
|
精品亚洲一区二区三区
|
欧美日韩免费一区二区三区
|
日本在线视频中文字幕
|
国产一区二区精品自拍
|
老牛嫩草一区二区三区av
|
日韩精品一区二区在线观看
|
亚洲精品中文字幕在线观看
|
亚洲一区欧美
|
日韩欧美精品在线
|
国产精品一区二区久久
|
69视频在线播放
|
www.久|
超碰8|
久久区二区
|
99免费|
在线中文字幕第一页
|
日本精品一区二区三区在线观看视频
|
成人免费网站视频
|
免费在线观看一区二区三区
|
精品国产乱码久久久久久闺蜜
|
福利在线看
|
久久精品国产精品青草
|
成人小视频在线观看
|
亚洲草草视频
|
精品一区二区三区在线观看国产
|
亚洲欧美一区二区三区在线
|
神马久久久久久久久久
|
日韩精品视频中文字幕
|
欧美成人a∨高清免费观看
欧美日韩中
|
国产中文字幕网
|
日韩欧美一区二区三区
|
伊人亚洲|
亚洲人成免费
|
欧美日韩手机在线观看
|
午夜亚洲|
av片免费|
欧美一区免费
|
人人澡视频
|
美女久久视频
|
精品一区av
|