Linux上socket的缓冲是如何工作的

mic*_*ael 5 linux networking

Linux 上的套接字如何进行缓冲?即如果服务器不读取套接字并且客户端不断发送数据。那么会发生什么呢?套接字的缓冲区有多大?客户端会知道并停止发送吗?

Nik*_*sov 5

对于 UDP 套接字,客户端永远不会知道 - 服务器端将在接收缓冲区填满后开始丢弃数据包。

另一方面,TCP 实现流量控制。服务器的内核会逐渐缩小窗口,因此客户端能够发送的数据将越来越少。在某些时候,窗口将降至零。此时,客户端填满了其发送缓冲区并从send(2).