当FIN-WAIT-2时间耗尽时,活跃的近距离会走向什么状态?

时间:2014-09-02 10:50:50

标签: sockets tcp protocols network-protocols time-wait

当FIN_WAIT2时间用完而最后一个FIN不是来自另一方时,活动近距离的下一个状态是什么? TIME-WAITCLOSED

我们知道在linux系统中,可以在文件/ proc / sys / net / ipv4 / tcp_fin_timeout中设置FIN-WAIT-2:man tcp(7)

  
      
  • tcp_fin_timeout(整数;默认值:60;自Linux 2.2起)

         
        

    指定套接字 强行关闭 之前等待最终FIN数据包的秒数。这严格违反了TCP规范,但需要防止拒绝服务攻击。在Linux 2.2中,默认值为180。

      
  •   
  • TCP_LINGER2(自Linux 2.4开始)

         
        

    孤立的FIN_WAIT2状态套接字的生存期。此选项可用于覆盖此套接字的文件/ proc / sys / net / ipv4 / tcp_fin_timeout中的系统范围设置。这不应与socket(7)级别选项SO_LINGER混淆。此选项不应用于可移植的代码中。

      
  •   

我不确定这个TCP套接字在FIN_WAIT2时间用完之后会出现的状态, 强行关闭 ,转移到{{1 }}?或者只是跳进CLOSED州?

我做了一个测试:

  

1:echo 3>的/ proc / SYS /净/的IPv4 / tcp_fin_timeout

     

2:基准测试tomcat在linux上运行

事实证明TIME-WAIT中出现了很多TIME-WAIT并且正在积累,这意味着在netstat时间用完后,套接字跳入FIN_WAIT2?< / p>

还有一个问题: 我改变了这个: TIME-WAIT正如其他人所说:“重用套接字”,并保留echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse。但没有任何改变,tcp_fin_timeout:3只是在积累。 TIME-WAITtcp_tw_reuse状态的套接字无关,TIME-WAIT套接字无法重用吗?

似乎TIME-WAIT可以减少echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle计数,并将其保持在低水平,只留下负载平衡问题。

1 个答案:

答案 0 :(得分:0)

如果您查看TCP/IP state diagramFIN_WAIT_2转换为TIME_WAIT。因此,我认为当FIN_WAIT_2未到达FIN时,Linux只会在{{1}}超时时转换。