计算机网络教程-传输层(十一)传输层基础协议:简单协议与停止-等待协议

一、简单协议

        我们的第一个协议是一个简单的无连接协议,它既没有流量控制也没有差错控制。我们假设接收方能够立即处理它所收到的任何分组。换言之,接收方永远不会被接收到的分组淹没。

计算机网络教程-传输层(十一)传输层基础协议:简单协议与停止-等待协议

        直到应用层有报文待发送,发送端才发送分组。直到一个分组到达,接收端才将报文传递到它的应用层。我们可以使用两个有限状态机来表示这些要求。每个有限状态机只有一种状态,即准备状态ready state)。发送方状态机保持准备状态,直到一个来自应用层进程的请求到来。当这个事件发生时,发送方状态机将报文封装在分组内,并将其发送到接收方状态机。接收方状态机保持准备状态,直到一个来自发送方状态机的分组到来。当这个事件发生时,接收方状态机从分组内解封装出报文,并将其发送到应用层进程。这个状态称为有限状态机

二、停止-等待协议

        它使用流量和差错控制。发送方和接收方都使用大小为 1 的滑动窗口。发送方在某一时刻发送一个分组,并且在发送下一个分组之前等待确认。为了发现被破坏分组,我们需要在每个数据分组中加入校验和。当一个分组到达接收端时,它就被检测。如果校验和不正确,分组就是被破坏的并被悄悄地丢弃。接收方的沉默对发送方来说是一种信号,即那个分组不是被破坏就是丢失了。每当发送方发送一个分组时,它都开启一个计时器。如果在计时器超时之前接收到确认,那么计时器就被关闭并且发送下一个分组(如果它有待发送分组)。如果计时器超时,发送方就认为分组丢失或被破坏,于是重发之前的分组。这意味着在确认到来之前,发送方都需要存储分组的副本。

计算机网络教程-传输层(十一)传输层基础协议:简单协议与停止-等待协议

停止-等待协议是一个提供流量和差错控制的面向连接协议。

1.序号

        协议使用序号和确认号来防止重复分组。一个字段被加入分组头部来保存那个分组的序号。一件需要着重考虑的事情就是序号的范围。 序号是 01010的称为模 2 运算。

2.确认号

        由于序号必须适合于数据分组和确认,因此我们使用这种惯例:确认号总声明接收方预期接收的下一个分组next packet expected)序号。例如,如果 0 号分组已经安全完整到达,接收方发送一个确认号为 1 ACK(意味着 1 号分组是预期接收的下一个分组)。

3.停止-等待的有限状态机

计算机网络教程-传输层(十一)传输层基础协议:简单协议与停止-等待协议

4.发送方

  1. 准备状态。当发送方处于这种状态时,它只等待一个事件发生。如果来自应用层的请求到来,发送方创建一个分组,并将其序号设为 S。保存分组的副本,发送分组。之后,发送方开启唯一的计时器。发送方进入阻塞状态。
  2. 阻塞状态。当发送方处于这个状态时,可能发生三个事件:
  • a. 如果无错 ACK 到达,它的确认号与下一个待发送分组相关,这意味着 ackNo = (S + 1)modulo2,然后关闭计时器。窗口滑动 S = (S + 1) modulo 2。最终发送方进入准备状态。
  • b. 如果到达的是被破坏 ACK 或是 ackNo(S + 1) modulo 2 的无错 ACK,那么 ACK 被丢弃。
  • c. 如果发生超时,发送方重新发送唯一的未完成分组并重新开启计时器。

5.接收方

接收方总是处于准备ready)状态。可能发生三个事件:
  • a. 如果 seqNo = R 的无错分组到达,分组中的报文被传递到应用层。之后窗口滑动, R = (R +1) modulo 2。最终,确认号为 ackNo = R ACK 被发送。
  • b. 如果 seqNoR 的无错分组到达,分组被丢弃,但是确认号为 ackNo = R ACK 被发送。
  • c. 如果一个被破坏的分组到达,分组被丢弃。
计算机网络教程-传输层(十一)传输层基础协议:简单协议与停止-等待协议