如果我有一个 TCP 连接以 200 KB/秒的速度传输数据,但我每秒只read()
/recv()
从套接字一次,那么这 200 KB 的数据同时存储在哪里?
据我所知,在将 ack 发送给发送方后,数据会离开 TCP 套接字的读取缓冲区,而且无论如何它都太小而无法容纳 200KB 的数据,同时它在哪里等待直到它可以read()
/recv()
由我的客户端?
谢谢!!
以下答案声称数据在被确认后立即离开 TCP 读取缓冲区,然后再被 read()/recv()d:
https://stackoverflow.com/a/12934115/2378033
“接收器的套接字接收缓冲区的大小决定了在没有确认的情况下可以传输多少数据”
难道是我的假设是错误的,数据只有在用户空间程序读取()/recv()d后才被确认?