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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介:

本篇随笔讲述一下TCP协议下,双向测试模式和交易测试模式下客户端和服务端执行的情况;

双向测试模式:

官方文档的解释

Run Iperf in dual testing mode. This will cause the server to connect back to the client on the port specified in the -L option (or defaults to the port the client connected to the server on). This is done immediately therefore running the tests simultaneously. If you want an alternating test try -r.

客户端连接到服务端进行数据发送的同时,服务端通过客户端设置的监听端口(可通过-L选项另行设置)向客户端发起连接进行数据发送,达成双向测试的效果。其实换句话来说就是模拟全双工通信模式。

交易测试模式:

官方文档的解释

Run Iperf in tradeoff testing mode. This will cause the server to connect back to the client on the port specified in the -L option (or defaults to the port the client connected to the server on). This is done following the client connection termination, therefore running the tests alternating. If you want an simultaneous test try -d.

 客户端连接到服务端进行数据发送结束后,服务端随即通过客户端设置的监听端口(可通过-L选项另行设置)向客户端发起连接进行数据发送,相应的就是模拟半双工通信模式。

 

两者的区别在于服务端何时模拟客户端的功能开始往回连接。这点在IPerf中很容易就实现了。

其实thread_Settings结构中存在两个指向thread_Setting类型的指针变量,分别命名为runNow和runNext,以往介绍IPerf的随笔中指出过,thread_Settings包涵了线程运行时所需的全部信息,程序是根据该类型的变量生成各种类型的线程,runNow表示在创建当前的线程之前需要先创建runNow指向的线程,而runNext表示当前线程结束后才创建runNext所指向的线程。定位到具体的代码如下所示:

复制代码
复制代码
            if ( tempSettings != NULL ) 
            {
                client_init( tempSettings );
                if ( tempSettings->mMode == kTest_DualTest ) 
                {
#ifdef HAVE_THREAD
                    server->runNow =  tempSettings;
#else
                    server->runNext = tempSettings;
#endif
                } else // if tradoff mode
                {
                    server->runNext =  tempSettings;
                }
            }
复制代码
复制代码

 

双向测试和交易测试其实就是:

1. 在客户端添加服务端的功能,表现在开始时添加了一个监听者线程,接收到服务端连接过来的套接字后添加了一个服务端线程;

2. 在服务端线程添加了客户端线程。

需要注意的一点就是,客户端监听服务端连接过来的套接字时,不是随便谁的连接都在接收后将其放入客户端链表,它需要判断对端的地址是否是当前这端客户端线程所连接的服务端的地址,如果不是则将其丢弃,并重新监听,具体定位到代码表示如下:

复制代码
复制代码
            if ( client )
            {
                //检测发起反向连接的对端是不是用户指定的服务端
                if ( !SockAddr_Hostare_Equal( (sockaddr*) &mSettings->peer, (sockaddr*) &server->peer ) )
                {
                    // Not allowed try again
                    close( server->mSock );
                    if ( isUDP( mSettings ) ) 
                    {
                        mSettings->mSock = -1;
                        Listen();
                    }
                    continue;
                }
            }
复制代码
复制代码

 下面两张图展示双向测试模式下客户端和服务端的执行过程:

 

 

目录
相关文章
|
16天前
|
安全 虚拟化
在数字化时代,网络项目的重要性日益凸显。本文从前期准备、方案内容和注意事项三个方面,详细解析了如何撰写一个优质高效的网络项目实施方案,帮助企业和用户实现更好的体验和竞争力
在数字化时代,网络项目的重要性日益凸显。本文从前期准备、方案内容和注意事项三个方面,详细解析了如何撰写一个优质高效的网络项目实施方案,帮助企业和用户实现更好的体验和竞争力。通过具体案例,展示了方案的制定和实施过程,强调了目标明确、技术先进、计划周密、风险可控和预算合理的重要性。
40 5
|
18天前
|
SQL 安全 网络安全
网络安全的护城河:漏洞防御与加密技术的深度解析
【10月更文挑战第37天】在数字时代的浪潮中,网络安全成为守护个人隐私与企业资产的坚固堡垒。本文将深入探讨网络安全的两大核心要素——安全漏洞和加密技术,以及如何通过提升安全意识来强化这道防线。文章旨在揭示网络攻防战的复杂性,并引导读者构建更为稳固的安全体系。
31 1
|
26天前
|
SQL 安全 测试技术
网络安全的盾牌与剑——漏洞防御与加密技术解析
【10月更文挑战第28天】 在数字时代的浪潮中,网络空间安全成为我们不可忽视的战场。本文将深入探讨网络安全的核心问题,包括常见的网络安全漏洞、先进的加密技术以及提升个人和组织的安全意识。通过实际案例分析和代码示例,我们将揭示黑客如何利用漏洞进行攻击,展示如何使用加密技术保护数据,并强调培养网络安全意识的重要性。让我们一同揭开网络安全的神秘面纱,为打造更加坚固的数字防线做好准备。
39 3
|
15天前
RS-485网络中的标准端接与交流电端接应用解析
RS-485,作为一种广泛应用的差分信号传输标准,因其传输距离远、抗干扰能力强、支持多点通讯等优点,在工业自动化、智能建筑、交通运输等领域得到了广泛应用。在构建RS-485网络时,端接技术扮演着至关重要的角色,它直接影响到网络的信号完整性、稳定性和通信质量。
|
18天前
|
安全 前端开发 测试技术
如何选择合适的自动化安全测试工具
选择合适的自动化安全测试工具需考虑多个因素,包括项目需求、测试目标、系统类型和技术栈,工具的功能特性、市场评价、成本和许可,以及集成性、误报率、社区支持、易用性和安全性。综合评估这些因素,可确保所选工具满足项目需求和团队能力。
|
17天前
|
安全 网络协议 关系型数据库
最好用的17个渗透测试工具
渗透测试是安全人员为防止恶意黑客利用系统漏洞而进行的操作。本文介绍了17款业内常用的渗透测试工具,涵盖网络发现、无线评估、Web应用测试、SQL注入等多个领域,包括Nmap、Aircrack-ng、Burp Suite、OWASP ZAP等,既有免费开源工具,也有付费专业软件,适用于不同需求的安全专家。
36 2
|
16天前
|
监控 网络协议 Java
一些适合性能测试脚本编写和维护的工具
一些适合性能测试脚本编写和维护的工具
|
22天前
|
自然语言处理 并行计算 数据可视化
免费开源法律文档比对工具:技术解析与应用
这款免费开源的法律文档比对工具,利用先进的文本分析和自然语言处理技术,实现高效、精准的文档比对。核心功能包括文本差异检测、多格式支持、语义分析、批量处理及用户友好的可视化界面,广泛适用于法律行业的各类场景。
|
23天前
|
SQL 安全 算法
网络安全的屏障与钥匙:漏洞防护与加密技术解析
【10月更文挑战第31天】在数字世界的海洋中,网络安全是航船的坚固屏障,而信息安全则是守护宝藏的金钥匙。本文将深入探讨网络安全的薄弱环节——漏洞,以及如何通过加密技术加固这道屏障。从常见网络漏洞的类型到最新的加密算法,我们不仅提供理论知识,还将分享实用的安全实践技巧,帮助读者构建起一道更加坚不可摧的防线。
28 1
|
20天前
|
机器学习/深度学习 人工智能 自动驾驶
深入解析深度学习中的卷积神经网络(CNN)
深入解析深度学习中的卷积神经网络(CNN)
35 0

推荐镜像

更多