发明内容
本发明第一个方面的目的在于提供一种对服务器的网络性能进行压力测试的方法,能使用一台压力机器发出多个用户IP请求,模拟多用户IP地址不同的压力,克服伪造IP连接难度大的问题,同时提高压力能力。
本发明第二个方面的目的在于提供一种对服务器的网络性能进行压力测试的测试设备,能使用一台压力机器发出多个用户IP请求,模拟多用户IP地址不同的压力。
本发明第三个方面的目的在于提供一种对服务器的网络性能进行压力测试的系统,能使用一台压力机器发出多个IP请求,模拟多用户IP地址不同的压力,同时提高压力能力,增强测试系统的安全性。
本发明第一个方面通过一些实施例提供了如下的技术方案,包括如下步骤:
步骤1、将服务器和测试设备配置在同一个虚拟局域网中,并将伪造IP的路由插入到所述服务器的路由表中;
步骤2、测试设备发送源地址为所述伪造IP的数据包,向服务器发起tcp连接请求;
步骤3、服务器接收测试设备发送来的数据包,根据所述服务器的路由表将返回包发送给测试设备;
步骤4、测试设备侦听所有到达的数据包,过滤出服务器的返回包,并根据所述返回包伪造出确认包发送给服务器,完成tcp连接;
步骤5、测试设备向服务器发送测试数据。
本发明第一个方面通过一些实施例提供的对服务器的网络性能进行压力测试的方法,使用一台压力机器发出多个IP请求,模拟多用户IP地址不同的压力,提高了压力能力;通过将服务器和测试设备配置在同一个虚拟局域网中,并将伪造IP的路由插入到服务器的路由表中,克服了伪造IP连接难度大的问题。
本发明的第二个方面通过一些实施例提供了如下的技术方案,包括:伪造IP单元,用于生成预先配置的伪造IP段内的伪造IP;数据单元,用于生成测试数据;侦听单元,用于侦听所有到达所述测试设备的数据包,过滤出所述服务器发送来的返回包;发送单元,用于向所述服务器发送数据包,根据所述服务器的返回包伪造出确认包,并将所述确认包发送给所述服务器;还用于将所述数据单元生成的测试数据发送给所述服务器;接收单元,用于接收所述服务器发送的返回包。
本发明第二个方面通过一些实施例提供的对服务器的网络性能进行压力测试的测试设备,通过设置伪造IP单元,使得一台压力机器发出多个IP请求,模拟多用户IP地址不同的压力。
本发明的第三个方面通过一些实施例提供了如下的技术方案,包括服务器和测试设备,其中所述服务器包括:设置路由单元,用于实现在工作账号下将伪造IP的路由插入到所述服务器的路由表中;所述测试设备用于生成伪造IP和测试数据以及与服务器之间的信息交互。
本发明第三个方面通过一些实施例提供的对服务器的网络性能进行压力测试的系统,将可以生成伪造IP的测试设备作为压力机器,使得一台压力机器发出多个IP请求,模拟多用户IP地址不同的压力;通过设置路由单元,使得能够在工作账号下修改路由,增强了测试系统的安全性。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
本发明的实施例中,服务器为一种Web服务器,测试设备为测试程序所在的主机,测试设备即一台压力机器;测试设备向服务器发送大量的伪造IP,均与服务器进行tcp连接,然后向服务器发送测试数据,模拟多用户IP地址不同大小和不同频率的压力访问,从而对Web服务器的网络性能进行测试,且尽量与实际上线的情况保持一致。
在以下的实施例中,伪造IP单元是指一个用于伪造IP的压力工具,其可生成不断变化的IP;设置路由单元是指一个可以在工作帐号下添加、删除及查看路由的单元。
如图1所示,为本发明第一个方面一具体实施例的流程图,包括:
步骤101、将服务器和测试设备配置在同一个虚拟局域网(Virtual LocalArea Network,以下简称:VLAN)中,并将伪造IP的路由插入到所述服务器的路由表中。
假设测试设备的IP为IP1,服务器的IP为IP2,服务器和测试设备在同一个VLAN中,IP1与IP2为同一网段。根据压力测试所需要的压力,预先配置一伪造IP段,该IP段内包括一定范围的伪造IP,将其添加到伪造IP单元中,通过伪造IP单元随机生成该预先配置的伪造IP段内的伪造IP;为了能使服务器返回包能到达测试设备上,预先配置的伪造IP段内的伪造IP与IP1和IP2不在同一网段,因为如果伪造IP与IP2在同一网段,服务器在发送tcp3次握手中的第二个数据包时,即服务器的返回包时,就不会查询路由表,而直接查询地址解析协议(Address Resolution Protocol,以下简称ARP)表发送,这样返回包就不能正确到达测试设备。
在服务器上,通过设置路由单元,使用工作账号修改IP路由表,将伪造IP的路由插入到服务器的路由表中,并将预先配置IP段的网关设置为测试设备的IP1,这样所有伪造IP的路由均指向IP1。
当一个伪造IP要向服务器发送测试数据前,首先要和服务器建立tcp连接,每个伪造IP与服务器建立tcp连接,均要执行下面的步骤102、103和104。
步骤102、测试设备发送源地址为伪造IP的数据包,向服务器发起tcp连接请求。
该数据包是测试设备的某个伪造IP向服务器发送的第一个tcp数据包,该数据包的IP头和tcp头均为伪造的信息,设该伪造IP为IP3,IP3与IP1和IP2不在同一网段;该数据包的源IP为IP3,目的IP为IP2,数据包在发送的过程中,检测到是从测试设备发送到服务器,又由于测试设备IP1和服务器的IP2在同一个网段,所以该数据包发送过程为二层转发,即在数据链路层即可完成转发;该二层转发的过程中,测试设备向服务器发送的数据包中封装有测试设备随机生成的序列号A。
步骤103、服务器接收测试设备发送来的数据包,根据服务器的路由表将返回包发送给测试设备。
服务端接收到测试设备发送来的数据包后,提取该数据包中的序列号A,在序列号A的基础上加1生成确认号A+1,并将确认号A+1和服务器随机生成的序列号B封装在返回包中。
返回包的源IP为IP2,目的IP为IP3,由于IP2和IP3不在同一网段,所以该返回包的发送过程为三层转发,即需要经过路由转发;因为IP3是伪造的IP,而真实的IP3存在于网络中,为了能完成压力测试,不能让测试数据包发送到真实的IP3处,使测试设备接收到所有发送到IP3的数据包,所以在步骤101中,预先设置了所有伪造IP的路由均指向测试设备的IP1;因此,在路由转发过程中,伪造IP3指向的路由为IP1,返回包被成功转发至测试设备。
步骤104、测试设备侦听所有到达的数据包,过滤出服务器的返回包,并根据返回包伪造出确认包发送给服务器,完成tcp连接。
因为测试设备和服务器连接在网络中,测试设备会接收到来自于许多设备发送来的数据包,测试设备利用PF_PACKET类型的socket接口侦听所有到达的数据包,根据数据包中封装的源IP地址、目的IP地址、序列号、确认号以及端口号等信息过滤出服务器的返回包,封装在服务器的返回包中的信息为:源IP地址为IP2,目的IP地址为IP3,序列号为B,确认号为A+1,提取出上述信息即可过滤出服务器的返回包;服务器对确认号A+1和序列号B进行处理,分别生成序列号A+1和确认号B+1,将其封装在第3个tcp数据包,即确认包中;当测试设备把该确认包发送给服务器后,测试设备即确认与服务器建立tcp连接;当服务器接收到该确认包后,提取封装在该确认包中的确认号B+1,也确认和测试设备建立tcp连接。
通过执行步骤102、103和104,伪造IP3与服务器建立tcp连接,随即执行步骤105。
步骤105、在完成tcp连接后,测试设备向服务器发送测试数据。
在伪造IP3与服务器建立tcp连接后,则向服务器发送测试数据,以进一步测试服务器在压力测试下的网络性能。
上述步骤101中,可以通过在root帐号下置s位的方式,即设置位于user或group权限组的第三位置,使得以后修改路由表可以使用工作帐号。
在上述步骤中,测试设备向服务器发送的数据包、确认包和测试数据,以及服务器向测试设备发送的返回包均为单播报文,因此,这些压力数据包不会到达VLAN内的其他主机上,也不会到达网关上,只会在测试设备与服务器之间流动,极大的减轻了VLAN内数据包的传送量。
在上述步骤101中,将一个以上的伪造IP的路由插入到服务器的路由表中,随后,每个伪造IP需执行步骤102、103、和104与服务器建立tcp连接,然后执行步骤105,从而通过使用一台压力机器完成多IP对服务器进行压力测试的过程,模拟多用户IP地址不同的压力;通过将服务器和测试设备配置在同一VLAN中,将伪造IP的路由插入到服务器的路由表中,克服了伪造IP连接难度大的问题,提高了压力能力;又由于将伪造IP的路由插入到服务器的路由表中,是通过在工作帐号下进行的,增强了测试系统的安全性。
本发明还可以通过防火墙技术来伪造IP,但需涉及操作系统内核的修改,提高了成本;本发明也可以不修改服务器的路由,而使用猜测IP头中序列号的方法完成tcp连接。
本领域的普通技术人员可以理解,tcp的连接过程均遵循因特网标准,因此,本实施例所述的tcp连接过程适用于所有基于tcp/ip协议的环境,而不仅限于linux环境,同时还适用于微软系列操作系统等其他环境。
本发明第二个方面一具体实施例:
如图2所示,为本发明第二个方面一具体实施例的示意图。本发明对服务器的网络性能进行压力测试的测试设备,包括:伪造IP单元21,用于生成预先配置的伪造IP段内的伪造IP;数据单元22,用于生成测试数据;侦听单元23,用于侦听所有到达所述测试设备的数据包,过滤出所述服务器发送来的返回包;发送单元24,用于向所述服务器发送数据包,根据所述服务器的返回包伪造出确认包,并将所述确认包发送给所述服务器;还用于将所述数据单元生成的测试数据发送给所述服务器;接收单元25,用于接收所述服务器发送的返回包。
上述测试设备中,通过设置伪造IP单元21,使得一台压力机器发出多个IP请求,模拟多用户IP地址不同的压力。
本发明第三个方面一具体实施例:
如图3所示,为本发明第三个方面一具体实施例的示意图。本发明对服务器的网络性能进行压力测试的系统,包括测试设备31和服务器32,测试设备31模拟一台压力机器,服务器32为一种Web服务器。
其中服务器32包括:设置路由单元,用于实现在工作账号下将伪造IP的路由插入到服务器32的路由表中;测试设备31,用于生成伪造IP和测试数据以及与服务器32之间的信息交互。
其中,测试设备31包括:
伪造IP单元21,用于生成预先配置的伪造IP段内的伪造IP;数据单元22,用于生成测试数据;侦听单元23,用于侦听所有到达所述测试设备31的数据包,过滤出所述服务器32发送来的返回包;发送单元24,用于向所述服务器32发送数据包,根据所述服务器32的返回包伪造出确认包,并将所述确认包发送给所述服务器32;还用于将所述数据单元生成的测试数据发送给所述服务器32;接收单元25,用于接收所述服务器32发送的返回包。
上述系统中,通过设置伪造IP单元,使得一台压力机器发出多个IP请求,模拟多用户IP地址不同的压力;通过设置路由模块,使得能够在工作账号下修改路由,增强了测试系统的安全性。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。