导语:之前写过一个测速小工具,使用的是speedtest-cli提供的api方法,当然除了这个还有其他的测速工具,今天就这个测速工具来说一下使用体验和感受。

  • 测速科普
  • 测速工具
  • DNS模块
  • 实战案例

测速科普

  • 上传下载

网络传输分为发送和接收数据两部分,上传就是发送数据,下载就是接收数据,传输的速度会受到带宽和设备的制约。

  • Byte和Bit

日常传输中大约1Mbps=1024/8KB/s=128KB/s(1/8),大B是byte字节,小b是bit比特,1B=8b。比如说你家里的宽带是100Mbps,那么理论上最大上传速度是12800KB/s,也就是12.5MB/s。

上网过程中的过程中网速快慢会受到来自自身电脑软硬件配置、游览网站位置、运营商切换等影响,所以实际网速会低于理论网速的。

  • 宽带速率

下面是一个常见的宽带速率对照表:

宽带速率单位用bps表示,即比特每秒钟传输多少信息,是bit per second的缩写,实际上说的1M带宽是1Mbps(兆比特每秒)。

  • Ping

ping是指一个数据包从用户的设备发送到测速点或站点,然后再返回所用的时间。一般以毫米奥计算,0-100ms都是正常的,不会有明显的卡顿。

  • 抖动

网络延迟是指信息从发送到接收经过的延迟时间,抖动是最大延迟和最小延迟的时间差,比如最大延迟30ms,最小延迟10ms,抖动就是20ms,标识网络的稳定性。

  • 丢包

丢包是指一个或者多个数据包无法通过网络到达目的地。原因可能有网络中路径衰落造成信号衰减,通道阻塞,损坏的数据包被拒绝通过,有缺陷的网上硬件,网络驱动程序有故障等等。

测速工具

说到测速,大家都应该不陌生吧,我们生活在这个网络时代,几乎家家户户都装了宽带,连接了无线,都要上网。

那么网速的快慢就决定了你的上网体验,网速快的话,购物,玩游戏,看剧刷视频都很棒的,但是很卡的网速什么也做不了。

接下来,我就说一下我平时用到的几款测速工具。

  • ookla
  • 测速网
  • 便民查询网

下面就来看一下测速的界面结果和差异。

ookla的测速结果


便民查询网的测速结果

测速网的测速结果

不过开发一款测速小工具就需要用到命令行工具了,可以自己选择测速供应商,获取专属测速结果,很方便开发者使用。

DNS模块

这个dns模块是nodejs自带的一个内部模块,用来进行dns相关的操作。下面就简单的几个方法进行说明。

  • 获取用户ip地址

进行dns首选获取用户的ip地址,然后再进行相应的操作。下面是我自己写的一个获取用户ip地址的方法,在这里写一下,一定要使用nodejs或者相关框架比如express才可以调用的。

// 获取用户ip地址
/*** req就是请求头*/
function getClientIP(req) {return req.headers['x-forwarded-for'] || // 判断是否有反向代理 IPreq.connection.remoteAddress || // 判断 connection 的远程 IPreq.socket.remoteAddress || // 判断后端的 socket 的 IPreq.connection.socket.remoteAddress;
};
  • 查询城市和运营商

这里要使用到一个npm包ip2region,这个可以查询ip所对应的运营商和城市。

通过上面方法拿到用户ip后,可以通过这个包提供的方法查询,支持ipv4和ipv6。

const ip2region = require('ip2region').default;
const query = new ip2region();
let ip = getClientIP(req); // 比如这里ip是120.25.58.68
const res1 = query.search(ip);
console.log(res1);
// { country: '中国', province: '广东省', city: '深圳市', isp: '阿里云' }const res2 = query.search('240e:47d:c20:1627:30a3:ba0d:a5e6:ec19');
console.log(res2);
// { country: "中国", province: "广东省", city: "", isp: "中国电信" }
  • 获取域名对应的ip

这里可以使用dns模块的lookupService方法,可以查询域名对应的ip地址。

