tcp流量控制

发送方流量控制cwnd: Congestion Window:
流量也受网络影响较大,所以可能发送的数量不超过接收方的rmnd但是超过了网络能承载的导致通信变慢甚至网络瘫痪
cwnd代表发送方每次发送的数据量,他是从1开始指数级增长的,(慢开始算法)一开始为1是为了探测网络情况,但是不能让他一直无限制增长,需要ssthresh来控制它,ssthresh是发送方的一个初始值,当cwnd小于ssthresh,才用慢开始算,当cwnd大于ssthresh采用拥塞避免算法即cwnd每次加一的增长而不是指数级增长,这个是发送方的自我限制。
什么时候停止的?当网络出现拥塞的时候
发送方怎么判断什么时候出现网络有拥塞?
1.发送方没有及时收到接收方的ack也就是timeout signal
2.接收方有一个超时重传机制,如果在接收m1 m2的包之后没有收到m3,就会重传m2,及时他收到了m4,因为m1 m2 m4 顺序不连贯,所以也会超时重传m2,当发送方三次收到了m2的重传,就知道m3丢了会再次发送m3 这时发送发认为出现了网络拥塞
针对第1种:发送方把cwnd 设置为1,ssthresh设置为初始值的一半 然后开始慢开始算法
针对第2种:把ssthresh设置为初始值的一半 cwnd 等于此时的ssthresh 然后开始拥塞避免算法

接收方流量了控制:rmnd :receiver window在tcp的头部控制的,详细请见流量控制:接收方每次通过ack,并存放这个值在tcp head的window里告知发送方我现在能接收的数据量是多大,你发送多少过来

参考:https://zhuanlan.zhihu.com/p/37379780

你可能感兴趣的:(tcp流量控制)