试图了解 Python 套接字模块中的缓冲

Trying to understand buffering in Python socket module

我正在尝试了解套接字模块的工作原理,但我有一个愚蠢的问题:

socket.send()发送的数据在被socket.recv()清除之前存储在哪里?。

我相信中间某处一定有一个缓冲区等待 socket.recv() 调用以提取此数据。

我刚刚用一个一次发送大量数据的服务器进行了测试,然后连接到一个(有意)非常缓慢地提取数据的客户端。最终结果是数据在几分之一秒内发送,而另一方面,数据以 10 字节的小块.recv(10) 的形式全部接收,耗时 20 秒。

同时这些数据存储在哪里??,这个缓冲区的默认大小是多少?,如何访问和修改?

谢谢。

了解 OSI 层和不同的连接,例如 TCP 和 UDP。 socket.send实现了一个TCP传输数据。如果查看 OSI 层,您会发现第 4 层(即传输层)将缓冲要传输的数据。缓冲区的默认大小取决于实现。

OS(内核)缓冲数据。

在 Linux 上,可以通过 /proc 接口访问缓冲区大小参数。有关更多详细信息,请参阅 man 7 socket(接近尾声。)