生活场景中,经常会看到,局域网内,多个不同客户端设备,将数据发送到服务器上。而服务器要求一个客户端一个IP。
如图1-1所示,多个客户端A、B、C通过路由器M连接到服务器N。
作为一名“搬砖”码农,要把服务器最大连接客户端设备的数量,即“极限”值的需求考虑进去,进行设计、编要写软件,那么要如何验证服务器端是否能承受极限个设备端的连接量呢?在实际测试中,是否必须使用多个真实的物理设备端连接服务端进行验证呢?答案是,否。
我们可以在同一台客户端设备上模拟多个虚拟IP,并发多个网络线程,将数据发送到服务端。如图1-2,客户端A虚拟多个IP。而LoadRunner压力测试软件是可以根据各种协议并发测试,且虚拟多个IP。
不过今天只是浅谈windows虚拟IP的原理和方法。
虚拟IP我们需要了解两个知识点。TCP/IP四层模型和ARP。
TCP/IP四层模型:
如图1-3。
在一个局域网内,如图A,设备A发送数据到服务器M时,需要知道服务器的IP和MAC地址,而IP地址是一个逻辑 地址,在以太网中MAC地址是真正用来进行数据传输的物理地址,但是网络层和传输层只知道服务器M的IP地址,那么服务器MAC地址要如何获取呢?
因为每台主机中都有一个ARP高速缓存,存储同一个网络内的IP地址与MAC地址的对应关系,以太网中的主机发送数据时会先从这个缓存中查询目标IP对应的MAC地址,会向这个MAC地址发送数据。
ARP:
ARP又叫做地址解析协议,主要是用来将网络中的协议地址解析为我们本地的协议地址,就是将IP地址解析为MAC地址,工作在链路层。
如下图1-4所示,这是我的同一个局域网内的IP与MAC地址映射表。
虚拟IP:
虚拟IP主要是用来网络地址转换,网络容错和可移动性。在一台设备上虚拟的IP并不是真实的IP,所有通过这个虚拟IP发出或者接收的数据包,都会通过真实的MAC地址流出或者流进。
方法:
一. 使用loadrunner等专业测试软件。
二. Windows操作系统netsh命令提供增加、删减IP的方法。
详细介绍方法二:
硬件:台式或者笔记本(可插网口的PC端),适配网线,路由。
1. 使用网线连接PC端与路由。并设置PC端为固定IP(我的IP是192.168.1.100),网段与路由一致。
2. 打开网络和共享中心,查看网络属性是以太网还是本地连接。我的PC端是以太网。
3. 增加IP的方法,通过终端输入命令:netsh interface ipv4 add address name="以太网" addr=192.168.1.101 mask=255.255.255.0
4. 删减IP的方法,通过终端输入命令:netsh interface ipv4 delete address name="以太网" addr=192.168.1.101 gateway=all
为了方便,以上命令可以写进.bat脚本。
最后判断虚拟IP是否成功,可使用ipconfig查看网络信息。