我接受带有默认值的TCP连接,我观察到SYN,ACK的发送窗口大小为64K,窗口比例因子为7.
完成3路握手并为我的应用程序交换一些控制数据包后,我使用setsockopt()将SO_RCVBUF设置为20K。我的问题是,在这种情况下广告窗口会更新吗? 由于sb_hiwat已被修改为较小的值,我不应该立即看到窗口更新数据包吗?我所看到的是广告窗口逐渐减少,大约需要4秒才能达到~7MB到20K。
答案 0 :(得分:0)
我不知道为什么你会想要减少接收缓冲区。
您可能甚至无法在传输开始后,但无论如何,如果接收缓冲区中有数据,您当然不能指望它立即设置为小于此值。否则,必须丢弃数据,TCP不允许这样做。
我建议你不要管它。