本系列基于哈工大李全龙的课程
目录
5.4SR(Select Repeat)协议(选择重传协议)
一.传输层的概述
1.1简介
1.2传输层的服务和协议概述
两个主机进行通信虽然相隔很远中间经过多个路由器和各种线路,但是传输层的协议可以将他们抽象成两个端点直接进行通信。
对比:
*
二.复用和分用
2.1多路复用/分用
2.2分用如何工作?
示例:面向连接发分用
多线程Web服务器
三.无连接的传输层协议
四.可靠数据传输的基本原理(TCP)
4.1基本原理和基本结构接口
状态机:接收方和发送方的状态
4.2Rdt1.0:可靠信道上的可靠数据传输协议
发送方等待上端发送数据后封装成数据包通过udt发送,接收端通过rdt接受数据包转换成数据给到应用,其中发送方和接收方的状态是相互独立互不影响的。
4.3Rdt2.0:只产生位错误的信道
4.3.1Rdt1.0的缺陷
对于Rdt1.0来说发送方和接收方都是互相独立,所以接收方并不知道它接受到的消息是否是正确的且是不重复的,发送方也不知道接收方是否成功接受到了消息。
4.3.2Rdt2.0:FSM规约
发送方在进行数据包封装的时候加入了checksum(校验和)。发送方发送数据后进入等待状态,同时如果接收方收到正确信息后将给发送方发送ACK数据表明成功接收,如果收到错误就返回NAK。如果发送方接受到ACK就进入等待上层状态,如果收到NAK就重新发送数据包。
4.4Rdt2.1
4.4.1Rdt2.0的缺陷
4.4.2Rdt2.1:发送方,应对ACK/NAK破坏
封装数据包时候增加数据包序列让接收方用来检查是否是重复分组。
4.4.3Rdt2.1:接收方,应对ACK/NAK破坏
在 RDT 2.1 中,使用两个序列号就足够了,其中一个序列号用于标识发送方发送的数据包,另一个序列号用于标识接收方期望接收的下一个数据包。发送方发送的每个数据包都会带有一个序列号,接收方通过比较接收到的数据包的序列号和期望接收的序列号来判断数据包是否有序且正确。如果接收方接收到的数据包序列号与期望接收的序列号一致,那么接收方会将该数据包交付给上层应用;如果接收到的数据包序列号不一致,那么接收方会发送一个确认消息给发送方,要求发送方重新发送该数据包。
4.5Rdt2.2无NAK消息协议
Rdt2.2 FSM片段
4.6Rdt3.0:信道既可能发生错误,也可能丢失分组
Rdt3.0发送方FSM
Rdt3.0性能分析
五.滑动窗口协议(GBN和SR)
5.1Rdt3.0的缺点:
输延迟较高、网络带宽利用低效、缺乏拥塞控制、可靠性较低和不适用于高速网络
5.2流水线机制:提高资源利用率
在发送数据的过程中发送多组数据提高利用率。
流水线协议——>滑动窗口协议
5.3Go-Back-N协议(GBN)(回退N重传协议)
发送方的FSM:
接收方的FSM:
示例:
窗口大小为4,发送方发送数据包0,1,2,3,然后进入等待状态,其中数据包2丢失,接收方返回ACK0,1,窗口滑动继续发送包4,5,此时包2计时超时,默认数据包2没有收到,按照GBN(如果一个数据包的ACK没有收到发送方就默认在当前的滑动窗口中2后面的数据包接收方都是没有收到的),发送方重新发送数据包2,3,4,5。这里可以看出数据包重复了。
5.4SR(Select Repeat)协议(选择重传协议)
GBN协议的缺点:从刚才的分析可知:最明显的就是带宽浪费、无选择性重传
SR协议:
发送方/接收方的窗口:
示例:
滑动窗口的大小为4,发送数据包0,1,2,3,窗口满了,停止发送,等待确认,其中数据包2丢失,依次确认数据包0,1,同时窗口向后移,依次发送数据包4,5,当数据包2超时,发送方会再次发送数据包2,同时缓存乱序到达的3,4,5,当接收完数据包2后,滑动窗口后移,发送方继续发送数据包
其中:序列号空间大小与窗口尺寸需要满足
避免发生接收序号重叠,出现重复分组