现在各种智能路由器以及一些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. Maven nexus 安装nexus私服出现的两个问题

    1. 在win10中安装nexus时提示:wrapper | OpenSCManager failed - 拒绝访问. (0x5) 主要是没有权限.需要以管理员的身份运行 如果你是直接点击 start ...

  2. python 将编码转为汉字

    print '\u57fa\u7840\u5316\u5de5\u4e1a'.decode('unicode-escape') print urllib.unquote("%C0%FA%CA ...

  3. .NET/MVC-ViewBag、ViewData、TempData区别

    1.ViewData ViewData的生命周期和View相同, 只对当前View有效. 2.TempData TempData保存在Session中, Controller每次执行请求的时候会从Se ...

  4. MongoDB之Map-Reduce -- Mongo Shell版和C#版(上)

    最近有在学习MongoDB,看到了关于Map-Reduce,觉得蛮有意思的,所以在这里就记录下来作为学习笔记. 关于Map-Reduce的作用这里就引用一下官网以及另外一篇文章看到的,言简意赅. 1. ...

  5. mongodb进阶三之mongodb管理

    http://blog.csdn.net/stronglyh/article/details/46827141 平时的开发环境win比較多啊,但生产环境要放到unix环境上 一:命令 安装就不少了,网 ...

  6. (一)Lucene——基本概念介绍

    1. Lucene是什么 Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能.Lucene 目前是 Apache Jakart ...

  7. Linux-使用 screen 管理你的远程会话

    转自:http://www.ibm.com/developerworks/cn/linux/l-cn-screen/ 你是不是经常需要 SSH 或者 telent 远程登录到 Linux 服务器?你是 ...

  8. 【转贴】J2EE中的13种技术规范

    J2EE平台由一整套服务(Services).应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对J2EE中的13种技术规范进行简单的描述(限于篇幅,这里只能进行简单 ...

  9. Nuget使用规范

  10. Linux操作系统--help、man和info工具的区别介绍

    http://wenda.tianya.cn/wenda/thread?tid=1d4b0f172f958833Linux操作系统--help.man和info工具的区别介绍 Linux操作系统为我们 ...