• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            大龍的博客

            常用鏈接

            統(tǒng)計

            最新評論

            linux 如何改變TCP WINDOW SIZE? ------- 轉(zhuǎn)

            在收到一個TCP SYN包請求的時候,我發(fā)現(xiàn)回應(yīng)的SYN+ACK包的窗口大小固定在5792左右
            非常想改變一下,比如把5792改成8192之類
            可是實驗了幾種方法都沒有成功
            比如:
            擴大或縮小了rmem_default、wmem_default、rmem_max、wmem_max,但沒有什么效果
            是不是需要修改協(xié)議棧?需要的話怎樣修改?
            這個問題困擾我很久了,希望得到大家的指點,謝謝!

            我的機器是linux 2.6.21

            [[i] 本帖最后由 ssd6166 于 2008-4-23 17:17 編輯 [/i]]
            jerrywjl
            這應(yīng)該是固定在內(nèi)核里的參數(shù),無法改變。

            platinum
            [quote]原帖由 [i]ssd6166[/i] 于 2008-4-21 18:04 發(fā)表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6562912&ptid=994152][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
            在收到一個TCP SYN包請求的時候,我發(fā)現(xiàn)回應(yīng)的SYN+ACK包的窗口大小固定在5792左右
            非常想改變一下,比如把5792改成8192之類
            可是實驗了幾種方法都沒有成功
            比如:
            擴大或縮小了rmem_default、wmem_default、 ... [/quote]
            回應(yīng)的 ACK 中的 window 是根據(jù)回應(yīng)端的 TCP 棧自己計算出來的,他負(fù)責(zé)控制 TCP 的慢啟動效果
            若要改變,除非修改對方 TCP 協(xié)議棧,或?qū)λl(fā)過來的包做手腳
            但是你修改他的目的是什么呢?

            ssd6166
            回復(fù) #3 platinum 的帖子

            首先感謝您和jerrtwjl的回應(yīng)

            您這里說的除非“修改對方的TCP協(xié)議棧”是指發(fā)送方還是回應(yīng)方?我要在回應(yīng)方上進行修改。

            我是發(fā)現(xiàn)windowsXP發(fā)送的窗口大小和linux不一樣,所以想知道為什么
            并且想嘗試更改下linux的發(fā)送窗口大小
            我覺得發(fā)送窗口大小應(yīng)該和緩沖區(qū)的大小有關(guān),所以我嘗試著擴大了緩沖區(qū),但是不行
            我又覺得這應(yīng)該和一個初始值有關(guān),可是又沒找到這個初始值……
            如果找到了這個初值是不是就能修改了?可這個初始值在哪定義的呢?

            可能我對慢啟動的原理還是不太清楚吧……

            希望得到大家指點,謝謝!

            platinum
            窗口在 TCP 棧里面是用來控制速率的,窗口大小和延時結(jié)合起來就是速率
            Linux 和 Windows 的 TCP 棧的確是不一樣的,比如結(jié)束一個 TCP 的時候,Windows 是發(fā)送 RST,而 Linux 則是雙向 FIN
            在網(wǎng)絡(luò)質(zhì)量發(fā)生變化時,TCP 的 window 會自動調(diào)整,這個動作叫窗口滑動,而這個窗口的全名叫滑動窗口
            具體 TCP 的實現(xiàn)很復(fù)雜,需要看 TCP/IP 詳解卷一,大概是從 17 章的位置往后看,先把原理看懂,卷二再看實現(xiàn)

            ssd6166
            我找到在哪里改動了!

            首先說下5972這個數(shù)字是怎么出來的,在此轉(zhuǎn)貼一段文章以作解釋:

            ---------------------
                tcp_sock->rcv_wnd表示當(dāng)前接收窗口的大小,這個值在收到對方的數(shù)據(jù)后,會變動的。它的初始值取接收緩存大小的3/4跟MAX_TCP_WINDOW之間的最小值,MAX_TCP_WINDOW在系統(tǒng)中的定義為32767U。然后,還要根據(jù)mss的值作一個調(diào)整,調(diào)整邏輯是:如果mss大于 3*1460,則如果當(dāng)前的rcv_wnd大于兩倍的mss,就取兩倍的mss作為rcv_wnd的值;如果mss大于1460,則如果當(dāng)前的rcv_wnd大于3倍的mss,就取3倍的mss作為rcv_wnd的新值;否則,如果rcv_wnd大于4倍的mss,就取4倍的mss作為rcv_wnd的新值,我們的實驗環(huán)境的mss值為1448(因為tcp首部有12字節(jié)的時間戳選項),所以rcv_wnd最后被調(diào)整為1448*4 = 5792。
            ---------------------

            按照上述說明,找到具體修改的地方是tcp_select_initial_window()函數(shù)

            由于SYN+ACK的包只是回應(yīng)SYN的,所以還沒有到滑動的時候,這時初值就是窗口值了
            ^^

            platinum
            感覺他說的可能還是有問題的,我的環(huán)境 MSS 是 1440,但是 SYN/ACK 中的 WND 卻是 5808
            SYN/ACK 中的 MSS 是 1412,回去的 WND 卻是 372768

            posted on 2009-03-17 19:51 大龍 閱讀(9111) 評論(0)  編輯 收藏 引用


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            国产精品久久网| 人人狠狠综合久久88成人| 免费精品久久久久久中文字幕| 久久99精品久久久久久9蜜桃| 国产精品久久久久久五月尺| 久久噜噜电影你懂的| 香蕉久久夜色精品国产尤物| 久久99热精品| 性做久久久久久久| 久久精品国产WWW456C0M| 色诱久久久久综合网ywww| 久久人人爽人人爽人人片AV东京热 | 日韩精品久久久久久免费| 国产精品久久久天天影视香蕉| 欧美日韩精品久久久久| 国内精品久久久久久久亚洲| 久久99精品久久久久婷婷| 免费一级欧美大片久久网| 国产精品综合久久第一页| 亚洲另类欧美综合久久图片区| 久久精品国产亚洲精品2020| 久久久久波多野结衣高潮| 亚洲精品成人网久久久久久| 久久99热这里只有精品国产| 91精品国产91久久| 久久精品人人做人人爽97| 伊人久久大香线蕉成人| 久久综合色之久久综合| 国产精自产拍久久久久久蜜| 国内精品久久久久久久亚洲| 青青草原1769久久免费播放| 亚洲成色WWW久久网站| 一本色综合久久| 久久久久久久女国产乱让韩| 狠狠色婷婷久久综合频道日韩| 伊人久久大香线蕉成人| 99久久无色码中文字幕人妻| 亚洲日韩中文无码久久| 浪潮AV色综合久久天堂| 99久久婷婷国产综合亚洲| 久久狠狠高潮亚洲精品|