这可能是关于用于错误检测的校验和的一般性问题。 我得到了一个实验室任务,我们将重新创建一个类似于RDT2.0工作方式的协议。我陷入了如何使用校验和来检测错误的问题。
我需要的功能就是实现功能。 我不明白的是你怎么知道一个包被破坏了。
E.g。 我要发一个文本文件。所以我有一些函数需要一些字节并将其存储在一个对象中,我还将附加一个带校验和的标题。
所以,如果这个软件包现在已经损坏了,那么由于校验和也会被改变,所以我无处可告知它已经发生了吗?
那么有人能告诉我应该如何使用校验和吗?
答案 0 :(得分:2)
校验和可能已被更改,但更改为与更改内容的校验和相匹配的可能性很小。
因此,当您阅读包时,您将为内容计算新的校验和,并将其与存储在包中的校验和进行比较。如果它们匹配,则没有损坏,如果没有,则更改某些内容(内容,校验和或两者)。
答案 1 :(得分:0)
你是对的,如果你的数据被破坏了,你的校验和可能也是如此 - 希望它们不会以一种你不明显的方式被破坏。对于这种透明损坏,简单的奇偶校验位是最差的 - 校验和字段越大,数据损坏的可能性就越小,您就不会注意到。
答案 2 :(得分:0)
我认为遗漏的一点是在发送数据之前计算校验和,然后在收到数据后重新计算。如果收到的数据的校验和与附加的标题中收到的校验和相匹配,那么您可以相当确信它们在途中都没有损坏。
答案 3 :(得分:0)
传输校验和的2的补码而不是校验和本身。接收器将累积所有字节,包括校验和的2的补码。如果没有错误,累加器的内容在累加校验和字节的2的补码后应该为零。