发送窗口的上限值= Min [rwnd, cwnd] (7-1)
TCP拥塞控制和流量控制相关知识点
2024-10-31 20:49
l拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。
l拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。
l流量控制往往指在给定的发送端和接收端之间的点对点通信量的控制,是局部问题。
l流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。
lTCP 采用大小可变的滑动窗口进行流量控制。窗口大小的单位是
字节。
l在 TCP报文段首部的窗口字段写入的数值就是当前给对方设置的发送窗口数值的上限。
l发送窗口在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,
随时动态地调整对方的发送窗口上限值(可增大或减小)。
l不重发接收确认分组会出现以下危险
l工作站将窗口置成0,处于至少在短时间内一个字节也不能从连接上接收的状态。
l拥塞消除后,工作站重新发送接收确认分组,再次打开窗口。
假定该分组在传输中丢失。PC没有收到该分组,故无法知道窗口又被打开。
l这时,此连接出现了问题。如果工作站没有要发送的数据,它就没有理由发送其他TCP分组。另一方面,PC误认为窗口被关闭,不允许发送其他分组。
l为了消除
这种死锁(deadlock)状态,要求PC 侧的TCP发起特殊的操作。也就是说,在窗口完全关闭的情况下,TCP 总是定时地发送分组。
l当然,
因该分组在窗口之外,所以预料对方会拒绝该分组。其结果不外乎以下二种情况,一种是对方以接收确认分组形式传来拒绝信息,利用它可以确认零窗口(zerowindow)仍然存在,另一种实际上是重发那个丢失的带有打开窗口信息的接收确认分组。
l在TCP规范中,推荐在该连接当前的重发定时器设定的时间内若窗口处于关闭状态时,发送第一个零窗口探测分组。然后,应以指数增大的间隔发送其后的探测分组直至某一最大值。
lPC收到关闭窗口的第一个接收确认分组后,立即启动定时器。当定时器超时而窗口依然被关闭时,PC 发送1 字节的数据,即序列号为200的字节。此时,因窗口依然处于关闭状态,工作站可通过对该分组应答进行确认。
l此后当工作站变为能够接收下一个数据的状态时,就发送接收确认分组以开放窗口。图中此分组丢失。幸好,PC再次进行零窗口探测。在进行该操作时,工作站应收到第200 号字节。PC 收到它的确认分组时,窗口已经打开。于是连接上的数据流重新流动。
l发送端的主机在确定发送报文段的速率时,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞。
l因此,每一个 TCP 连接需要有以下两个状态变量:
l接收端窗口 rwnd (receiver window) 又称为通知窗口(advertised window)。
l拥塞窗口 cwnd (congestion window)。
l(1)接收端窗口 rwnd 这是接收端根据其目前的接收缓存大小所许诺的最新的窗口值,是来自接收端的流量控制。接收端将此窗口值放在 TCP报文的首部中的窗口字段,传送给发送端。
l(2)拥塞窗口 cwnd (congestion window) 是发送端根据自己估计的网络拥塞程度而设置的窗口值,是来自发送端的控制。
l发送端的发送窗口的上限值应当取为接收端窗口 rwnd 和拥塞窗口cwnd 这两个变量中较小的一个,即应按以下公式确定: