首先对数据传输过程中的可靠性进行定义,即不错、不丢、不乱。即考虑传输信道对数据包可能带来的影响——位错误、丢包。
注意:在通信协议的分析中,状态机和传输示意图的两种方法需要掌握,能方便、直观地分析数据包在发送方与接收方的流动。
1、底层信号可能只可能发生位错误
- 位错误检测——利用校验和
- 位错误恢复——确认机制(Acknowledgements,ACK)+重传机制。
确认机制即接收方显式地告知发送方分组已正确接受(ACK)或者分组有错误(NCK);重传机制即发送方在收到NCK后,重新发送数据包。
基于该机制的协议称为停等协议。
2、底层信号可能只可能发生位错误,ACK/NCK也有可能被破坏
如果ACK/NCK被破坏,则发送方直接重传,但是不能简单的重传。因为有可能接收方正确接受数据后,发送的ACK被破坏,此时发送方再重传就会造成数据包的重复。因此需要引入***解决重复分组问题。***,即发送方给每个分组增加***,接收方按照协议对数据包***进行判断,丢弃重复分组。
确认消息种类越多(ACK+NCK),传输出错概率也就越大,所以可以只用ACK一种确认消息。即接收方通过ACK告知最后一个被正确接收的分组,并且在ACK消息中显式地加入被确认分组的***。
3、底层信号既可能发生错误,也可能丢失分组
引入定时器机制,即发送方等待“合理”时间,如果没收到ACK,重传;如果分组或者ACK只是延迟而不是丢包,可以利用***机制处理重复问题。