TCP连接会丢包吗?

mit*_*tnk 3 sockets tcp

假设服务器 S 与客户端 C 建立了成功的 TCP 连接。

C 不断向 S 发送 256 字节长的数据包。

是否有可能其中一个数据包只收到一部分,但连接没有断开(可以继续正确接收新数据包)?

我认为TCP协议本身会保证连接时不会丢失任何字节。但好像不是?

PS 我正在使用Python 的socketserver库。

NPE*_*NPE 5

TCP 协议确实保证传送。因此(假设您的代码和 TCP 堆栈中没有错误),您描述的场景是不可能的。

请记住,TCP 是面向流的,而不是面向数据包的。这意味着您可能需要recv()多次调用才能读取整个 256 字节数据包。