zoukankan      html  css  js  c++  java
  • 分析并实现 360 P1路由器上的测速功能(也可以针对金山测速功能)

    现在各种智能路由器以及一些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的测试结果,在同一精度上。 

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

  • 相关阅读:
    java-03 方法
    cm 安装
    java-02 for循环,while循环
    java-01
    Storm入门,看这篇就够了
    Storm入门,看这篇就够了
    基于Spark的电影推荐系统(电影网站)
    基于Spark的电影推荐系统(实战简介)
    基于Spark的电影推荐系统(Scrapy爬虫)
    基于Spark的电影推荐系统(后台管理系统)
  • 原文地址:https://www.cnblogs.com/lagujw/p/4619323.html
Copyright © 2011-2022 走看看