TCP流量控制和拥塞控制基本思想

    • TCP超时重传
      • 基本概念
    • TCP流量控制(滑动窗口)
    • TCP拥塞控制
      • 慢开始和拥塞避免
      • 快重传和快恢复

TCP超时重传

查看某一机器上的某一端口是否可访问
telnet ip port

抓取网卡某端口上的包
tcpdump -ieth1 'port 21'
其中,eth1是网卡名称,可通过ifconfig查询到本机的网卡名称。

基本概念

RTO 重传超时时间(retransmission timeout)

指,从发一个包t1,到未收到该包ack重传包t2,之间的时间差t2-t1.
- 设长了,重传慢,效率低,影响传输性能
- 设短了,重发太快,会增加网络拥塞,导致更多的超时,更多的超时导致更多的重发。

所以,TCP最后采用的是自适应算法调节RTO。其关键是:对于当前RTT的准确估计,并适时调整RTO。

RTT(Round Trip Time)传输往返时间

指,发送端从发送TCP包开始到接收它的立即响应所耗费的时间。

TCP流量控制(滑动窗口)

作用:一、提供TCP的可靠性;二、提供TCP的流控特性
位置:在TCP的头部: 16bit窗口大小和TCP选项。其中,选项可使得窗口扩大一倍。

滑动窗口包含:发送窗口和接收窗口。
发送端的窗口控制即为发送窗口,对应为接收窗口。
发送缓存内的数据包含4类:
- (1) 已经发送并得到对端ACK
- (2)已经发送未得到对端ACK
- (3)未发送但对端允许发送
- (4)未发送且对端也不让发送
其中,发端窗口控制的就是:(2) (3)
发送窗口的移动也是建立在确认重传机制的,从而保证TCP的可靠性。移动原则:
收到对端对本段发送窗口内字节的ACK

可把TCP滑动窗口的过程,想象为水池的入口和出口控制,窗口就是一个水池。

TCP拥塞控制

TCP拥塞控制包括四个核心算法:
- 慢开始(slow start)
- 拥塞避免(congestion voidance)
- 快重传(Fast Retransmit)
- 快恢复(Fast Recovery)

总原则:拥塞窗口的变化为 加法增大、乘法减小

慢开始和拥塞避免

慢开始的主要思想:一开始不发送大量的数据,而是从小到大的逐渐增加拥塞窗口的大小,从而试探网络的拥塞程度。

拥塞避免的主要思想:即每经过一个往返时间RTT就把发送方的拥塞窗口cwind加 1。

具体步骤:

(1) TCP连接初始化,cwind置1.

(2)cwind < ssthresh, 使用慢开始算法,cwind 指数规律增长。(y = 2x)

(3) cwind = ssthresh,使用拥塞避免算法此时,cwnd按线性增长。

(4) 当网络发送拥塞是,ssthresh更行为以前的一半,且cwnd重新设置为1。开始执行(2)

其中,cwind是拥塞窗口,ssthresh是慢开始门限。

快重传和快恢复

快重传的思想 : 接收方收到一个失序的报文段就立即发出重复确认发送方连续收到 3重复确认就立即重传对方尚未收到的报文段,而不用等重传计时器的时间。

快恢复和快重传搭配使用。

快恢复的思想: 发送方收到 3个重传确认时,立即执行“乘法减小”算法,即ssthresh门限减半(1/2)。接下来,并不执行慢开始算法(cwind置1),而是将cwind置为ssthresh,然后执行拥塞避免算法


参考:徐晓鑫 后台开发:核心技术与应用实践

你可能感兴趣的:(ubuntu)