【Win】PsPing:深入网络性能测试与故障排查

在维护 Azure 虚拟机的过程中,可能会遇到一些网络连通性的问题。例如,当您尝试从个人 PC 上 ping 虚拟机的公网 IP 地址时,可能会发现出现 “Request time out” 的信息,导致无法 ping 通。这种情况的发生,通常是因为在 Azure 环境中,出于安全考虑,ICMP 包被设计为无法通过防火墙和负载均衡器。这就导致了传统的 ping 命令无法直接用于测试 Azure 中虚拟机和服务的连通性。

正是在这样的背景下,我首次接触到了 PsPing —— 一款强大的网络测试工具,由微软 Sysinternals 套件提供。PsPing 不仅继承了传统 ping 命令的功能,还扩展了 TCP ping、延迟测试和带宽测量等高级特性,使其成为解决 Azure 网络测试难题的理想选择。

下载安装

下载地址:https://learn.microsoft.com/zh-cn/sysinternals/downloads/psping

  1. 下载完PSTools.zip包之后,放到任意本地磁盘(例:C:\Windows\PSTools )内,解压之后如下:
    在这里插入图片描述

  2. 将解压地址放到环境变量的PATH中
    在这里插入图片描述

  3. 使用CMD命令行工具,输入psping,可见psping四个主要功能的帮助命令,四个功能分别是ICMP Ping、TCP Ping、延迟测试、带宽测试。
    在这里插入图片描述

