| chdonald 回复于:2003-07-11 12:30:51
|
产生原因:
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
|
| 无双 回复于:2003-07-11 17:57:53
|
不错
原创吗
给你加个原创吧
|
| 蓝色键盘 回复于:2003-07-11 18:03:45
|
给予鼓励,希望以后多发表一些自己的看法和优秀文章。
|
| icedust 回复于:2003-07-11 19:32:33
|
不错,只得学习
|
| 惜过 回复于:2003-07-11 20:24:16
|
不错不错,我下次也去下一点看看??
|
| koath 回复于:2003-07-11 23:21:00
|
是啊,我也编过HTTP brute force的client
好像iis, apache都是这样了,想是为了防止穷举。
不过再看看TCP/IP volume 2估计可以找到解决方案,代码不是bsd的,不爽
|
| houhuaw 回复于:2003-07-15 11:36:44
|
不错,有深度
|
| threehair 回复于:2003-07-15 13:11:50
|
不错不错
|
| uniks 回复于:2003-07-16 08:41:44
|
只有当建立连接后,才可以使连接建立定时器无效。也就是说,在同步开放连接建立过程中,当主机收到一个ACK时,定时器应置为无效,使状态转移到ESTABLISHED。好像fin_wati_2状态机也是有超时设置的。
|