- 论坛徽章:
- 0
|
我找到在哪里改动了!
首先说下5972这个数字是怎么出来的,在此转贴一段文章以作解释:
---------------------
tcp_sock->rcv_wnd表示当前接收窗口的大小,这个值在收到对方的数据后,会变动的。它的初始值取接收缓存大小的3/4跟MAX_TCP_WINDOW之间的最小值,MAX_TCP_WINDOW在系统中的定义为32767U。然后,还要根据mss的值作一个调整,调整逻辑是:如果mss大于 3*1460,则如果当前的rcv_wnd大于两倍的mss,就取两倍的mss作为rcv_wnd的值;如果mss大于1460,则如果当前的rcv_wnd大于3倍的mss,就取3倍的mss作为rcv_wnd的新值;否则,如果rcv_wnd大于4倍的mss,就取4倍的mss作为rcv_wnd的新值,我们的实验环境的mss值为1448(因为tcp首部有12字节的时间戳选项),所以rcv_wnd最后被调整为1448*4 = 5792。
---------------------
按照上述说明,找到具体修改的地方是tcp_select_initial_window()函数
由于SYN+ACK的包只是回应SYN的,所以还没有到滑动的时候,这时初值就是窗口值了
^^ |
|