使用方法

  1. ICMP ping
    在这里插入图片描述
    命令 psping -n 10 -w 2 www.baidu.com 使用了 PsPing 工具的两个参数 -n-w 来对 www.baidu.com 进行网络测试。
    下面是该命令参数的详细解释:

    • -n 10:这个参数指定了 PsPing 将发送的 ECHO 请求的数量。在这个例子中,PsPing 将发送 10 个 ICMP 或 TCP 请求到目标主机。这个选项可以用来测试一定数量级的网络响应情况。

    • -w 2:这个参数后面跟的数字代表 “热身” 测试的数量,即在正式的测试之前进行的测试次数。热身测试有助于初始化网络连接,避免因连接建立时间导致的延迟测量不准确。在这个例子中,PsPing 会先发送 2 个热身请求,然后才开始计算测试结果。

    • www.baidu.com:这是 PsPing 测试的目标主机名。PsPing 将尝试解析这个域名到相应的 IP 地址,并对该地址执行指定数量的网络请求。

    总结来说,该命令将对 www.baidu.com 执行总共 12 次(10次正式测试 + 2次热身测试)的网络连通性测试,测试结果将基于这 10 次正式测试的数据生成。

  2. TCP ping
    在这里插入图片描述命令 psping -n 10 -w 2 www.baidu.com:443 使用 PsPing 工具对 www.baidu.com 网站的端口 443 执行特定的网络测试。下面是该命令各部分的详细解释:

    • -n 10:此参数指定 PsPing 将发送的 ECHO 请求或探针的数量。在这个例子中,PsPing 将向目标发送 10 个请求。这些请求可以是基于 ICMP 的(如果 ICMP 未被阻止)或者是 TCP 连接尝试(如果 ICMP 被阻止或未响应)。

    • -w 2:这个参数定义了在主要测试序列开始前的 “热身” 请求数量。热身可以帮助确保网络连接已经建立,并且任何网络设备都已经准备好处理即将到来的测试流量。在这个例子中,PsPing 将首先发送 2 个热身请求。

    • www.baidu.com:这是要进行网络测试的目标主机的域名。PsPing 将尝试解析这个域名到相应的 IP 地址。

    • :443:指定了目标端口号 443。端口 443 通常用于 HTTPS 连接,这意味着 PsPing 将尝试建立到 www.baidu.com 的安全 HTTP 服务端口的 TCP 连接。

    综上所述,该命令将向 www.baidu.com 的 HTTPS 端口 443 发送 12 次请求(包括 2 次热身请求和 10 次正式测试请求)。这些请求将用于测量到目标端口的网络延迟、检查连接稳定性以及评估目标端口的可达性。

    如果 ICMP 请求在网络中被阻止,PsPing 将使用 TCP 来执行测试。在这种情况下,PsPing 尝试与指定端口建立 TCP 连接,以此来模拟传统 ICMP ping 的功能。输出结果将提供关于每个请求的延迟时间,以及可能发生的错误或超时信息。

  3. 延迟分析

    1. 先用PSPING起一个服务
      在这里插入图片描述命令 psping -s 10.2.12.129:888 用于启动 PsPing 工具的服务器模式,其参数 -s 后面跟随的是指定的 IP 地址和端口号。下面是该命令各部分的详细解释:

      • -s:这个参数告诉 PsPing 以服务器模式运行。在服务器模式下,PsPing 将在指定的 IP 地址和端口上监听传入的连接请求,而不是主动发送请求到远程服务器。

      • 10.2.12.129:这是 PsPing 服务器模式下要监听的 IP 地址。您需要确保该地址是分配给运行 PsPing 的主机的接口上的一个有效 IP 地址。

      • :888:这是 PsPing 将在其上监听的端口号。端口 888 在这个上下文中被指定为 PsPing 将等待客户端连接的网络端口。

      综上所述,该命令将 PsPing 设置为在 IP 地址 10.2.12.129 的端口 888 上作为一个服务器,准备接受来自网络上其他 PsPing 客户端的连接请求。这可以用于进行延迟和带宽测试,而无需主动 ping 远程主机。

    2. 客户端访问
      在这里插入图片描述命令 psping -l 8k -n 10000 10.2.12.129:888 是 PsPing 工具的一个使用示例,它结合了几个不同的参数来执行网络性能测试。下面是该命令各部分的详细解释:

      • -l 8k:此参数指定了发送的每个数据包的大小。-l 后面跟随的 8k 表示每个数据包的大小为 8 kilobytes(千字节)。这是进行带宽测试或延迟测试时使用的负载大小。

      • -n 10000:此参数定义了要发送的请求或数据包的总数。在这个例子中,-n 10000 表示 PsPing 将发送 10,000 个数据包。

      • 10.2.12.129:888:这是目标服务器的 IP 地址和端口号。IP 地址 10.2.12.129 是测试将要发送数据包到的服务器的地址,而 :888 指定了服务器上用于接收这些数据包的端口。

  4. 带宽分析
    在这里插入图片描述命令 psping -b -l 8000k -n 10000 10.2.12.129:888 用于执行网络带宽测试,具体参数解释如下:

    • psping:这是启动 PsPing 工具的命令。

    • -b:此参数指示 PsPing 执行带宽测试。带宽测试会尝试衡量网络链路的最大传输速率。

    • -l 8000k:此参数指定了每个测试数据包的大小。-l 后面跟随的 8000k 表示每个数据包的大小为 8000 kilobytes(千字节),即 8 兆字节(MB)。这比一般的 ICMP ping 数据包大得多,因此可以用于测试网络在传输大量数据时的性能。

    • -n 10000:此参数定义了要发送的测试数据包的总数。在这个例子中,PsPing 将发送 10000 个大小为 8000k 的数据包。

    • 10.2.12.129:888:这是目标服务器的 IP 地址和端口号。IP 地址 10.2.12.129 是测试将要发送数据包到的服务器的地址,而 :888 指定了服务器上用于接收这些数据包的端口。

·图中返回结果显示:总共发了8个T,最大速度711.71 MB/s, 平均135.83 MB/s。

PSTools

PsTools 套件是免费的,常用于系统管理员和 IT 专业人员的工具箱中,用于执行各种系统管理和故障排除任务。这些工具可以在命令行环境下提供强大的功能,帮助用户处理日常的系统管理任务,如远程执行服务管理、监控进程活动、查询系统信息等。除了上面介绍的psping这个工具外,PSTools还包含以下功能:

