提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
导图
/font>
提示:以下是本篇文章正文内容,
一、概述和功能
二、封装成帧与透明传输
封装成帧就是加将数据加头加尾,相当于将数据打包
透明传输就是为了防止特殊的数据无法正常传输的的情况的发生,比如说在封装成帧的过程中出现数据中的某些标记符与开始/结束标记符恰巧重复等等情况
2.1.字符计数法
就是在帧的首部做计数,看看数据是否错误
缺点:如果在某一个帧内,标记位后面的某个字节的数据丢失,那么会影响后面的帧
比如3 1 1 和 4 2 2 2,如果前面的帧丢失变成 3 1,那么后面的4就会被补到前面变成 3 1 4导致错误
2.2 字符填充法
解决方法:添加转义字符
2.3 零比特填充法
2.4 违规编码法
因为曼彻斯特编码不使用高-高,低-低来表示,所以如果使用高-高,低-低来表示帧起始和终止就不会与数据冲突
三. 流量控制和可靠传输
3.1 流量控制和可靠传输
流量控制是为了让传输过程中的发送速度和接受速度匹配,减少传输出错与资源浪费
可靠传输是发送端发送什么,接收端就要受到什么
3.2 停止等待协议(Stop-and-Wait)
停止等待协议的无差错情况
注释:因为一次就一个,所以用0和1标记ack就行
停止等待协议的有差错情况
停止等待协议的特点
1.简单
2.信道利用率低。大部分时间数据都在路上,发送方很长时间闲置,资源浪费
信道利用率
3.3 后退N帧协议(GBN)
因为停止等待协议太浪费时间了,所以尝试采用GBN,发送连续多个数据帧,以增大信道利用率
注释:
累计确认:就是收到一个确认帧,那么它和它之前的所有帧都默认已收到,反之,如果某个确认帧没收到,那么它和它之后的所有帧都默认丢失(即使收到了也丢掉),进行重传
注释:此图发送2帧时丢失,所以接收方几首收到后面的帧也是直接丢弃并且发送最晚收到的有效帧1的ACK,直至2帧的超时重传机制被触发进行重传并得到ACK之后,接收方才会接受2帧以及后面的帧
发送窗口不能无限大,与使用