持续计时器
假设一种场景:A给B发送数据,如果B告诉A自己的缓冲区已满,于是A停止发送数据,等待一段时间后,B的缓冲区出现了富余,于是给A发送报文告诉rwnd大小为400,但是这个报文不幸丢失了,于是就出现A等待B的通知,B等待A发送数据的死锁状态,为了处理这种问题,TCP引入了持续计时器,当A收到B的零窗口通知时,就启用该计时器,时间到则发送一个字节的探测报文,对方会在此时回应自身的接收窗口大小,如果仍然为0,则重置持续计时器,继续等待.
重传计时器
当TCP发送报文段时,就创建该特定报文段的重传计时器,可能发-生两种情况:
- 若在计时器截止时间到之前收到了对此特定报文段的确认,则撤销此计时器.
- 若收到了对此特定报文段的确认之前计时器截止期到,则重传此报文段,并将计时器复位.
保活计时器
保活计时器使用在某些实现中,用来防止在两个TCP之间的连接出现长期的空闲,假定客户端打开了服务器的连接,传送了一些数据,然后就保持静默,也许这个客户端出故障了,在这种情况下,这个连接将永远保持打开状态,要解决这种问题,在大多数的实现中都是使服务器设置保活计时器,每当服务器收到客户端的信息,就将计时器复位,超时通常设置为2小时,若服务器过了2小时还没有收到客户端的信息,就发送探测报文段,若发送10个探测报文段(每一个相隔75秒)还没有响应,就假定客户端除了故障,因而就终止该连接.
时间等待计时器
也就是上篇文章中所说的TCP四次挥手中,主动关闭方最后为什么要等待2MSL之后才能关闭连接?
慢启动
最初的TCP在连接建立成功后会向网络中发送大量的数据包,这样很容易导致网络中路由器缓存空间耗尽,从而发生拥塞。因此新建立的连接不能够一开始就大量发送数据