UDP/TCP怎么测呢?

2022-06-17 08:46:51 浏览数 (1)

背景

今天,有个朋友咨询我关于 UDP 协议的测试方法。在给他讲完之后我也顺手将大致的过程记录了下来,在此分享给大家。

因为其是测试 LB(Load Balance)UDP 协议的支持,关于服务端和客户端都需要自己来搭建。

测试工具选型

nc

nc 安装方便,使用简单,可以作为 server 实现 TCP/UDP 端口侦听,也可以作为 client 发起 TCP/UDP 连接。

iperf

安装也比较简单,支持 server 端和 client 端,是业内比较主流的灌包测速工具。在测速方面是比较好的选择。

开始测试

使用 nc

nc 安装

在服务端和客户端都安装 nc

代码语言:javascript复制
yum install nc

启动服务端

代码语言:javascript复制
[root@test ~]# nc -uvl 30.30.30.201 8787
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Listening on 30.30.30.201:8787

 # -u 使用UDP协议
 # -v 输出详细的交互信息和错误信息
 # -l 侦听模式即server模式

上面的命令中,建议使用网卡上配置的 IP,不建议使用 127.0.0.1 这种本地环回地址,可能会出现问题。

客户端启动测试

首先创建一个测试文件,然后通过 nc 将这个文件的内容通过 UDP 协议传送到服务端,观察服务端控制台。

客户端:

代码语言:javascript复制
echo "i am client." > t.txt

nc -u -w 1  30.30.30.201 8787 < t.txt

服务端:

根据服务的响应,我们已经能够判断 UDP 链路已经 OK,此时就可以将服务端对接到 LB 的实例上,我们通过访问 LBIP 和端口就能到达服务端。

对于数据的具体报文详情,我们可以在服务端绑定的网卡上抓包分析即可。

测速

关于 nc 的测速,我们可以通过如下方式进行。

服务端:

将收到的数据扔到黑洞中。

代码语言:javascript复制
nc -u -l 9999 > /dev/null

客户端:

将无数的 0 通过 UDP 扔给服务端。

代码语言:javascript复制
nc -u 30.30.30.201 8787 < /dev/zero

使用 iperf

iperf 安装

在服务端和客户端都安装 iperf

代码语言:javascript复制
yum install iperf

启动服务端

代码语言:javascript复制
[root@ ~]# iperf -s -u -p 8899
------------------------------------------------------------
Server listening on UDP port 8899
Receiving 1470 byte datagrams
UDP buffer size:  208 KByte (default)
------------------------------------------------------------

 # -s 以server模式启动
 # -u 使用UDP协议
 # -p 指定侦听端口

启动客户端

代码语言:javascript复制
[root@agent-1 ~]# iperf -c 30.30.30.201 -u -p 8899
------------------------------------------------------------
Client connecting to 30.30.30.201, UDP port 8899
Sending 1470 byte datagrams, IPG target: 11215.21 us (kalman adjust)
UDP buffer size:  208 KByte (default)
------------------------------------------------------------
[  3] local 30.30.30.147 port 52522 connected with 30.30.30.201 port 8899
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec
[  3] Sent 892 datagrams
[  3] Server Report:
[  3]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec   0.042 ms    0/  892 (0%)

# -c 指定client的身份
# -u 使用UDP协议
# -p 指定服务端端口

测试结果

如上,我们除了在客户端能够看到测试结果,服务端也有详细的测试结果。

根据 iperf 的测试结果,我们不但能够知道当前的 UDP 服务正常,而且带宽为: 1.05 Mbits/sec

关于 UDP 的测试我们今天先介绍到这里,后续更精彩。

nc的更多用法

测试TCP链接

启动服务端

代码语言:javascript复制
nc -nvl 192.168.0.4 6901

客户端

代码语言:javascript复制
nc -v 192.168.0.4 6901

链接成功后,还可以直接在控制台进行输入聊天。

验证端口连通性

命令:nc -zv 172.1.2.3 8899

验证UDP端口

命令:nc -uvz 192.168.0.125 111

端口扫描

命令:nc -v -w 1 172.16.7.78 -z 22-81

0 人点赞