Linux 内核是否为每个 TCP 连接创建一个缓冲区,例如,当我们有 1000 个 tcp 连接时,内核会创建 1000 个套接字缓冲区并将各个流的数据包存储在其套接字缓冲区中?或者所有 TCP 流共享一个大型 TCP 套接字缓冲区。这意味着所有数据包都存储在共享的 TCP 套接字缓冲区中。
谢谢 Amer
答案1
收到的数据包会存储在缓冲区中,直到可以处理为止,处理完成后会将其丢弃。发送的数据包会存储在缓冲区中,直到可以发送为止,发送完成后会将其丢弃。
对于每个 TCP 连接,都有一些状态信息保存有关 TCP 连接的基本信息。此外,还有一个缓冲区,用于保存尚未被对方确认的出站应用程序级数据,以及一个缓冲区,用于保存已接收但尚未被本地应用程序读取的数据。但这些缓冲区保存的是应用程序级数据字节,而不是数据包。