这是我对TCP / IP中传入数据流的理解
我对滑动窗口位于何处或与套接字缓冲区相同感到困惑
答案 0 :(得分:1)
Linux不会将TCP的滑动窗口作为单独的缓冲区处理,而是作为几个索引来指示已经接收/读取了多少。 Linux内核数据包处理过程可以用多种方式来描述,并且随着您的深入,它可以分为小部分,但是一般流程如下:
struct tcp_sock
成员u32 rcv_wnd
,该成员随后在tp->rcvq_space.space
中用作窗口中剩余的每个连接空间。tcp_recvmsg()
中作为流数据读取在这里要记住的重要一点是,复制是性能方面最糟糕的事情。因此,内核将始终(除非绝对必要)将避免复制并改用指针。