![]() |
1
1
考虑以下极其简化的场景: 服务器通过读取大文件等方式生成大量数据。它通过输出流将数据写入发送缓冲区。网络堆栈从发送缓冲区读取数据并将数据包发送到客户端。这里输入的数据被放入一个接收缓冲区。 最终接收缓冲区已满,客户端停止接受来自服务器的数据包。这会导致发送缓冲区填满。此时服务器暂停,因为它无法再将数据放入发送缓冲区。
客户使用
这样,客户机可以读取任意数量的数据,并且系统永远不需要比发送和接收缓冲区更多的空间。 当然,这是非常简单的。有更多的层,更多的缓冲区。但我希望这能解释基本原则。 |