我正在通过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());
我的方法是否正确?感谢。