SO_RECVBUF

无论是TCP还是UDP,每一个套接口都有发送缓冲区与接收缓冲区。
接收缓冲区保存接收到的数据,直到应用程序来读。

对于TCP:接收缓冲区可用空间的大小限制了TCP通知对端的窗口大小,这就是TCP的流量控制,也就是说TCP不允许对端发送超过窗口大小的数据,如果超过了窗口大小,TCP将会丢弃他们。

对于UDP:当接收缓冲区的大小不够时,新来的数据将会被丢弃。UDP没有流量控制。

SO_RECVBUF选项允许修改接收缓冲区的缺省大小(默认大小)。

当设置接收缓冲区大小时应该注意,对于TCP,窗口大小是在建立连接时发送的,那么对于客户端,需要在调用connect之前进行窗口设置,对于服务器,要在调用listen之前设置。

TCP套接口缓冲区大小至少应该是MSS的四倍,这是由快重传算法决定的。
unix网络编程卷一:第七章——套接口选项

相关文章: