如何关闭time_wait连接?

原贴:http://www.csna.cn/viewthread.php?tid=1468

如何关闭time_wait连接?

今天在电影服务器上使用NETSTAT -AN察看系统连接,发现有大量的TIME_WAIT连接,IP都是内网用户访问电影服务器时留下的,有的IP甚至有200-300个连接。网上查了一些资料,都说TIME_WAIT连接的默认时间是240秒,也就是四分钟。但是10分钟以后这些连接还没有消失。重启服务器,查看连接还在。请教诸位,有没有手动关闭这些连接的方法?另外,大量的time_wait对系统有哪些方面的影响?非常感谢!!

TCP结束的过程如下:

Server                             Client

-------------- FIN -------------->  server: fin_wait_1

<------------- ACK --------------- client: close_wait  server:fin_wait_2

<------------- FIN  --------------- client发出fin之后就关闭

-------------- ACK ------------->  server发出ack后进入time_wait状态

Time_Wait的默认时间是2倍的MLS,就是240秒钟。MLS是TCP 片在网上的最长存活时间。
TIME_Wait的主要作用是保证关闭的TCP端口不立即被使用。因为当网络存在延迟时,可能当某个端口被关闭后,网络中还有一些重传的TCP片在发向这个端口,如果这个端口立即建立新的TCP连接,则可能会有影响。所以使用2倍的MSL时间来限制这个端口立即被使用。

现在的问题在于,4分钟的时间有点长。
因此,Time_wait的影响,我想,首先每个TCP连接都各自有个数据结构,叫TCP Control Block.Time_wait的时候这个数据结构没有被释放。所以当有太多的TCP连接时,内存可能会被占用很多。

[ 本帖最后由 ValorZ 于 2006-9-19 10:32 编辑 ]
代做 系统集成、软件外包、美工设计、机票、旅游、饭店、办公用品
To ValorZ:TIME_WAIT状态也称为2MSL等待状态,而不是2MLS,笔误吧!

每个TCP报文在网络内的最长时间,就称为MSL(Maximum Segment Lifetime),它的作用和IP数据包的TTL类似。

RFC793指出,MSL的值是2分钟,但是在实际的实现中,常用的值有以下三种:30秒,1分钟,2分钟。

注意一个问题,进入TIME_WAIT状态的一般情况下是客户端,大多数服务器端一般执行被动关闭,不会进入TIME_WAIT状态,当在服务器端关闭某个服务再重新启动时,它是会进入TIME_WAIT状态的。

举例:
1.客户端连接服务器的80服务,这时客户端会启用一个本地的端口访问服务器的80,访问完成后关闭此连接,立刻再次访问服务器的80,这时客户端会启用另一个本地的端口,而不是刚才使用的那个本地端口。原因就是刚才的那个连接还处于TIME_WAIT状态。
2.客户端连接服务器的80服务,这时服务器关闭80端口,立即再次重启80端口的服务,这时可能不会成功启动,原因也是服务器的连接还处于TIME_WAIT状态。
这些都不是我的,但这些都会是我的。
谢谢楼上的版主们的讲解!

回复 #1 ge_xin_yu 的帖子

大量的time_wait 当然会占用更多的端口与内存资源. 如果是synflood攻击,则会发现有大量的time_wait在排队.如果流量非常大,系统可用资源被占用殆尽,则服务器通常会崩溃掉.正常情况下(非synflood攻击)可以通过增加服务器内存解决并发访问请求过多的状况.

"10分钟以后这些连接还没有消失, 重启服务器,查看连接还在",服务器重启后是会马上就会收到客户端的连接请求.这些连接一直是以前那些IP吗?还是新的IP?用科来抓一下包看看.

一般用不着手动关闭这些连接,超时后系统自然会将状态置位,你其实可以将time_wait时间改小.

如果你的电影服务器是Windows平台,可以修改下面的注册表键值:

[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters]
"TcpTimedWaitDelay"=dword:0000001e

此值是TIME_WAIT状态的最长时间。缺省为240秒,最低为30秒,最高为300秒。建议为30秒。
非常感谢楼上诸位兄弟的说明!!!
版主可不可以共享一些RFC中文版的文档出来?
支持zhang_ming
引用:
正常情况下(非synflood攻击)可以通过增加服务器内存解决并发访问请求过多的状况.
只能缓解,无法解决。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值