您的位置:首页 > 理论基础 > 计算机网络

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

2018-03-28 01:15 555 查看

一、简单协议

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



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

二、停止-等待协议

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



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

1.序号

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

2.确认号

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

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



4.发送方

准备状态。当发送方处于这种状态时,它只等待一个事件发生。如果来自应用层的请求到来,发送方创建一个分组,并将其序号设为 S。保存分组的副本,发送分组。之后,发送方开启唯一的计时器。发送方进入阻塞状态。
阻塞状态。当发送方处于这个状态时,可能发生三个事件:
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. 如果 seqNo≠ <
4000
/span>R 的无错分组到达,分组被丢弃,但是确认号为 ackNo = R 的 ACK 被发送。
c. 如果一个被破坏的分组到达,分组被丢弃。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息