校验和如何用于错误检测

时间:2010-09-09 18:19:17

标签: checksum

这可能是关于用于错误检测的校验和的一般性问题。 我得到了一个实验室任务,我们将重新创建一个类似于RDT2.0工作方式的协议。我陷入了如何使用校验和来检测错误的问题。

我需要的功能就是实现功能。 我不明白的是你怎么知道一个包被破坏了。

E.g。 我要发一个文本文件。所以我有一些函数需要一些字节并将其存储在一个对象中,我还将附加一个带校验和的标题。

所以,如果这个软件包现在已经损坏了,那么由于校验和也会被改变,所以我无处可告知它已经发生了吗?

那么有人能告诉我应该如何使用校验和吗?

4 个答案:

答案 0 :(得分:2)

校验和可能已被更改,但更改为与更改内容的校验和相匹配的可能性很小。

因此,当您阅读包时,您将为内容计算新的校验和,并将其与存储在包中的校验和进行比较。如果它们匹配,则没有损坏,如果没有,则更改某些内容(内容,校验和或两者)。

答案 1 :(得分:0)

你是对的,如果你的数据被破坏了,你的校验和可能也是如此 - 希望它们不会以一种你不明显的方式被破坏。对于这种透明损坏,简单的奇偶校验位是最差的 - 校验和字段越大,数据损坏的可能性就越小,您就不会注意到。

答案 2 :(得分:0)

我认为遗漏的一点是在发送数据之前计算校验和,然后在收到数据后重新计算。如果收到的数据的校验和与附加的标题中收到的校验和相匹配,那么您可以相当确信它们在途中都没有损坏。

答案 3 :(得分:0)

传输校验和的2的补码而不是校验和本身。接收器将累积所有字节,包括校验和的2的补码。如果没有错误,累加器的内容在累加校验和字节的2的补码后应该为零。