目录
TCP协议可以提供可靠传输的服务,这是靠什么来实现的呢?
答:
停止-等待协议
连续ARQ协议
停止-等待协议
为什么这个协议叫通知-等待协议呢?
无论是发送方还是接收方,当没有消息进来的时候,它也会处于停止-等待的状态。 只有新的消息进来以后,发送方会接收方才会生成发送出新的消息。(对于发送方来讲这里的消息指的是确认消息,对于接收方来讲这里的消息指的是发送方发送来的消息)
这个过程可能会出现那些差错呢?该什么处理呢?
出现的差错:
对于发送方:发送方出现的差错:发送方将数据发送出去之后,发生了丢失。
对于确认方:确认消息在传输过程中发生丢失。
确认消息很久才到达发送方。
处理的方式:超时重传(接收方很久没有收到确认消息,那么就重传该消息)
超时重传是通过什么来实现的呢?
通过在发送方设置一个定时器,这个定时器被称为:超时定时器。每发送一个消息,都需要设置一个定时器(用来计算一个消息什么时候过期了)。
注意:TCP协议中有4个定时器。
停止-等待协议的缺点是什么?
缺点一:停止等待协议是最简单的可靠传输协议(只要消息没正确到达,就会进行超时重传)
缺点二:停止等待协议对信道的利用效率不高(停止-等待的时间过长)
缺点三:单个确认和发送的效率过低。
所以,这里就需要连续ARQ协议了。
连续ARQ协议
连续ARQ协议的作用
实现的是数据的批量的发送和确认
滑动窗口(实现批量发送)
窗口:批量发送的数据的大小
可以向前滑动的窗口:滑动窗口
如图所示,假设发送了前六个报文之后,收到了编号为1和2的确认消息,此时会将窗口向前移动两个位置。接着就会发送编号为7和8的报文,等接收到其它报文的确认消息之后,再将窗口继续向后移动。
累计确认(实现连续确认)
只要收到了某个确认消息,表示这个消息之前的消息我全部都收到了。大大减少了确认报文的数量,提高了网络效率。例如,
假设同时发送了编号为1-6的这六个报文,在某一个时刻,发送方接收到了编号为5的这个报文的确认消息。如果是采用累计确认的方法,5的这个确认消息就表示说,1-5的确认消息,发送方都已经收到了,因此就会将窗口向后移动5个位置,此时就可以发送7~11这五个报文了。