如何设计一个可靠传输协议?

1.0——设计一个理想化的可靠传输协议

topdown理解计算机网络这本书从1.0升级到3.0带我们走进可靠协议的设计思路,不可靠的本质是loss&&bit error,假定没有这种bad case,作者带领我们设计一种完美可靠传输协议,版本1.0。

发送端【rdt_send】可靠传输提供给应用层的发送数据接口,经过可靠传输协议处理之后,交给【udt_send】不可靠传输提供给传输层的发送数据接口发送到网络里。接收端通过【rdt_rcv】处理不可靠传输的包,经过可靠传输协议处理之后,再通过【deliver_data】交给应用层。为了进一步加深理解,作者给出此方案的状态机转换图:

2.0方案有一个致命缺点,如果ACK或者NAK出现bit错误怎么办,而且因为这个出错还会带来其他问题,例如ACK或者NAk数据包出错,发送端就无法确认接收端到底有没有收到上次发送的数据包。如果接收端已经收到上次的数据包,但是发送端因为ACK数据包出错会重新发送一次,接收端就需要处理重复发送的问题。

2.1方案如何发送端检测ACK或者NAK出现bit错误问题?引入校验和帮助检测是否出错,引入纠错码帮助发送端尽可能恢复ACK后者NAK消息。

2.1方案如何解决接收端收到重复数据包问题?发送端再数据包里面带上sequence number,接收端只需要检查sequence number即可判断包是否重复。

2.1方案里面接收端会发送NAK或者ACK,NAK其实可以合并到ACK,2.2方案引入ACK序号,即发送端判断ACK的序号来判断接收端已经收到的数据包。

总结起来:可靠传输的关键因素:校验和、sequence number、timer、ack,每一个都承担不同的功能。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容