现在各种智能路由器以及一些PC上的防火墙软件,都提供网络测速功能。笔者对此进行了研究,并在自己的路由器上也实现了此功能。下面做一下总结

一般的网络测速,主要关注两个方面:网络延迟和下载速率

1.网络延迟:即客户端从发出一个请求报文,到收到应答报文,这中间耗费的时间。此时间的长度,可以检测网络报文的传输延迟

2.下载速率:即客户端向某些提供下载服务的站点(一般是HTTP)进行数据下载,测试下载速率。

这两个数据,要比运营商告知的宽带套餐的数据,靠谱的多

下面谈谈我是如何实现的

1.网络延迟:简单的方法,就是利用PING的自身统计功能。发出一定数量的ping请求,看最终统计得到的AVG round-trip值。类似如下的:

举例ping –s 36 –c 40 www.baidu.com,则可以得到输出:

…….

44 bytes from 180.97.33.107: seq=38 ttl=55 time=296.485 ms

44 bytes from 180.97.33.107: seq=39 ttl=55 time=225.084 ms

--- www.baidu.com ping statistics ---

40 packets transmitted, 39 packets received, 2% packet loss

round-trip min/avg/max = 4.120/144.129/1052.541 ms

红色的,就是延迟了

主要谈谈下载速率的测试

2.下载速率测试:

分析了360 P1以及金山的测速报文,发现是利用多线程+HTTP下载的方式,向一些(金山是向6个地址)提供固定下载链接的网站,发起真实的下载请求,并在固定测试时间内估计下载速率:下载报文大小/测试时间

那么,我所开发的也就是这样一个测试程序:设定多个URL下载目标(也是6个,且就使用金山使用的目标地址),利用pthread多线程+socket编程,构造HTTP的并发GET请求,并循环接收获得的数据报文(注意,为了统计精确,需要去掉回包中的HTTP头)。此外,还建立一个定时器,设定定时时间就是测试时长。则当定时器到期后,终止所有线程,并结束socket。统计每个url下载的速率,并求和。 即得到此轮测试速率了

经简单验证,此程序的测试结果,与 金山,360P1的测试结果,在同一精度上。

需要代码的,可单独联系哦 ^_^

分析并实现 360 P1路由器上的测速功能(也可以针对金山测速功能)的更多相关文章

  1. 分析并实现 360 P1路由器上的朋友专享网络 功能

    笔者分析了360 P1路由器上的朋友专享网络功能,发现其主要由如下子功能组成: 1. APP点击“立即开启”,则路由器会多出一个新的SSID:360朋友专享网络-8463.此SSID不加密:同时,原有 ...

  2. 打破常规——大胆尝试在路由器上搭建SVN服务器

    注册博客园挺久了,一直比较懒,虽然有几次想写点文章,但是一直没有行动,今天给大家带来一篇比较有意思的文章,不涉及技术上的,希望大家轻拍.本文的文字和图片全部为原创,尊重作者转载请注明出处! 说起路由器 ...

  3. 在路由器上搭建SVN服务器

    在路由器上搭建SVN服务器 SVN托管服务大家都不陌生了,我最早开始用的是谷歌提供的SVN,因为在上面托管的项目都是开源的,所以当有些项目不方便在网上公开的时候,就需要自己搭建SVN服务器了.wind ...

  4. 教你如何在Drcom下使用路由器上校园网(以广东工业大学、极路由1S HC5661A为例)

    免责声明: 在根据本教程进行实际操作时,如因您操作失误导致出现的一切意外,包括但不限于路由器变砖.故障.数据丢失等情况,概不负责: 该技术仅供学习交流,请勿将此技术应用于任何商业行为,所产生的法律责任 ...

  5. 一步步实现windows版ijkplayer系列文章之六——SDL2源码分析之OpenGL ES在windows上的渲染过程

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  6. iptables及其在路由器上的应用 (待完善)

    1. iptables基本定义 Table (表名) Explanation (注释) nat nat表的主要用处是网络地址转换,即Network Address Translation,缩写为NAT ...

  7. 将 DNSCrypt 部署到 Openwrt 路由器上+ DNSmasq 解析国内域名用本地 DNS[ZT+实践]

    原文地址: 1.https://typcn.com/legacy/blog/posts/openwrt-dnscypt.html 2.http://www.openwrt.pro/post-376.h ...

  8. 交换机/路由器上的 S口 F口 E口

    S口是serial接口的意思,也叫高速异步串口,主要是连接广域网的V.35线缆用的,说白了就是路由器和路由器连接时候用的,可以用命令设置带宽,一般也就在10M.8M左右.F口是FastEthernet ...

  9. 【旧文章搬运】分析了一下360安全卫士的HOOK

    原文发表于百度空间及看雪论坛,2009-10-08 看雪论坛地址:https://bbs.pediy.com/thread-99128.htm 看时间,09年的国庆节基本上就搞这玩意儿了...==== ...

随机推荐

  1. less、sass、stylus

    less.sass.stylus 它们是三种类似的样式动态语言,属于css预处理语言,它们有类似css的语法,为css赋予了动态语言的特性.如变量.继承.运算.函数等.这么做是为了css的编写和维护. ...

  2. 兼容各浏览器的css背景图片拉伸代码

    需要用到背景图拉伸,找到了下面这段css代码: filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='***.jpg' , s ...

  3. Geeks - Check whether a given graph is Bipartite or not 二分图检查

    检查一个图是否是二分图的算法 使用的是宽度搜索: 1 初始化一个颜色记录数组 2 利用queue宽度遍历图 3 从随意源点出发.染色0. 或1 4 遍历这点的邻接点.假设没有染色就染色与这个源点相反的 ...

  4. 最简单的方式用上https

    1.在这个网站申请ssl证书 https://www.sslforfree.com 2.下载的证书使用这个脚本处理一下 #!/bin/bash HOST_NAME=$1 cp certificate. ...

  5. EEPlat 与 SOA

    EEPlat具有良好的可集成性和高度的系统开放性. EEPlat中系统级的服务由业务对象的服务通过规则引擎定义的业务逻辑组织建立起来.系统级的服务和业务对象的服务都可以直接公布为WebService供 ...

  6. Office WPS如何让页与页之间不相互影响

    在一个页面结束的位置点击插入-分页符,完了之后测试按回车下一页的内容有没有跟着往下跑,如果还是跟着往下跑的,再插入一次分页符,一般插入多次之后就不会跟着跑了,但是插的太多会有空白页面   测试按回车, ...

  7. MPEG2 PS和TS流格式

    http://blog.csdn.net/alangdangjia/article/details/9495193 应该说真正了解TS,还是看了朋友推荐的<数字电视业务信息及其编码>一书之 ...

  8. vue - webpack.dev.conf.js for node-portfinder

    描述:获取当前可用的port. (vue-cli配置好了,一旦端口被占用,报错,再次运行时会打开:8080+1,依次类推...8080+n) 官网地址:https://www.npmjs.com/pa ...

  9. Android实战技巧之三十八:Handler使用中可能引发的内存泄漏

    问题描写叙述 曾几何时,我们用原来的办法使用Handler时会有以下一段温馨的提示: This Handler class should be static or leaks might occur ...

  10. Visual studio之C# 调用系统软键盘(外部"osk.exe")

    背景 App需要调用系统软键盘输入数据,自己去实现软键盘有些复杂,现在又是急需,没时间去研究实现软键盘,所以只能调用系统软键盘. 正文 需要添加命名空间, using System.Diagnosti ...