在三次握手后如何设置SO_RCVBUF(使用setsockopt)影响TCP窗口大小?

时间:2013-07-26 05:00:47

标签: sockets unix tcp

我接受带有默认值的TCP连接,我观察到SYN,ACK的发送窗口大小为64K,窗口比例因子为7.

完成3路握手并为我的应用程序交换一些控制数据包后,我使用setsockopt()将SO_RCVBUF设置为20K。我的问题是,在这种情况下广告窗口会更新吗? 由于sb_hiwat已被修改为较小的值,我不应该立即看到窗口更新数据包吗?我所看到的是广告窗口逐渐减少,大约需要4秒才能达到~7MB到20K。

1 个答案:

答案 0 :(得分:0)

我不知道为什么你会想要减少接收缓冲区。

您可能甚至无法在传输开始后,但无论如何,如果接收缓冲区中有数据,您当然不能指望它立即设置为小于此值。否则,必须丢弃数据,TCP不允许这样做。

我建议你不要管它。