TCP可靠传输——滑动窗口
*TCP协议保证可靠的数据传输。。使用哪些方法来保证呢。。?来瞧瞧滑动窗口。。→_→*
-
滑动窗口的定义
TCP滑动窗口以字节为单位
发送窗口表示,在没有收到接收方的确认时,发送方可以把窗口内的数据都发送出去。发送过的数据在未收到确认之前都必须暂时保留,以便超时重传使用
发送窗口的位置由窗口前沿和后沿共同决定。
后沿不动——没有收到新的确认
后沿前移——收到了新的确认
前沿前移——没有收到新的确认,接收方的窗口大小不变
前沿不动——收到了新的确认,接收方的窗口缩小
P3 - P1 = A的发送窗口(通知窗口)
P2 - P1 = 已发送但尚未收到确认的字节数
P3 - p2 = 允许发送但尚未发送的字节数(可用窗口或有效窗口)
-
缓存和窗口的关系
发送缓存存放:应用程序传送给TCP的准备发送的数据和TCP已发送但尚未收到确认的数据
发送窗口只是发送缓存的一部分,发送缓存和发送窗口的后沿是重合的
接收缓存存放:按序到达、但尚未被应用程序读取的数据和未按序到达的数据
如果应用程序不及时读取缓存数据,那接收缓存最终就会被填满,使接收窗口减小到零
如果应用程序即使读取缓存数据,接收窗口就可以增大,但最大不超过接收缓存的大小