1

我想通过简单地将它们连接在一起来通过网络发送几块数据,并且我希望能够使用校验和来验证一切是否正常(这主要是为了对错误进行防御性检查,而不是因为我已经看到或期望实际的低级数据损坏)。所以我正在寻找一种校验和算法,它可以让我从各个部分的校验和中计算出整体的校验和。

我认为可行的技术的一个简单示例是将每个块的每个字节视为一个整数,并将所有这些整数加在一起(当然,这不会检测到丢失的零字节)。另一种方法是只计算每个块的长度(当然,不会检测到不会导致净插入或删除的数据更改)。我相信,另一个是将所有字节异或在一起,但这只能生成 1 个字节的校验和(我可以一次取 4 个字节,并对每个单元进行异或,但如果块长度不是' t 是四的倍数,我不得不陷入混乱,我认为这可能会消除简单地将不同块连接在一起的能力)。

所以,我正在寻找一种更严格的校验和或散列算法,它仍然可以让我在给定每个块的校验和的情况下轻松计算几个连接块的校验和。有吗?

4

1 回答 1

0

通过 TCP 正确传输消息需要协议。该协议必须定义消息的开始、结束或最好两者兼而有之。这意味着您将始终知道消息的长度。如果您的协议将 lenth 放在消息的开头并将整数校验和放在消息的末尾,则将检测到丢失的零字节,因为传输的校验和将从流中的错误字节中恢复,因此平均会出错,65535 65536 次。

于 2012-04-23T00:41:56.063 回答