我正在通过 UDP 实现可靠的数据传输协议。数据包可能已损坏,因此我必须使用校验和来确定哪个数据包已损坏。由于我的 RDT 协议是一个停止等待协议,我发送一个数据包并等待响应。
我正在使用 CRC32 来计算校验和。
Checksum checksum = new CRC32();
checksum.update(packet.getData(),0,packet.getLength());
long value = checksum.getValue();
问题是,如何使用发送端的校验和值与接收端的数据包校验和值进行比较?我是否将发送方的校验和附加到数据包中,并让接收方通过在校验和值开始之前读取接收到的数据包来更新自己的校验和?
例如,在接收方:
receiverChecksum.update(packet.getData(),0,packet.getLength - checksumLength());
我的方法正确吗?谢谢。