TCP提供的是一种面向连接的、可靠的字节流服务。其可靠性和流量控制由滑动窗口协议保证。
这次面试的时候,网络部分的第二个问题就问到了这个,当时只是粗略的听了 明教教主的 TCP/IP 2011年的视频课程,对于TCP/IP的理解还不够深
现在参考网上的一些文档,对TCP的滑动窗口作更一步的了解。(毕竟这是TCP/IP的精髓)
自己的理解:1、 “窗口”对应的是一段可以被发送者发送的字节序列,其连续的范围称之为“窗口”;
2、 “滑动”则是指这段“允许发送的范围”是可以随着发送的过程而变化的,方式就是按顺序“滑动”。
在引入一个例子来说这个协议之前,先了解一下前提:
1 、 TCP协议的两端分别为发送者A和接收者B, 由于是全双工协议,因此A和B 应该分别维护着一个独立的发送缓冲区和接收缓冲区,由于对等性(A发B收,B发A收),用A发送B接收的情况作为例子;
2、 发送窗口是发送缓存中的一部分,是可以被TCP协议发送的那部分,其实应用层需要发送的所有数据都被放进了发送者的发送缓冲区;
3、 发送窗口中相关的有四个概念: 发送并被确认的数据(不在发送窗口和发送缓冲区之内)、发送但未被确认(位于发送窗口之中)、允许发送但未被发送的数据、 以及发送窗口外发送缓冲区内暂时不允许发送的数据;
4、 每次成功发送数据之后,发送窗口就会在发送缓冲区中按顺序移动,并将新的数据包含到窗口中准备发送;