1.利用checksum,可以检测发送方到接收方的数据是否出现翻转异常。如果没有异常则回复ACK,如果异常则回复NAK。回复NAK,则发送方重新发送上一条packet。
2.如果ACK和NAK在传输中出现错误怎么办?发送方会直接重新发送上一条packet,如果刚回复的是ACK,那么接收方会把这个packet丢弃,再回复一个ACK给发送方。因为在packet有序号,可以检测到数据是否重复。
3.去掉NAK。对ACK进行编号,及ACK0、ACK1.....如果发送方发出去packet1,而接收到的ACK是ACK0,则代表上一条发送出错。这样就可以去掉NAK,也就是ACK0代表的是NAK1。如果第一个packet0,然后出错的。只要回复一个不是ACK0,就可以了。
4.超时重传机制。当发送出去一个packet1,发送方等待一个ack1,当一定的时间内还没收到ACK1,则重新发送一次packet1。