返回

自顶向下三可靠数据传输原理:GBN滑动窗口协议和SR选择重传协议

后端

自顶向下理解可靠数据传输

可靠数据传输:计算机网络的基础

在计算机网络中,可靠数据传输至关重要,因为它确保数据在从一个设备传输到另一个设备的过程中不会丢失、损坏或重复。为了实现这一目标,自顶向下的方法已成为网络协议栈设计的主要框架。

自顶向下的方法

自顶向下的方法将网络协议栈分解为多个层次,每层都有自己的特定功能。在可靠数据传输中,自顶向下的方法将协议栈划分为传输层和网络层。传输层负责端到端的可靠数据传输,而网络层负责在网络中路由和转发数据。

可靠数据传输的三项基本原理

有三种基本的可靠数据传输原理:

  • 停止等待协议: 发送方发送一个数据分组并等待确认后才能发送下一个数据分组。
  • GBN 滑动窗口协议: 发送方在收到确认之前可以发送多个数据分组,并在窗口内的所有数据分组都得到确认后滑动窗口。
  • SR 选择重传协议: 发送方在收到确认之前可以发送多个数据分组,但只重传尚未确认的最小序号的数据分组。

GBN 滑动窗口协议

GBN 滑动窗口协议是一种高效的协议,允许发送方在收到确认之前发送多个数据分组。它通过维护一个滑动窗口来实现,窗口内的分组可以发送出去。当所有分组都得到确认后,窗口向前移动,新的分组可以发送出去。

// GBN 滑动窗口协议示例代码

// 定义发送方和接收方的窗口大小
int senderWindowSize = 5;
int receiverWindowSize = 5;

// 创建发送方和接收方的窗口
int senderWindow[senderWindowSize];
int receiverWindow[receiverWindowSize];

// 发送方发送数据分组
for (int i = 0; i < senderWindowSize; i++) {
  senderWindow[i] = i;
  send(senderWindow[i]);
}

// 接收方接收数据分组
for (int i = 0; i < receiverWindowSize; i++) {
  receive(receiverWindow[i]);
  sendAck(receiverWindow[i]);
}

// 发送方更新窗口
for (int i = 0; i < senderWindowSize; i++) {
  if (receivedAck(senderWindow[i])) {
    senderWindow[i] = senderWindow[i] + 1;
  }
}

SR 选择重传协议

SR 选择重传协议比 GBN 滑动窗口协议更有效率,因为它只重传丢失的数据分组。它通过维护一个序号表来记录已发送但尚未确认的数据分组,并在没有收到确认时重传丢失的数据分组。

// SR 选择重传协议示例代码

// 定义发送方和接收方的窗口大小
int senderWindowSize = 5;
int receiverWindowSize = 5;

// 创建发送方和接收方的窗口
int senderWindow[senderWindowSize];
int receiverWindow[receiverWindowSize];

// 发送方发送数据分组
for (int i = 0; i < senderWindowSize; i++) {
  senderWindow[i] = i;
  send(senderWindow[i]);
}

// 接收方接收数据分组
for (int i = 0; i < receiverWindowSize; i++) {
  receive(receiverWindow[i]);
  sendAck(receiverWindow[i]);
}

// 发送方更新窗口
for (int i = 0; i < senderWindowSize; i++) {
  if (!receivedAck(senderWindow[i])) {
    resend(senderWindow[i]);
  }
}

结论

可靠数据传输是计算机网络的基石,自顶向下的方法提供了对其结构和功能的清晰理解。GBN 滑动窗口协议和 SR 选择重传协议是实现可靠数据传输的关键协议,每种协议都有其独特的优点和缺点。通过深入了解可靠数据传输的基本原理,我们可以构建更强大、更可靠的计算机网络。

常见问题解答

  1. 什么是网络协议栈?
    网络协议栈是一组分层协议,每层都执行特定的任务,以实现数据在计算机网络中的传输。

  2. GBN 滑动窗口协议和 SR 选择重传协议有什么区别?
    GBN 滑动窗口协议允许发送方在收到确认之前发送多个数据分组,而 SR 选择重传协议只重传丢失的数据分组。

  3. 为什么可靠数据传输在计算机网络中如此重要?
    可靠数据传输确保数据在从一个设备传输到另一个设备的过程中不会丢失、损坏或重复,这是网络通信的基石。

  4. 自顶向下的方法如何应用于可靠数据传输?
    自顶向下的方法将网络协议栈分解为传输层和网络层,传输层负责可靠数据传输,而网络层负责数据路由和转发。

  5. 为什么 SR 选择重传协议比 GBN 滑动窗口协议更有效率?
    SR 选择重传协议更有效率,因为它只重传丢失的数据分组,而 GBN 滑动窗口协议需要重传窗口内的所有数据分组。