慢速HTTP与Web套接字 - 资源利用率

时间:2015-02-20 04:18:21

标签: websocket denial-of-service

如果有一堆"慢HTTP"与服务器的连接可能会占用大量资源以致导致拒绝服务,为什么一堆服务器的Web套接字不会导致同样的问题呢?

a different SO question接受的答案说,保持空闲连接几乎是免费的。

如果维持一个开放的TCP连接没有任何成本,为什么一个"慢速HTTP"导致拒绝服务?

1 个答案:

答案 0 :(得分:2)

WebSocket和“慢”HTTP连接都使用开放连接。不同之处在于对服务器设计的期望。

典型的HTTP服务器不需要处理大量的开放连接,而是围绕打开连接数量很少的假设而设计的。如果服务器无法防止慢速客户端,则攻击者可以强制围绕此假设设计的服务器达到资源限制。

以下是一些示例,展示了不同的期望如何影响设计:

  • 如果您一次只有一些HTTP请求在飞行中,那么每个连接使用一个线程就可以了。这对于WebSocket服务器来说不是一个好的设计。

  • 默认文件描述符限制通常适用于典型的HTTP方案,但不适用于大量连接。

可以设计一个HTTP服务器来处理大量的开放连接,而几个服务器可以开箱即用。