套接字压力测试

时间:2012-06-20 14:51:51

标签: c linux sockets libpcap

什么会更好地充斥网络?

1-打开一个套接字到http Web服务器并写入数据直到崩溃

2-打开多个套接字并将数据写入崩溃

3-打开套接字并发送tcp数据包直到崩溃

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

2 个答案:

答案 0 :(得分:3)

听起来你要做的就是测试网络服务器如何应对各种各样的拒绝服务攻击。

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

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

对于选项3和4,听起来您正在考虑绕过具有窗口逻辑的TCP / IP堆栈,并且仅发送TCP协议数据包流,忽略回复数据包,直到出现烟雾。这将更多地测试服务器上的TCP堆栈稳健性,而不是Web服务器本身的健壮性。

答案 1 :(得分:2)

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

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

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