栏目头部广告

UDP测试解决方案

一、UDP介绍

1.1 UDP特点

(1)无连接的,即发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延

(2)不保证可靠交付,因此主机不需要为此复杂的连接状态表

(3)面向报文的,意思是 UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界,在添加首部后向下交给 IP 层

(4)没有阻塞控制,因此网络出现的拥塞不会使发送方的发送速率降低(常用于压测场景)

(5)支持一对一、一对多、多对一和多对多的交互通信,也即是提供广播和多播的功能

(6)首部开销小,首部只有 8 个字节,分为四部分

UDP测试解决方案(图1)

1.2 TCP/UDP对比

UDP测试解决方案(图2)

二、nc工具简介

nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具。

2.1 nc的作用

(1)实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口

(2)端口的扫描,nc可以作为client发起TCP或UDP连接

(3)机器之间传输文件

(4)机器之间网络测速                                                                                                                                                            

2.2 nc安装

[root@ansible ~]# yum install nc -y

2.3 启动服务端

[root@ansible ~]# nc -uvl 10.25.25.25 6666
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Listening on 10.25.25.25:6666

 # -u 指定nc使用UDP协议,默认为TCP
 # -v 输出详细的交互信息和错误信息
 # -l 侦听模式即server模式
 # -s 指定发送数据的源IP地址,适用于多网卡机 
 # -w 超时秒数,后面跟数字 
 # -z 表示zero,表示扫描时不发送任何数据

2.4 客户端启动测试

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

(1)客户端

[root@blogs-v2 ~]# echo "i am client." > t.txt
[root@blogs-v2 ~]# nc -u -w 1  10.25.25.25 6666 < t.txt    # 传送文件到服务端

(2)服务端

UDP测试解决方案(图3)

三、iperf工具简介

iperf是专门用于简化TCP性能优化的工具,使用它可以很容易地测量吞吐量带宽的最大值。当与UDP一起使用时,iperf还可以测量数据丢失延迟(抖动)。iperf可以在任何IP 网络上运行,包括本地以太网,因特网接入连接和Wi-Fi网络。使用iperf之前,必须安装两个组件:iperf 服务器(用于监听到达的测试请求)和iperf客户端(用于发起测试会话)。

3.1 参数解读

iperf -s                 # 服务端命令,即server模式
-f [b|B|k|K|m|M|g|G]     # f参数表示单位 
-i [2]                   # i参数表示测试开始到结束的间隔时间,单位s
-l                       # 缓冲区大小,默认是8KB,eg:iperf -c 222.35.11.23 -l 16 -m 显示tcp最大mtu值
-o                       # 将报告和错误信息输出到文件eg:iperf -c 10.25.25.25 -o /mnt/iperflog.txt 
-w [2000]                # 指定TCP窗口大小,单位是byte
-p [12000]               # p参数可指定端口号 
-u -b 10m                # udp 10mbps 测试
-B                       # 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数)
-m                       # 最大mpu测试
-P                       # 并行测试
-h                       # 帮助
-u                       # 使用UDP协议
-M                       # 设定TCP数据包的最大mtu值
-V                       # 传输ipv6数据包   server专用参数 
-N                       # 设定TCP不延时

client端参数:
iperf -c 10.1.1.1        # 客户端命令,即client模式
-d                       # d参数和r近似,并且功能更强,可同时测试双向数据
-n                       # 指定传输的字节数,eg:iperf -c 10.25.25.25 -n 100000
-r                       # r参数表示双向数据测试,但要先测c到s的带宽 
-t                       # 测试时间,默认10秒,eg:iperf -c 10.25.25.25 -t 5
-F                       # 指定需要传输的文件
-T                       # 指定ttl值

3.2 iperf安装

[root@ansible ~]# yum install iperf -y

3.3 启动服务端

[root@ansible ~]# iperf -s -u -p 6666
------------------------------------------------------------
Server listening on UDP port 6666
Receiving 1470 byte datagrams
UDP buffer size:  208 KByte (default)
------------------------------------------------------------

3.4 启动客户端

[root@blogs-v2 ~]# iperf -c 10.25.25.25 -u -p 6666
------------------------------------------------------------
Client connecting to 10.25.25.25, UDP port 6666
Sending 1470 byte datagrams, IPG target: 11215.21 us (kalman adjust)
UDP buffer size:  208 KByte (default)
------------------------------------------------------------
[  3] local 10.25.203.134 port 57442 connected with 10.25.25.25 port 6666
[ 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.024 ms    0/  892 (0%)

UDP测试解决方案(图4)

作者:UStarGao
链接:https://www.starcto.com/nettool/207.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处

UCloud云平台推荐


UCloud新用户专属注册连接

UCloud CDN超值特惠专场

UCloud全球云主机(UHost/VPS)大促页面

UCloud快杰云主机大促页面

加载中~
文章详情页广告

随便看看

底部广告
`