繁体   English   中英

TCP连接的可靠性如何?

[英]How reliable is a TCP connection?

我已经编写了服务器-客户端应用程序。服务器使用c#编码,客户端代码使用java编写。通信协议为TCP。

使用tcp传输文件时,可能会发送丢失的数据。 换句话说,tcp可以确保数据正确到达。(我应该发送该文件的标头信息以检查错误,例如文件大小,哈希等)

TCP在协议中提供16位校验和。 它可以检测到大多数错误。 错误的可能性更大,而不是tcp / ip。 如果您的软件需要高可靠性,则可以考虑采用端到端策略。

有一篇经典文章讨论了这一问题:“ 系统设计中的端到端参数 ”。

tcp传输的软件包的排序是可靠的。

例如,您的tcp消息分为三个包A,B和C。

您的客户端收到A,包B丢失,然后客户端收到C。在流中,您将仅获得包A,存储了包C,一旦客户端重新传输并接收了包B,您将在流中获得包B然后C。

如果通过另一种方式路由程序包B并因此在程序包C之后收到程序包B,则执行相同的操作。

此机制需要tcp标头中的字段“序列号”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM