实现可靠数据传输不仅涉及到传输层,还涉及到应用层和链路层。以TCP协议为例,TCP协议提供可靠数据传输,然而网络层不提供可靠数据传输,而是尽最大努力交付,因而,如何在不可靠传输的下层上边实现可靠数据传输的上层是一个复杂的问题。

图1 可靠数据传输:服务模型和服务实现
首先考虑最简单的情况:可靠的传输频道是完美的,不会出现任何bit错误或者顺序错误。在这种情况下,用有限状态机(FSM)来表示可靠的协议如图2.

图2 传输完全可靠情况下的协议
如图2所示:
发送端上层(应用层)调用rdt_send(data)方法,该方法包含两个步骤
1) 将数据(data)封装成分组(packet)
2)