2012-06-20 108 views
1

什么会更好地淹没网络?套接字压力测试

1-开放一个插座到HTTP Web服务器和写入数据直到碰撞

2-开放与多个插座和写直到碰撞

-3-数据打开套接字和发送的TCP数据包,直到碰撞

4-打开多个套接字并发送tcp数据包直至崩溃?

回答

3

这听起来像你要做的是测试Web服务器如何反应各种风格的拒绝服务攻击。

需要考虑的是Web服务器中的拒绝服务逻辑以及Web服务器中通常如何实现拒绝服务保护。例如,是否有逻辑来限制并发连接的数量或来自同一IP的并发连接的数量,或者监视通信量以限制它或在通信量超过某个阈值时断开连接。

要考虑的一件事就是不要只是通过TCP/IP套接字推送大量字节。 Web服务器正在解释字节,并期望使用HTTP协议。那么,如果你使用HTTP协议以及构建到HTTP上的其他协议来做奇怪的事情,会发生什么。

对于选项3和4,您听起来像是在考虑绕过带有窗口逻辑的TCP/IP堆栈,并且只是发送一串忽略回复数据包的TCP协议数据包流,直到发生某些事情。这将更多的是测试服务器上的TCP堆栈健壮性,而不是Web服务器本身的健壮性。

2

达到网络饱和的能力取决于网络条件。有可能以这种方式编写你的“flooder”,因为你会导致中间设备丢弃数据包,并且服务器本身最终没有看到它的最大负载。

您的应用程序应该从一个连接开始,并监视数据速率。如果所有连接的总数据速率继续上升,请继续添加连接。一旦它不再上升,就达到了吞吐量限制。如果它开始下降,那么你的系统容量超过了容量,要么引起拥塞控制,要么服务器无法有效地处理那么多的连接。如果吞吐量限制远低于您的预期,那么您可能需要调试网络或调整TCP /套接字参数。如果服务器速度变慢,则需要对其进行分析以了解为什么它无法处理连接负载。

此外,检查每个连接的数据速率,并查看某些连接是否比其他连接快得多。如果发生这种情况,那么服务器有一个公平问题,这也应该解决。尽管如此,这与服务器和网络性能关系不大,因为它与良好的用户体验相关。这种问题的出现可能会在拒绝服务攻击中被利用。