Linux 3.0 TCP堆栈接收缓冲区内核架构

时间:2012-02-03 23:39:50

标签: linux tcp x86-64

(Linux 3.0,x86_64)

如果我在连接的tcp套接字上停止调用 recv(2)一段时间,而另一台主机继续发送数据,那么可能这些数据是由内核接收和缓冲的,所以下一步时间我打电话给recv它会快速返回所有等待的数据。

我的问题是这个接收缓冲区有多大,它是如何工作的?我可以使用任何相关的内核或套接字设置来调整其行为吗? tcp堆栈在填满时会做什么?

1 个答案:

答案 0 :(得分:2)

可以使用setsockopt(SO_RCVBUF)更改接收缓冲区。默认大小由tcp_rmem sysctl控制。如果缓冲区填满,堆栈将停止将它提供的接收窗口扩展到另一侧,迫使另一个大小停止发送数据,直到缓冲区中有空间。