可靠数据传输协议原理
传输层协议是分层架构的核心部分,它们提供应用程序进程之间的逻辑通信。这些过程使用逻辑通信将数据从传输层传输到网络层,并且这种数据传输应该是可靠和安全的。数据以数据包的形式传输,但问题出现在数据的可靠传输中。
传输数据的问题不仅发生在传输层,还发生在应用层以及链路层。当一个可靠的服务运行在一个不可靠的服务上时,就会出现这个问题,例如,TCP(传输控制协议)是一种可靠的数据传输协议,它是在一个不可靠的层之上实现的,即互联网协议(IP)是端到端的网络层协议。
在这个模型中,我们通过可靠的通道设计了协议的发送方和接收方。在数据的可靠传输中,该层接收来自上层的数据,以段的形式将消息打断,并将报头放在每个段上并传输。下层接收段并从每个段中删除标头,并通过添加到标头使其成为一个数据包。
从上面传输的数据没有损坏或丢失的传输数据位,并且所有传输都以它们发送到下层的相同顺序传递,这是可靠的数据传输协议。此服务模型由 TCP 提供给调用此数据传输的 Internet 应用程序。
同样,在不可靠的通道中,我们设计了发送端和接收端。协议的发送端从上层调用到 rdt_send() 然后它将要传递的数据传递给接收端的应用层(这里 rdt-send() 是发送数据的函数,其中 rdt代表可靠的数据传输协议,_send() 用于发送端)。
在接收端,rdt_rcv() (rdt_rcv() 是一个接收数据的函数,其中-rcv() 用于接收端),当一个数据包从不可靠通道的接收端到达时将被调用。当rdt协议要向应用层传递数据时,它会通过调用deliver_data()来实现(其中deliver_data()是向上层传递数据的函数)。
在可靠数据传输协议中,我们只考虑单向数据传输的情况,即数据从发送端到接收端的传输(即仅单向)。在双向(全双工或两侧数据传输)的情况下,数据传输在概念上更加困难。虽然我们只考虑单向数据传输,但需要注意的是,我们协议的发送端和接收端都需要双向传输数据包,如上图所示。
为了交换包含需要传输的数据的数据包,rdt 的双方(发送和接收)还需要在两个方向(即来回)交换控制数据包,rdt 的双方都将数据包发送到另一端通过调用 udt_send() (udt_send() 是用于向另一端发送数据的函数,其中 udt 代表不可靠的数据传输协议)。