一、tcp滑动窗口基本概念
tcp 滑动窗口
概述:滑动窗口本质上是描述接受方的TCP数据报缓冲区大小的数据,发送方根据这个数据来计算自己最多能发送多长的数据。
滑动窗口协议:
作用:用于网络数据传输时的流量控制,以避免拥塞的发生。
优点:由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输,提高网络吞吐量。特点:由于窗口由16位bit所定义(tcp头部定义),所以接收端TCP 能最大提供65535个字节的缓冲。(注意是字节,不是数据包数量)
1. 全双工:TCP协议的两端分别为发送者A和接收者B,由于是全双工协议,因此A和B应该分别维护着一个独立的发送缓冲区和接收缓冲区。
2. 发送窗口是发送缓存中的一部分,是可以被TCP协议发送的那部分,其实应用层需要发送的所有数据都被放进了发送者的发送缓冲区;(重点理解,滑动窗口是发送缓存的一部分)。
3. 发送窗口中相关的有四个概念:
已发送并收到确认的数据(不再发送窗口和发送缓冲区之内)、
已发送但未收到确认的数据(位于发送窗口之中)、
允许发送但尚未发送的数据(发送窗口内)
发送缓冲区内暂时不允许发送的数据(发送窗口外)
4. 每次成功发送数据之后,发送窗口就会在发送缓冲区中按顺序移动,将 新的数据包含到窗口中准备发送;
构成窗口过程
TCP建立连接的初始,B会告诉A自己的接收窗口大小,根据B给出窗口值,A构造自己的窗口。
二、tcp滑动窗口与流量控制
流量控制机制与滑动窗口的关系:
主要是接收方传递信息给发送方,使其不要发送数据太快,是一种端到端的控制。主要的方式就是返回的ACK中会包含自己的接收窗口的大小,并且利用大小来控制发送方的数据发送
三、tcp滑动窗口与拥塞控制
拥塞控制机制:拥塞的原因:即使路由器能够存储一些数据,但若源源不断的数据到达速率高于发出速率,任何容量的中间存储都会溢出。路由器因无法处理高速率到达的流量而被迫丢弃数据信息的现象称为拥塞。
重传的恶性循环: TCP采取的首要机制是重传,包括超时重传和快速重传考虑如下情形,当网络处于拥塞崩溃状态时,结果只会更糟,所以这种情况应该尽量避免。
补充:在当今的有线网络中,出现在路由器或交换机中的拥塞是造成丢包的主要原因,而在无线网络中,传输和接收错误是导致丢包的重要困素。
3个窗口概念:
拥塞窗口:反映网络传输能力的变量称为拥塞窗口(cwnd),发送端实际(可用)窗口W,就是接收端通知窗日awnd和拥塞窗口cwnd的较小者:
w的值不能过大或过小一我们希望其接近带宽延迟积(Bandwidth-Delay Product, BDP),也称作最佳窗口大小。W反映网络中可存储的待发送数据量大小,其计算值等于RTT与链路中最小通行速率(即发送端与接收端传输路径中的“瓶颈” )的乘积。
拥塞窗口大小的获得:获得cwnd最佳值的唯一方法是以越来越快的速率不断发送数据,直到出现数据包丢失(或网络拥塞)为止。
ACK时钟:当ACK陆续(以4为间隔)到达发送端时,其到达提供了一个信号或者说“ ACK时钟”,表明发送端可以继续发送数据。
自同步:这种由一个ACK到达(称作ACK时钟)触发一个新数据包传输的关系称为自同步(self-CIocking)。TCP拥塞控制操作是基于数据包守恒原理:
TCP的两个核心算法‥ 慢启动和拥塞避免:这两个算法是基于包守恒和 ACK.时钟原理,
1. 慢启动算法 2. 拥塞避免算法。(先不研究)
fahoe、 Reno以及快速恢复算法,一些改进(暂不研究)