IPerf——网络测试工具介绍与源码解析(1)

简介:

IPerf是一个开源的测试网络宽带并能统计并报告延迟抖动、数据包丢失率信息的控制台命令程序,通过参数选项可以方便地看出,通过设置不同的选项值对网络带宽的影响,对于学习网络编程还是有一定的借鉴意义,至少可以玩上一段时间。

IPerf开始出现的时候是在03年,版本是1.7.0,在网上找到的仅有的系列源码解析篇 http://blog.chinaunix.net/uid/11568125/cid-131106-abstract-1.html 就是基于1.7.0 进行介绍和解析的,貌似1.7.0还是使用C++编写比较多,后面到了IPerf2版本,C++和C结合,现在出来一个法国人团队另起炉灶重构出不向下兼容的IPerf3,他们开了一个论坛专门讨论维护,但因为是法语所以跟我也无法沟通,所以也没怎么上去看,一开始入门的时候就只能上处链接的文章,还好有所帮助。

现在IPerf的官方网站为:https://iperf.fr/

IPerf的一些特性:

  •  开源,每个版本的源码都能进行下载和研习;
  • 跨平台,支持Windows Linux MacOS Android,现有支持不同平台的IPerf版本,UWP,Docker...很早之前就出来了一个JPerf(在IPerf的基础上添加了界面),有兴趣的同学可以找来看看;
  • 支持TCP、UDP协议,包括IPV4和IPV6,最新的IPerf还支持SCTP协
    • TCP
      • 测试网络带宽;
      • 报告MSS(最大报文段长度)、MTU(最大传输单元)的大小,在Windows上不支持;
      • 支持通过套接字缓冲区修改TCP窗口大小;
      • 支持多线程并发;
    • UDP
      • 客户端可创建指定大小的带宽流;
      • 统计数据包丢失、延迟抖动率等信息

 IPerf的简单使用示例:

IPerf通过选项 -c 和 -s 决定其当前是作为客户端程序还是作为服务端程序运行,当作为客户端程序运行时,-c 后面必须带所连接对端服务器的IP地址或域名

 

上面图片显示三种信息:本地设置信息,连接信息,传输信息,究竟其在程序设计中是如何打印出来的,看完接下来的源码解析希望你能够明白其中的原理 :)

 下面列举一些比较常用的选项参数,想要知道更多的选项参数,请查看官方网站的文档说明

选项参数  说明

[客户端]

-c host  以客户端模式运行,连接到IPerf服务端运行的主机IP地址或域名

-t ; -i    -t(timing)测试的时长;-i(interval)带宽报告周期性显示的间隔时间

-n  设置测试所发送的数据总量,#[KM] 覆盖-t选项

-d, -L  双向测试模式,客户端与服务端建立双向连接,并相互发送数据进行测试

-r, -L  交易模式,在客户端到服务端的测试结束后,执行服务端到客户端的测试

-P  设置客户端同时连接到服务端的并发数(在多线程允许的条件下)

[服务端]

-s  以服务端模式运行,等待客户端的连接请求

-D  Unix平台以后台守护程序运行;Windows平台下以服务形式运行

-w  设置TCP窗口大小或UDP接收缓冲区大小为其指定的值

目录
相关文章
|
6月前
|
安全 网络协议 算法
Nmap网络扫描工具详细使用教程
Nmap 是一款强大的网络发现与安全审计工具,具备主机发现、端口扫描、服务识别、操作系统检测及脚本扩展等功能。它支持多种扫描技术,如 SYN 扫描、ARP 扫描和全端口扫描,并可通过内置脚本(NSE)进行漏洞检测与服务深度枚举。Nmap 还提供防火墙规避与流量伪装能力,适用于网络管理、渗透测试和安全研究。
940 1
|
7月前
|
Web App开发 API 虚拟化
Cisco Modeling Labs (CML) 2.9.0 - 网络仿真工具
Cisco Modeling Labs (CML) 2.9.0 - 网络仿真工具
482 15
Cisco Modeling Labs (CML) 2.9.0 - 网络仿真工具
|
8月前
|
监控 安全 网络安全
网络安全工具及其使用方法:保护数字安全的第一道防线
在信息时代,网络攻击变得日益复杂且频繁,保护个人和企业数据安全的重要性日益凸显。幸运的是,各种网络安全工具为用户提供了有效的防护手段。从防火墙到密码管理器,这些工具覆盖了威胁检测、攻击防御和数据保护的方方面面。本文将介绍几款常用的网络安全工具,并提供其使用方法,以帮助您构建强大的网络安全防线。
279 1
|
8月前
|
监控 数据可视化 Java
VMware Aria Operations for Networks 6.14 - 网络和应用监控工具
VMware Aria Operations for Networks 6.14 - 网络和应用监控工具
167 0
VMware Aria Operations for Networks 6.14 - 网络和应用监控工具
|
9月前
|
运维 监控 Linux
网络延迟监测工具选择(第一篇)
**WGCLOUD**是一款开源免费的跨平台运维监控工具,支持Windows、Linux、MacOS等系统,具备网络延迟监测功能。其内置的**PING监测**模块可实时ping目标IP,图形化展示延迟趋势,并在目标IP不可达时发送告警通知。支持分组管理,操作简单便捷,适合运维人员高效监控网络状态。
|
10月前
|
网络协议 安全 Devops
Infoblox DDI (NIOS) 9.0 - DNS、DHCP 和 IPAM (DDI) 核心网络服务管理
Infoblox DDI (NIOS) 9.0 - DNS、DHCP 和 IPAM (DDI) 核心网络服务管理
408 4
|
11月前
|
存储 监控 算法
基于 Python 哈希表算法的局域网网络监控工具:实现高效数据管理的核心技术
在当下数字化办公的环境中,局域网网络监控工具已成为保障企业网络安全、确保其高效运行的核心手段。此类工具通过对网络数据的收集、分析与管理,赋予企业实时洞察网络活动的能力。而在其运行机制背后,数据结构与算法发挥着关键作用。本文聚焦于 PHP 语言中的哈希表算法,深入探究其在局域网网络监控工具中的应用方式及所具备的优势。
337 7
|
XML JavaScript Android开发
【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式
本文总结了Android中几种常用的网络技术,包括WebView、HttpURLConnection、OKHttp和XML的Pull解析方式。每种技术都有其独特的特点和适用场景。理解并熟练运用这些技术,可以帮助开发者构建高效、可靠的网络应用程序。通过示例代码和详细解释,本文为开发者提供了实用的参考和指导。
466 15
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
482 4
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

热门文章

最新文章

推荐镜像

更多
  • DNS