滑动窗口机制
滑动窗口以字节为单位。发送端有一个发送窗口,窗口重的序号是允许发送的序号,窗口的后沿是已经发送并且确认的序号,窗口的前沿是不允许发送的序号。窗口的后沿可能不动(代表没有收到新的确认),也有可能前移(代表收到了新的确认),但是不会后移(不可能撤销已经确认的数据)。窗口的前沿一般是向前的,也有可能不动(表示没有收到新的请求或对方的接收窗口变小),也有可能收缩,但是TCP强烈不建议这么做,因为发送端在收到通知前可能已经发送了很多数据,此时如果收缩窗口可能会产生错误。
滑动窗口的状态需要3个指针p1,p2和p3。p1之前的序号表示已经发送并且确认的,p1到p2的序号表示已经发送但还没有确认的,p2到p3表示允许发送的序号,也叫可用窗口,p1到p3表示发送窗口,p3之后的序号表示不可发送的。
发送缓存用来暂时存放发送应用程序传给发送方TCP准备发送的数据和已经发送但还没确认的数据。
接收缓存用来暂时存放按序到达的但尚未被应用程序读取的数据,未按序到达的数据。
注意三点:①发送窗口根据接收窗口设置,但并不总是一样大,还要根据网络的拥塞情况调整。②对于不按序到达的数据,TCP通常存放在接收窗口,等到字节流缺少的字节收到后再按序交付上层应用程序。③接收方必须有累积确认功能,可以减小传输开销,可以在合适的时候发送确认,也可以在自己有数据需要发送时捎带确认。但是接收方不能过分推迟发送确认,不能超过0.5秒。
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
加入交流群
请使用微信扫一扫!