TCP连接的可靠性如何?

时间:2013-11-21 08:57:23

标签: c# java sockets networking tcp

我一直在编写服务器客户端应用程序.Server用c#编码,客户端代码用java编写。通信协议是TCP。

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

2 个答案:

答案 0 :(得分:3)

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

有一篇经典文章谈到这一点:“end to end arguments in system design”。

答案 1 :(得分:3)

tcp传输包的顺序可靠。

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

您的客户端收到A,包B丢失,然后客户端收到C.在流中,您将只获得包A,包C被存储,并且一旦包B被您的客户端重新传输和接收,您在流中将获得包B,然后是C.

如果通过另一种方式路由包B并且因此在包C之后收到包,那么也是如此。

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