[英]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.