TCP的可靠机制
- 确认应答ACK
TCP将每一个要发送的数据进行编号,每一份发送的数据接收方就会应答确认序号。回应的序号用于告诉接收者已经接收到的数据。 超时重传
如果在发送数据的时候发生丢包现象,那么发送方就不会收到接收方的ACK应答,那么在TCP里面就会在隔一定的时间就会重新发送数据。
存在的问题- 一担发生发送方无法接收到ACK应答的时候,在接收方就会出现很多重复的数据,TCP需要能够识别出来重复的数据并且将重复的数据进行丢弃(TCP将数据进行编号,这样就可以将相同编号的数据只保留一份)
- 如果重传时间太长就会影响整体的传输效率
- 如果重传时间太短那么就会频繁发送相同的数据
滑动窗口
如果在发送数据的时候一次发送一次应答,那么就会使效率很低,尤其是网络状态不佳的时候。
滑动窗口是指发送数据发送数据条数不需要确认的最大值。这样可以在连续的时间内连续发送数据,以此提高效率。
如果滑动窗口发生丢包
1. 数据到达接收端,但是丢失部分ACK应答
这种情况下丢失部分ACK不要紧,因为在后面的应答可以确定前面的数据报已经到达接收端
2. 如果数据报没有到达接收端,而是直接在发送的过程中直接丢失
在部分数据发生丢包的时候,在接收端发送确认应答的时候就会连续发送回来没有接收到的数据的序号。如果在整个滑动窗口的大小范围内连续发送的是同一个数据的序号,那么下一次发送的就是相应的数据的序号。
流量控制