const dns = require('dns');
dns.lookup('www.baidu.com', function (err, data) {  if (err) {throw new Error(err);} else {console.log(data); // 180.101.49.12}
})

dns的方法就到这里,具体的可以看Nodejs的dns文档的说明。

实战案例

接下来就通过speedtest.net提供的命令行工具测速一下网速。

安装命令行

  • macOS
brew tap teamookla/speedtest
brew update
brew install speedtest --force

或者

下载地址

  • Ubuntu/Debian
sudo apt-get install curl
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
sudo apt-get install speedtest
  • Fedora/Centos/Redhat
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.rpm.sh | sudo bash
sudo yum install speedtest
  • FreeBSD
sudo pkg update && sudo pkg install -g libidn2 ca_root_nss
sudo pkg add "https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-freebsd12-x86_64.pkg"
# freeBSD 13 install
sudo pkg add "https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-freebsd13-x86_64.pkg"
  • windows

下载地址

  • Linux

x86_64

i386

armel

armhf

aarch64

查看帮助命令

Speedtest by Ookla is the official command line client for testing the speed and performance of your internet connection.Version: speedtest 1.2.0.84Usage: speedtest [<options>]-h, --help                        Print usage information-V, --version                     Print version number-L, --servers                     List nearest servers-s, --server-id=#                 Specify a server from the server list using its id-I, --interface=ARG               Attempt to bind to the specified interface when connecting to servers-i, --ip=ARG                      Attempt to bind to the specified IP address when connecting to servers-o, --host=ARG                    Specify a server, from the server list, using its host's fully qualified domain name-p, --progress=yes|no             Enable or disable progress bar (Note: only available for 'human-readable'or 'json' and defaults to yes when interactive)-P, --precision=#                 Number of decimals to use (0-8, default=2)-f, --format=ARG                  Output format (see below for valid formats)--progress-update-interval=#  Progress update interval (100-1000 milliseconds)-u, --unit[=ARG]                  Output unit for displaying speeds (Note: this is only applicablefor ‘human-readable’ output format and the default unit is Mbps)-a                                Shortcut for [-u auto-decimal-bits]-A                                Shortcut for [-u auto-decimal-bytes]-b                                Shortcut for [-u auto-binary-bits]-B                                Shortcut for [-u auto-binary-bytes]--selection-details           Show server selection details--ca-certificate=ARG          CA Certificate bundle path-v                                Logging verbosity. Specify multiple times for higher verbosity--output-header               Show output header for CSV and TSV formatsValid output formats: human-readable (default), csv, tsv, json, jsonl, json-prettyMachine readable formats (csv, tsv, json, jsonl, json-pretty) use bytes as the unit of measure with max precisionValid units for [-u] flag:Decimal prefix, bits per second:  bps, kbps, Mbps, GbpsDecimal prefix, bytes per second: B/s, kB/s, MB/s, GB/sBinary prefix, bits per second:   kibps, Mibps, GibpsBinary prefix, bytes per second:  kiB/s, MiB/s, GiB/sAuto-scaled prefix: auto-binary-bits, auto-binary-bytes, auto-decimal-bits, auto-decimal-bytes

获取网速服务商

speedtest --servers

结果是

Closest servers:ID  Name                           Location             Country
==============================================================================6715  China Mobile Zhejiang 5G       Hangzhou             China5396  China Telecom JiangSu 5G       Suzhou               China45170  China Unicom                   Wu Xi                China30852  Duke Kunshan University        Kunshan              China24447  China Unicom 5G                ShangHai             China25637  Chinamobile-5G                 Shanghai             China3633  China Telecom                  Shanghai             China36663  China Telecom JiangSu 5G       Zhenjiang            China26352  China Telecom JiangSu 5G       Nanjing              China5317  江苏电信5G                 Yangzhou             China

测试

我就选择第一个id为6715的中国移动浙江5G服务商吧。

speedtest --server-id=6715

测试结果为

   Speedtest by OoklaServer: China Mobile Zhejiang 5G - Hangzhou (id: 6715)ISP: China Telecom
Idle Latency:     9.50 ms   (jitter: 0.21ms, low: 9.33ms, high: 10.10ms)Download:    93.55 Mbps (data used: 58.3 MB)29.61 ms   (jitter: 3.47ms, low: 10.80ms, high: 44.25ms)Upload:    23.23 Mbps (data used: 40.7 MB)11.31 ms   (jitter: 6.19ms, low: 9.37ms, high: 335.13ms)Packet Loss:     0.0%

当然,以上是通过Linux的centos7发行版测试的,我们可以试一下node看看行不行。

node测试

  • 新建文件夹
mkdir speedtest
cd speedtest
npm init -y
  • 安装测试包
npm i speedtest-cli -g
  • 获取运营商
speedtest-cli --list --json
  • 测试开始

sid就是运营商的id。

speedtest-cli --share --json --server sid

刚刚试了下貌似不可以,去年我用的时候还是可以的,那就直接引入包测试下吧。

// speed.js
const speedtest = require('speedtest-cli');
console.log(speedtest);

测试结果如下:

START: 1663385827468
{}
received  0.01Mb 0%
received  0.21Mb 2%
received  3.02Mb 27%
received  7.74Mb 69%

没有达到想要的效果,那还是使用ookla家的测试命令行工具吧。

通过以上几个步骤就可以测试你的网速了。

写在最后

以上就是我之前开发测速小工具的一些心得体会,如果对此感兴趣的朋友,也可以试着体验一下哦。

测速工具使用心得体会相关推荐

  1. 电脑测速软件_不服跑个分!常见固态硬盘测速工具性价比盘点(上)

    尽管不像CPU的核心或线程数量那样直观,固态硬盘性能在近几年电脑硬件中确实增长迅速.不同类型的测速软件也是五花八门,不服跑个分之后,我们能从分数中得到什么?又会因为这次跑分对硬盘产生多少写入量? 笔者 ...

  2. 硬盘读写测试工具_硬盘测速工具:Blackmagic Disk Speed Test Mac

    Blackmagic Disk Speed Test for Mac是Mac上检测硬盘功能的硬盘测速工具,使用disk speed test mac可以检测并验证你的硬盘性能,以及硬盘读入和读出的能力 ...

  3. 查看网络抖动_Linux下3种常用的网络测速工具

    大家好,我是良许. 不管你用的是什么操作系统,网速都是你非常关心的一个性能指标,毕竟,谁都不想看个视频结果网速卡到你怀疑人生.本文介绍三个 Linux 命令行下的网络测速工具,让你随时随地知道你的网络 ...

  4. win10自带磁盘测速工具

    win10自带磁盘测速工具,可以测量固态硬盘和机械硬盘的读写速度.下面介绍一下怎么使用. 以管理员身份运行命令行程序,在搜索框输入[cmd],右键点击出现[以管理员身份运行].(否则在win10下面最 ...

  5. ios测试硬盘速度软件,轻巧好用的AJA System Test硬盘测速工具(Mac / Windows)

    记得只能型手机尚未盛行的年代,电脑效能跑分几乎是想买PC的一个参考的指标,然而CPU迈向多核发展,运作效能的瓶颈几乎都卡在硬盘的读取效能,SSD的出现让电脑的效能完更上一层楼.目前云端服务的发展以融入 ...

  6. 比较好用的服务器和网站在线测速工具分享

    选择主机或者服务器的时候,我们会常用服务器和网站在线测速工具,是不是开通到服务器会先拿IP地址进行测速看看是不是达到我们的预期和商家介绍的标准.当然,后续我们网站和项目在运营中,也会去经常看看PING ...

  7. 局域网千兆网速测试软件,局域网测速工具软件:charIOT

    charIOT是一款专业的局域网测速工具软件,并且是目前世界上唯一认可的应用层IP网络及网络设备的测试软件,可以提供端到端,多操作系统,多协议测试,多应用模拟测试,其应用范围包括有线,无线,局域,广域 ...

  8. 12个在线网站测速工具——web性能

    网站的访问速度对于一个网站非常重要,没有一个人会喜欢速度慢的网站.下面是12款在线测试网站的访问速度和性能的工具,在优化网站的时候很有用. Pingdom 测试网站每个元素的加载速度,比如html.图 ...

  9. 10个免费在线网站测速工具

    10个免费在线网站测速工具 In: 站长工具 By:MK 4十二2011 我们知道网站载入速度对用户体验非常重要,还是SEO优化内容的一个重要部分.借助在线网站测速工具,了解影响网站载入速度慢的根本原 ...

  10. Linux Command iperf3网络测速工具

    Linux Command iperf3网络测速工具 文章目录 Linux Command iperf3网络测速工具 1. 简介 2. 安装 3. 功能 4. 参数 5. 示例 5.1 测试TCP吞吐 ...

最新文章

  1. mysql的配置和启动命令
  2. windows环境下设置Redis自启动
  3. 牛客多校 - B-Suffix Array(后缀数组)
  4. linux最小安装桌面,Linux工作环境:CentOS7最小安装+Xfce桌面环境
  5. 为了杀蚊子,他用树莓派DIY了一把激光枪!
  6. 平衡二叉树AVL插入
  7. springboot项目中关于时间类型转换的格式问题
  8. Docker 安装 MongoDB
  9. 雷赛运动控制卡能不能用c语言_弱电知识之三:跟我学做全彩屏,认识LED全彩屏的模组、控制卡...
  10. Java基础学习总结(121)——Java JVM执行流程
  11. 计算机英语中motherboard,计算机英语--Motherboard.doc
  12. Host aggregate分区
  13. 简单工厂模式和适配器模式
  14. MYSQL--主键 外键
  15. 推荐基础术语--A/B实验及P值
  16. Unity连接MySQL数据库方法整合
  17. 【办公-excel】Excel批量翻译
  18. 托福高频真词List10 // 附托福TPO阅读真题
  19. 【判断一个数是不是素数】
  20. Lottie Android 动画制作与使用

热门文章

  1. Google Gmail十年回首
  2. 银行面试常考。手把手带你高质量刷题(答案+解析)
  3. 水表188协议测试软件,水表下行通信规约标准188协议-V1.5标准版.pdf
  4. 美国VERSA VGG-4422-U-A240有一种幸福叫微笑
  5. map取固定key_Map获取key值
  6. 【H3C模拟器】配置交换机的链路聚合
  7. 【历史上的今天】7 月 23 日:Novell 挑战微软;计算机界的教育家出生;第一颗 Landsat 卫星发射
  8. Jlink下使用swd
  9. HDU-4747 Mex
  10. ps抠图插件Topaz ReMask 5