关于检查UDP协议端口是否畅通以及流量观测的方法

与检测TCP端口相比,检测UDP端口会稍微繁琐一点。通常情况下,我们可以使用nc命令来监听TCP端口,并直接在客户端进行连接,然而使用nc来观测UDP端口时经常会遇到问题。

在实际工作中,防火墙在开放时,一般不会同时开放UDP端口,容易导致网络层面的误判。当TCP端口通畅时,我们很容易默认UDP端口的防火墙也已开启,这种假设往往会造成问题。

因此这边建议直接使用iperf来进行检测:

  • server端启动udp端口:iperf -s -u -p 30002

  • client端进行流量的发起:iperf -c 120.xxx.xxx.xxx -u -b 10M -i 1 -t 30 -p 30002

这条命令是使用 iperf 工具进行网络性能测试的命令。下面是各个选项的解释:

iperf: 这是执行iperf命令的命令本身。

-c 120.xxx.xxx.xxx: 这指定了iperf客户端连接的目标服务器的IP地址或主机名。在这个命令中,120.xxx.xxx.xxx 是目标服务器的IP地址。

-u: 这是一个选项,指示iperf在UDP模式下运行。UDP是一种无连接的传输协议,相对于TCP,它不提供可靠的数据传输,但通常速度更快。

-b 10M: 这个选项设置iperf客户端发送数据的带宽限制。在这个命令中,10M 指定了带宽限制为10兆比特/秒。

-i 1: 这个选项设置iperf报告的间隔时间,以秒为单位。在这个命令中,1 指定了每秒生成一个报告。

-t 30: 这个选项设置iperf测试的持续时间,以秒为单位。在这个命令中,30 指定了测试持续30秒。

-p 30002: 这个选项指定了iperf客户端连接到服务器时使用的端口号。在这个命令中,30002 是端口号。

综合起来,这个命令的作用是在UDP模式下连接到指定的服务器IP地址,限制带宽为10兆比特/秒,每秒生成一个报告,持续进行30秒的测试,连接使用端口号30002。

如何在安卓android使用iperf命令

安卓(Android)版本 iperf下载地址:https://sourceforge.net/projects/iperf2/

如何计算udp的流量情况

这边整理了一个简单的脚本,使用tcpdump去计算某个端口使用的流量情况:

#!/bin/bash

total_bytes=0

sudo tcpdump -l -i any -n udp port 30002 2>/dev/null | while read line; do

    bytes=$(echo "$line" | awk '{print $NF}')

    total_bytes=$((total_bytes + bytes))

    #echo "Total bytes received on port 30001: $((total_bytes / 1024 / 1024)) MB" #输出成MB

	echo "Total bytes received on port 30001: $((total_bytes)) bytes" #直接输出成字节

done