psexec:在远程系统上执行程序,相当于远程运行命令提示符中的命令。
psfile:显示打开的文件及其拥有者,或者显示特定文件被哪些进程打开。
psgetsid:显示用户账户的 SID(安全标识符)。
psinfo:显示本地或远程系统的信息,如 CPU 类型、物理内存、操作系统版本等。
pskill:结束一个或多个正在运行的进程。
pslist:显示运行在远程系统上的进程列表。
psloggedon:显示当前登录到本地或远程 Windows 系统的用户。
psloglist:显示 Windows 事件日志中条目的摘要。
pspasswd:远程更改计算机的密码。
psservice:管理和查询 Windows 服务,包括启动、停止、暂停和继续服务。
psshutdown:关闭或重新启动远程系统。
pssuspend:挂起或恢复一个或多个在运行的进程。

参考

  • https://learn.microsoft.com/zh-cn/sysinternals/downloads/psping
  • https://learn.microsoft.com/zh-cn/sysinternals/downloads/pstools

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/578347.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++打怪之路Lv3】-- 类和对象(上)

🌈 个人主页:白子寰 🔥 分类专栏:C打怪之路,python从入门到精通,数据结构,C语言,C语言题集👈 希望得到您的订阅和支持~ 💡 坚持创作博文(平均质量分82)&#…

IDEA上配置Maven环境

1.选择IDEA中的Setting 2.搜索maven 3.设置IDEA使用本地安装的Maven,并修改配置文件路径 配置文件,本地仓库,阿里云仓库配置及路径教程 在IDEA上配置完成。

Java学习路线及自我规划

