TCP为每条连接建立了7个定时器:
1.连接建立定时器
2.重传定时器
3.延迟ACK定时器
4.PERSIST定时器
5.KEEPLIVE定时器
6.FINWAIT2定时器
7.TIME_WAIT定时器
一、连接建立定时器
当发送端发送一个建立连接的SYN包时,如果没有收到对端发来的ACK确认报文,那么会进行重传。
二、重传定时器
第一个定时器是在建立连接时没有收到对端的ACK报文,如果在发送数据包的时候没有收到对端的ACK报文呢?
重传时间间隔是指数级退避,知道达到120s为止,重传次数是15次,(这个值由操作系统的/proc/sys/net/ipv4/tcp_retries2决定的)总时间达到15分钟。
三、延迟ACK定时器
在TCP收到数据包以后再没有数据包要回复时,不马上回复ACK,这时会开启一个定时器,等待一段时间看是否有数据需要回复,如果期间有数据要回复,则在回复的数据中捎带ACK,如果时间到了也没有数据要发送,则也发送ACK,
四、persist定时器
persist定时器就是专门为零窗口探测准备的,我们都知道TCP利用滑动窗口来实现流量控制,当接收端B接受窗口为0时,发送端A此时不能再发送数据,发送端此时开启persist定时器,超时后发送一个特殊的报文给接收端看对方窗口是否已经恢复,这个特殊的报文只有一个字节。
五、保活定时器
如果通信以后一段时间再也没有传输过数据,怎么知道对方是不是已经挂掉或者重启了呢,于是TCP提出了一个做法就是再连接的空闲时间超过2个小时,会发送一个探测报文,如果对方有回复则表示连接还活着,对方还在,如果经过几次探测对方都没有回复,客户端会丢弃这个连接
六、FIN_WAIT_2定时器
四次挥手过程中,主动关闭的一方收到ACK以后从FINWAIT1进入FINWAIT2状态等待对端的FIN包的到来,FINWAIT2定时器的作用是防止对方一直不发送FIN包,防止自己一直傻等,
七、TIME_WAIT定时器
TIMEWAIT也成为2MSL定时器,主动关闭连接的一方在TIMEWAIT持续2个MSL的时间,超时后端口号可被安全的重用
3104

被折叠的 条评论
为什么被折叠?



