注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

★★★★★关于提高服务器响应客户端连接速度的问题  

2010-07-09 10:56:23|  分类: 网络开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

关于提高服务器响应客户端连接速度的问题

        在这个问题上,我最初是不作如何处理,服务器的侦听线程直接响应客户端连接。当然了,这里得加锁,否则很容易出问题。于是出现关联锁,导致程序很容易死锁!而且,服务器的响应速度较慢。

        于是,我想到一个方法。侦听线程只负责accept接受连接,而对客户端连接的检查,例如是否位于IP地址黑名单中,则放到另外几个连接检查线程中处理。处理完毕后,交由IO网络传输线程处理。

        我为这样的设计暗自高兴了很久。但是,昨天发现,这个设计存在严重的漏洞,可能给DOS攻击提供方便之门。

        假设,一个客户端,连接服务器,服务器响应,接受连接,并加连接放入连接检查线程处理。就在此时,客户端关闭连接。服务器端接着处理,处理完毕后,把这个客户端连接加入到IO网络传输线程处理。而在此之前,客户端已经关闭了连接,所以,之后服务器端可能将不能得到通知了,除非服务器端主动发送心跳数据包!显然,TCP连接使用心跳数据包,这是一个失败的做法!

        于是,有害连接产生。服务器认为这个套接字正常,于是这个套接字消耗了部分系统资源。在DOS拒绝服务攻击的情况下,这种资源消耗足以让服务器瘫痪。

        当我想到了这个问题时,我首先做的事情是:

如何测试网络套接字的有效性http://zhanyonhu.blog.163.com/blog/static/1618604420106732845970/

        我希望通过自己的检测来确认连接安全,但之后发现,我错了!因为我只能检测套接字的有效性,

        那么,或许只能是使用老方法么?我已经想到了解决方法!开启多个进程或者线程,同时侦听一个端口,也就是端口复用,据说一些Web服务器是这么处理的。

 

        20100709注:

        杞人忧天了!接受了新连接之后,如果连接异常关闭,会触发读取数据的事件。如果读取数据的长度是0,表示连接已经关闭,就可以回收资源了!

 

By:zhanyonhu

       

  评论这张
 
阅读(1115)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016