荒废了一段时间,这段时间的总结开始了JavaWeb的学习但是困难重重,例如Maven,Vue的路由等,所以我反省了一段时间,因为基础薄弱,加之学习的资源是速成视频,导致大厦将倾的局面(也算不上…

Golang | Leetcode Golang题解之第52题N皇后II

题目: 题解: func totalNQueens(n int) (ans int) {columns : make([]bool, n) // 列上是否有皇后diagonals1 : make([]bool, 2*n-1) // 左上到右下是否有皇后diagonals2 : make([]bool, 2*n-1) // 右上到左下是否有皇后var backtrack func(int)…

使用预训练模型构建自己的深度学习模型(迁移学习)

在深度学习的实际应用中,很少会去从头训练一个网络,尤其是当没有大量数据的时候。即便拥有大量数据,从头训练一个网络也很耗时,因为在大数据集上所构建的网络通常模型参数量很大,训练成本大。所以在构建深度学习应用时…

【redis】Redis数据类型(二)Hash类型

目录 Hash类型介绍特性hash 的内部编码方式/底层结构hashtableziplistlistpack 适用场景举例 常用命令hset示例 hsetnx示例: hmset示例 hget示例 hmget示例 hgetall示例 hdel示例 hlen示例 hexists示例 hincrby示例 hincrbyfloat示例 hkeys示例 hvals示例 Hash类型介…

VS2019编译OSG3.7.0+OSGEarth3.3+OSGQt5.15.2时遇到的问题及解决方法

注:本次编译以文章《VS2019编译OSG3.7.0+OSGEarth3.3+OSGQt》为基础搜集资料并进行编译 一 OSG编译 1.Osg3.7.0编译中,cmake阶段按照文章步骤即可。 2.另外,还需要对以下三项进行设置,参照《OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个…

RustGUI学习(iced)之小部件(二):如何使用滑动条部件

前言 本专栏是学习Rust的GUI库iced的合集,将介绍iced涉及的各个小部件分别介绍,最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个,目前处于发展中(即版本可能会改变),本专栏基于版本0.12.1. 概述…

mybatis基本使用

文章目录 1. mybatis2. 基本使用(1) maven坐标(2) 配置文件编写(3) 数据库操作(4) 注解查询 2. 基本配置(1) 读取外部配置文件(2) mapper映射 3. 映射文件查询删除/修改/新增 动态sql 1. mybatis MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高…

CSS盒子模型(如果想知道CSS有关盒子模型的知识点,那么只看这一篇就足够了!)

前言:在网页制作的时候,我们需要将网页中的元素放在指定的位置,那么我们如何将元素放到指定的位置上呢?这时候我们就需要了解盒子模型。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSD…

sCrypt全新上线RUNES功能

sCrypt智能合约平台全新上线一键etch/mint RUNES功能! 请访问 https://runes.scrypt.io/ 或点击阅读原文体验! 关于sCrypt sCrypt是BSV区块链上的一种智能合约高级语言。比特币使用基于堆栈的Script语言来支持智能合约,但是用原生Script编…

网络靶场实战-物联网安全Unicorn框架初探

背景 Unicorn 是一款基于 QEMU 的快速 CPU 模拟器框架,可以模拟多种体系结构的指令集,包括 ARM、MIPS、PowerPC、SPARC 和 x86 等。Unicorn使我们可以更好地关注 CPU 操作, 忽略机器设备的差异。它能够在虚拟内存中加载和运行二进制代码,并提…

密码加密案例

文章目录 描述思路错误关于增强for循环改变不了数组的值这一现象的疑问代码反思 描述 思路错误 应该是将其放入数组,而不是单纯的读到,因为你要对每一位数字进行操作 关于增强for循环改变不了数组的值这一现象的疑问 我们尝试使用增强for循环 键盘输…

uniapp使用地图开发app

使用uniapp开发app中使用到地图的坑: 1、简单使用地图的功能比较简单,仅使用到地图选点和定位功能:(其中问题集中在uni.chooseLocation中)下面是api官网地址 uni.getLocation(OBJECT) | uni-app官网 官方建议app端使…

迁移学习基础知识

简介 使用迁移学习的优势: 1、能够快速的训练出一个理想的结果 2、当数据集较小时也能训练出理想的效果。 注意:在使用别人预训练的参数模型时,要注意别人的预处理方式。 原理: 对于浅层的网络结构,他们学习到的…

视频批量剪辑新纪元:轻松调整音频采样率,一键实现高效视频处理!

视频剪辑已成为我们日常生活和工作中不可或缺的一部分。然而,面对大量的视频文件,如何高效地进行批量剪辑,同时又能轻松调整音频采样率,成为了许多视频制作人员、自媒体从业者、教育者和学生的共同需求。 第一步,进入…

[C++基础学习]----02-C++运算符详解

前言 C中的运算符用于执行各种数学或逻辑运算。下面是一些常见的C运算符及其详细说明:下面详细解释一些常见的C运算符类型,包括其原理和使用方法。 正文 01-运算符简介 算术运算符: a、加法运算符():对两个…

4.27日学习打卡----初学Redis(四)

4.27日学习打卡 目录: 4.27日学习打卡一. Redis的配置文件二. Redis构建Web应用实践环境搭建redis的优点引入本地缓存Google 开源工具GuavaGuava实现本地缓存 一. Redis的配置文件 在Redis的解压目录下有个很重要的配置文件 redis.conf ,关于Redis的很多…

达梦(DM) SQL日期操作及分析函数

达梦DM SQL日期操作及分析函数 日期操作SYSDATEEXTRACT判断一年是否为闰年周的计算确定某月内第一个和最后一个周末某天的日期确定指定年份季度的开始日期和结束日期补充范围内丢失的值按照给定的时间单位查找使用日期的特殊部分比较记录 范围处理分析函数定位连续值的范围查找…

如何通过安全数据传输平台,保护核心数据的安全传输?

在数字化的浪潮中,企业的数据安全传输显得尤为关键。随着网络攻击手段的日益复杂,传统的数据传输方式已不再安全,这就需要我们重视并采取有效的措施,通过安全数据传输平台来保护核心数据。 传统的数据传输面临的主要问题包括&…