【发布时间】:2011-11-25 13:15:33
【问题描述】:
我有问题要问。
我想知道,在使用 TcpClient 发送数据时,是否有任何类型的 CRC 检查自动工作的算法?或者如果数据没有正确到达远程主机,我必须实现自己的算法并重新发送数据?
有什么想法吗?
我最好的问候...
【问题讨论】:
-
感谢大家的快速回复。
标签: c# networking tcpclient crc
我有问题要问。
我想知道,在使用 TcpClient 发送数据时,是否有任何类型的 CRC 检查自动工作的算法?或者如果数据没有正确到达远程主机,我必须实现自己的算法并重新发送数据?
有什么想法吗?
我最好的问候...
【问题讨论】:
标签: c# networking tcpclient crc
TCP 校验和相当弱,但对于可靠的流协议而言,足够好了。通常,在数据链路层执行更强大的校验和 - 即以太网 (IIRC) 使用 CRC-32。
如果您真的想自己动手,here 是理论和实现的详细指南。
【讨论】:
那里有is a checksum in TCP。但是,正如同一篇文章所说,
按照现代标准,TCP 校验和是一个弱校验。具有高误码率的数据链路层可能需要额外的链路纠错/检测能力。弱校验和通过在 TCP 和 IP 之下的第 2 层的通用使用 CRC 或更好的完整性检查得到部分补偿,例如在 PPP 或以太网帧中使用。
因此,如果您对此有疑虑,那么添加另一个检查可能不会有什么坏处。
【讨论】:
TCP 包含校验和,TCP/IP 堆栈将检测损坏的数据包。因此,除非您愿意,否则您无需自行实现任何错误检测算法。
【讨论】:
使用 TCP 的全部意义在于协议中内置了错误检查。所以你不必担心这种事情。
【讨论】: