关于TOMCAT的对HTTP1.1协议的长连接的支持

在HTTP1.1协议中引入了名为conection header,主要是为了支持长连接。当该值为keep-alive是,一个TCP连接将会处理多个HTTP请求,而不是每个请求打开一个连接,这对避免创建新的TCP连接有很好的作用,由于创建TCP连接的开销大,因此长连接方式的HTTP请求在效率上也是比较高的。但是这也引入了一个DoS攻击的问题,就是客户端完全可以创建这个连接后不释放,从而耗尽服务器端的连接数。
在TOMCAT的源代码中,对DoS攻击是做了比较完整的考虑的。在具体处理HTTP请求的类org.apache.coyote.http11.Http11Processor中,引入了一个maxKeepAliveRequests的属性,该属性的意义在于当一个连接的请求数达到某个上限时 ,自动关闭该连接。查看其源代可以知道,TOMCAT对长连接的支持是通过一个while循环实现的,在方法public void process(InputStream input, OutputStream output) throws IOException 中有一段这样子的代码 while (started && !error && keepAlive) {// do process the request igonred here},只要该请求的处理没有发生错误,并且满足keepAlive的要求,就会继续循环处理请求而不关闭连接。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值