学习TCP可靠传输之前,学习几个重要的概念
-
停止等待协议
停止等待协议.png
把计算机分为发送方和接收方
发送的消息在路上丢失 确认的消息在路上丢失 确认的消息很久才到 这三种情况都会超时重传
每发送一个消息,都需要设置一个定时器
停止等待协议是最简单的可靠传输协议
停止等待协议对信道的利用效率不高 -
连续ARQ协议 (Automatic Repeat ReQuest:自动重传请求)
在停止等待协议的基础上进行改造的,能不能批量发送?
连续ARQ协议.png
连续ARQ协议采用累计确认的方式,假如说同时发送了六个报文,那么在某一个时刻,发送方收到了第5个报文确认消息,那么表示1到5都已经收到了,所以把窗口往后推动五格,窗口就可以发送7-11这五个消息,这就是累计确认。只要收到某个确认消息,就表示这个消息之前的消息都收到了,可以大大减少确认报文的数量,来提升网络效率。TCP协议就是基于连续ARQ协议来开发的。
-
TCP的可靠传输基于连续ARQ协议 ARQ协议有两个重要的概念,滑动窗口和累计确认
-
TCP的滑动窗口以字节为单位
TCP可靠传输.jpg
假设有一段的字节流需要进行传输,假设滑动窗口的大小为7(现实上很大),有一个场景,前4个字节已发送没有确认,后三个字节可以发送,窗口不能往前滑动
TCP可靠传输2.jpg
重新传输导致效率低下,那么有没有提高效率的方式?答案是有的,那就是选择重传!
TCP协议的选择重传
- 选择重传需要指定需要重传的字节(实际上是选择重传的字节边界)
- 每一个字节都有一个唯一的32序号
网友评论