正在加载,请稍候...

  在HTTP应用中,存在一个问题,SERVER由于某种原因关闭连接,如KEEPALIVE的超时,这样,作为主动关闭的SERVER一方就会进入 FIN_WAIT2状态,但TCP/IP协议栈有个问题,FIN_WAIT2状态是没有超时的(不象TIME_WAIT状态),所以如果CLIENT不关闭,这个FIN_WAIT_2状态将保持到系统重新启动,越来越多的FIN_WAIT_2状态会致使内核crash。

  产生原因:
1。常连接并且当连接一直处于IDLE状态导致SERVER CLOSE时,CLIENT编程缺陷,没有向SERVER 发出FIN和ACK包
2。APACHE1.1和APACHE1.2增加了linger_close()函数,前面的帖子有介绍,这个函数可能引起了这个问题(为什么我也不清楚)
  解决办法:
1。对FIN_WAIT_2状态增加超时机制,这个特性在协议里没有体现,但在一些OS中已经实现
如:LINUX、SOLARIS、FREEBSD、HP-UNIX、IRIX等
2。不要用linger_close()编译
3。用SO_LINGER代替,这个在某些系统中还能很好地处理
4。增加用于存储网络连接状态的内存mbuf,以防止内核crash
5。DISABLE KEEPALIVE

Technorati 标签: ,,,

TCP状态图

专业 » 工作手扎 2008-8-13 17:52 jarry  不指定
TCP状态图
LISTEN:侦听来自远方的TCP端口的连接请求
SYN-SENT:再发送连接请求后等待匹配的连接请求
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED:代表一个打开的连接
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
CLOSE-WAIT:等待从本地用户发来的连接中断请求
CLOSING:等待远程TCP对连接中断的确认
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED:没有任何连接状态

现在随着人们的安全意识加强,防火墙一般都被公司企业采用来保障网络的安全,一般的攻击者在有防火墙的情况下,一般是很难入侵的。下面谈谈有防火墙环境下的攻击和检测。 
文章未完,猛击继续阅读
   m0n0提供的流量管理软件为ipfw,我们并不需要了解该软件的机理,所以了解该软件并不妨碍我们对流量控制的理解。通过对自动化生成的队列和管道,我们可以简单的发现一个共同点,就是“队列共用管道,且该管道队列权值和为100”。
   
   通过实践总结和理论分析,我们对于“管道”和“队列”会有如下认识

   “管道” 就是一个网络带宽划分的模型,一个网络的带宽可以划分为任意个管道。管道是逻辑的而不是物理,所以管道在数值上叠加没有实际意义。管道具有独立性,一个管道在逻辑上是独立的,不会和任何其他的管道叠加。
文章未完,猛击继续阅读
分页: 1/1 第一页 1 最后页 [ 模式: 摘要 | 列表 ]