2012-02-03 72 views
1

(Linux 3.0上,x86_64的)Linux 3.0的TCP堆棧接收緩衝區的內核體系結構

如果我不停的叫的recv(2)對連接的TCP套接字一段時間,而其他主機持續發送數據,比想必這些數據是由內核接收和緩衝的,所以下一次我調用recv時,它會很快返回所有等待的數據。

我的問題是這個接收緩衝區有多大,它是如何工作的?我可以使用任何相關的內核或套接字設置來調整其行爲嗎? tcp堆棧填滿時會做什麼?

回答

2

接收緩衝區可以用setsockopt(SO_RCVBUF)進行更改。默認大小由sysctl的tcp_rmem控制。如果緩衝區填滿,堆棧將停止擴展它提供給另一端的接收窗口,強制其他大小停止發送數據,直到緩衝區中有空間。