tcp窗口问题mark

决定单连接tcp速度的常见机制是

ssthresh(tcp 拥塞控制门限)

cwnd(tcp拥塞窗口) ---- 发送端根据对网络质量的测量决定自己发送的报文大小

slide_windows(滑动窗口大小) ---接收端告诉发送端自己的可接受buffer大小

#两者取较小值作为发送速率限制

 

在正常的linux机器中,cwnd初始值=10,ssthresh初始值=TCP_INFINITE_SSTHRESH 0x7fffffff

在慢启动阶段, cwnd每一个rtt 会增大一倍。

报文接收端收到out-of-order的分片时会回复duplicated ack,

发送端收到三次相同的序号的dup ack时,进入拥塞避免。(证明有一个报文对端没有收到)

此时 ssthresh = cwnd/2  cwnd=ssthresh

 

有一种场景是:当tcp_metrics缓存了前一次session的ssthresh,则后续使用到这个IP的tcp管道就会使用之前那个session的ssthresh(可能是一个很小的值,例如300)

ip tcp_metrics show

 

另一种场景是:在发送端/接收端:人为改小了滑动窗:

https://www.cnblogs.com/zengkefu/p/5749009.html

 

 

ss -i -o 可以查看tcp 当前连接的参数

https://www.cyberciti.biz/files/ss.html

 

另一个监控工具是阿里tsar:

可以查看历史监控丢包率

 

 

https://www.cnblogs.com/zengkefu/p/5749009.html

你可能感兴趣的:(网络技术)