1、TCP之滑动窗口
1.1、概述
滑动窗口实现了TCP流控制。首先明确滑动窗口的范畴:TCP是双工的协议,会话的双方都可以同时接收和发送数据。TCP会话的双方都各自维护一个发送窗口和一个接收窗口。各自的接收窗口大小取决于应用、系统、硬件的限制(TCP传输速率不能大于应用的数据处理速率)。各自的发送窗口则要求取决于对端通告的接收窗口,要求相同。
滑动窗口解决的是流量控制的的问题,就是如果接收端和发送端对数据包的处理速度不同,如何让双方达成一致。接收端的缓存传输数据给应用层(接收端和发送端都有一个缓存),但这个过程不一定是即时的,如果发送速度太快,会出现接收端数据overflow,流量控制解决的是这个问题。
1.2、窗口的概念
发送方的发送缓存内的数据都可以被分为4类:
1、已发送,已收到ACK;
2、已发送,未收到ACK;
3、未发送,但允许发送;
4、未发送,但不允许发送。
其中类型2和3都属于发送窗口。
接收方的缓存数据分为3类:
1、已接收;