1.两个概念
- RTT:发送一个数据包到收到对应的ACK,所花费的时间
- RTO:重传时间间隔,即多久时间内没收到数据包对应的ACK,则再次发送该数据包
tcp的滑动窗口
tcp使用滑动窗口做流量控制与乱序重排,主要功能有如下两点:
- 保证tcp的可靠性
- 保证tcp的流量控制特性
tcp发送方滑动窗口发送数据过程如下:
发送的数据主要分为四类:
- 已发送并已收到ACK包
- 已发送但未收到ACK包
- 未发送但可以发送(准备发磅)
- 未发送且不可以发送(超过了窗口的大小)
其中,第2和第3加起来的报文长度就是发送窗口大小了。
tcp接收方滑动窗口接收数据过程如下:
与发送方类似,接收方的数据分为以下3类:
- 已接收并且已经返回ACK包
- 未接收但可以接收(准备接收)
- 未接收且不可以接收(超过了窗口的大小)
其中,第2部分的报文长度就是发送窗口大小。
接收窗口只有在前面所有的段都确认的情况下,才会移动左边界,当前面还有字节未接收但收到后面的字节时,窗口并不会移动,不会对后续字节进行确认,以确保对端会对未接收的数据进行重传。
总结:tcp传输可靠性来源于确认重传机制,tcp滑动窗口的可靠性也是建立在确认重传机制上的。
转载于:https://my.oschina.net/funcy/blog/3006133