测速工具使用心得体会
导语:之前写过一个测速小工具,使用的是
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家的测试命令行工具吧。
通过以上几个步骤就可以测试你的网速了。
写在最后
以上就是我之前开发测速小工具的一些心得体会,如果对此感兴趣的朋友,也可以试着体验一下哦。
测速工具使用心得体会相关推荐
- 电脑测速软件_不服跑个分!常见固态硬盘测速工具性价比盘点(上)
尽管不像CPU的核心或线程数量那样直观,固态硬盘性能在近几年电脑硬件中确实增长迅速.不同类型的测速软件也是五花八门,不服跑个分之后,我们能从分数中得到什么?又会因为这次跑分对硬盘产生多少写入量? 笔者 ...
- 硬盘读写测试工具_硬盘测速工具:Blackmagic Disk Speed Test Mac
Blackmagic Disk Speed Test for Mac是Mac上检测硬盘功能的硬盘测速工具,使用disk speed test mac可以检测并验证你的硬盘性能,以及硬盘读入和读出的能力 ...
- 查看网络抖动_Linux下3种常用的网络测速工具
大家好,我是良许. 不管你用的是什么操作系统,网速都是你非常关心的一个性能指标,毕竟,谁都不想看个视频结果网速卡到你怀疑人生.本文介绍三个 Linux 命令行下的网络测速工具,让你随时随地知道你的网络 ...
- win10自带磁盘测速工具
win10自带磁盘测速工具,可以测量固态硬盘和机械硬盘的读写速度.下面介绍一下怎么使用. 以管理员身份运行命令行程序,在搜索框输入[cmd],右键点击出现[以管理员身份运行].(否则在win10下面最 ...
- ios测试硬盘速度软件,轻巧好用的AJA System Test硬盘测速工具(Mac / Windows)
记得只能型手机尚未盛行的年代,电脑效能跑分几乎是想买PC的一个参考的指标,然而CPU迈向多核发展,运作效能的瓶颈几乎都卡在硬盘的读取效能,SSD的出现让电脑的效能完更上一层楼.目前云端服务的发展以融入 ...
- 比较好用的服务器和网站在线测速工具分享
选择主机或者服务器的时候,我们会常用服务器和网站在线测速工具,是不是开通到服务器会先拿IP地址进行测速看看是不是达到我们的预期和商家介绍的标准.当然,后续我们网站和项目在运营中,也会去经常看看PING ...
- 局域网千兆网速测试软件,局域网测速工具软件:charIOT
charIOT是一款专业的局域网测速工具软件,并且是目前世界上唯一认可的应用层IP网络及网络设备的测试软件,可以提供端到端,多操作系统,多协议测试,多应用模拟测试,其应用范围包括有线,无线,局域,广域 ...
- 12个在线网站测速工具——web性能
网站的访问速度对于一个网站非常重要,没有一个人会喜欢速度慢的网站.下面是12款在线测试网站的访问速度和性能的工具,在优化网站的时候很有用. Pingdom 测试网站每个元素的加载速度,比如html.图 ...
- 10个免费在线网站测速工具
10个免费在线网站测速工具 In: 站长工具 By:MK 4十二2011 我们知道网站载入速度对用户体验非常重要,还是SEO优化内容的一个重要部分.借助在线网站测速工具,了解影响网站载入速度慢的根本原 ...
- Linux Command iperf3网络测速工具
Linux Command iperf3网络测速工具 文章目录 Linux Command iperf3网络测速工具 1. 简介 2. 安装 3. 功能 4. 参数 5. 示例 5.1 测试TCP吞吐 ...
最新文章
- mysql的配置和启动命令
- windows环境下设置Redis自启动
- 牛客多校 - B-Suffix Array(后缀数组)
- linux最小安装桌面,Linux工作环境:CentOS7最小安装+Xfce桌面环境
- 为了杀蚊子,他用树莓派DIY了一把激光枪!
- 平衡二叉树AVL插入
- springboot项目中关于时间类型转换的格式问题
- Docker 安装 MongoDB
- 雷赛运动控制卡能不能用c语言_弱电知识之三:跟我学做全彩屏,认识LED全彩屏的模组、控制卡...
- Java基础学习总结(121)——Java JVM执行流程
- 计算机英语中motherboard,计算机英语--Motherboard.doc
- Host aggregate分区
- 简单工厂模式和适配器模式
- MYSQL--主键 外键
- 推荐基础术语--A/B实验及P值
- Unity连接MySQL数据库方法整合
- 【办公-excel】Excel批量翻译
- 托福高频真词List10 // 附托福TPO阅读真题
- 【判断一个数是不是素数】
- Lottie Android 动画制作与使用