滑动窗口: 流量控制方法
它是一个面向连接的可靠的传输协议。既然是一个可靠的传输协议就需要对数据进行确认。
TCP协议里窗口机制有2种:
一种是固定的窗口大小;
一种是滑动的窗口。
这个窗口大小就是我们一次传输几个数据。对所有数据帧按顺序赋予编号,发送方在发送过程中始终保持着一个发送窗口,落在发送窗口内的帧才允许被发送;同时接收方也维持着一个接收窗口,落在接收窗口内的帧才允许接收。这样通过调整发送方窗口和接收方窗口的大小的方式,就饿可以实现流量控制。
TCP滑动窗口技术通过动态改变窗口大小来调节两台主机间数据传输。
每个TCP/IP主机支持全双工数据传输,因此TCP有两个滑动窗口:一个用于接收数据,另一个用于发送数据。
每发送一个数据接受方就要给发送方一个ACK对这个数据进行确认(发送方发送序列号为1、2、3的三个数据包,接收方设备成功接收数据包,用序列号4确认。)。只有接受到了这个确认数据以后发送方才能传输下个数据。
超时重传:
发送数据包在一定的时间周期内没有收到相应的ACK,等待一定的时间,超时之后就认为这个数据包丢失,就会重新发送。
设置了启动重传定时器,一开始发送数据的时候就启动定时器,时间超过预设值就重发,这个预设值会根据相应算法进行动态改变。
这些被发送的片段放在一个窗口中,等待被确认,没有确认不会从窗口中移走,定时器在重传时间到期内,每个片段的位置不变,只有等到ACK收到的时候,才会被从窗口中移走;否则就重传。如果接受的数据片乱序了,不会确认的,需要重新发送。