利用多线程传输原理实现的网络媒体传输加速(附实验代码)

2012年2月17日 | 分类: 乱七八糟 | 标签: , ,

本文提及的的多线程传输指多通道传输。

原理:

把一些多线程的下载技术(例如flashget、网络蚂蚁所用到的),改进为一种数据缓冲技术,应用在文件、媒体等数据传输上。HTTP支持通过Range域来指定开始传输一个资源数据的起始位置。

实验测试:

在宿舍用CMCC的WLAN从www.xiaoxia.org下载一个13MB的文件,
单线程传输平均速度:14kB/s
8个线程传输平均速度:134kB/s

测试发现8个线程的平均传输速度比1个线程的平均传输速度要快,这是为什么呢?

继续测试发现,单个线程传输的时候,速度可能会慢慢减小,所以最后只剩下可怜的14kB/s的平均速度了。而在我实现的网络加速程序里,每个连接的生命时长大概只有10几秒钟,所以它们的速度可以保持很好。

上图的示例是播放一个youku上的高清视频。原来单个连接速度为55kB/s,看高清视频有时候会卡一下。开启网络加速后,使用8个连接同时传输 数据,最终平均速度为386kB/s,其中包含了创建连接等待响应的时间,以及一开始计算速度,估计数据缓冲块大小的时间在内。而实际当8个连接同时传输 的时候,瞬时速度超过了400kB/s。

但是,实现起来跟多线程下载工具实现在细节上有所不同。因为你需要支持网络流媒体的实时播放,所以你至少需要使用一个缓冲池来存放多线程下载的数据。流媒体是顺序播放的,所以传输位置必须是顺序的,而不能够随机定位一个连接传输数据的位置。

例如下图所示,在缓冲到资源数据的任何一个位置(例如末尾的时候),必须保证前面的数据已经全部获取。

总结

这种通过创建多路连接来突破传输速度而实现的网络加速方法,不需要借助额外的网络服务器,实现起来也很简单,只需要在客户端或者浏览器上进行改进。 例如,可以开发一个桌面代理软件来实现本地代理加速,也可以开发一个浏览器插件,又或者可以修改一个Chrome或者Mozzila浏览器内核,发布一个 自己的高速浏览器!

注意,此方法不能突破用户网络带宽的限制。

附件

本文所用加速工具源代码及Win32可执行文件下载:
httpspeeder_110402

包含文件:

│  httpSpeeder.exe
│  pthreadGC2.dll
│  readme.txt
│
└─src
        config.cpp
        config.h
        contentbuffer.cpp
        contentbuffer.h
        cppthread.cpp
        cppthread.h
        filelog.cpp
        filelog.h
        httpconnection.cpp
        httpconnection.h
        httpmessage.cpp
        httpmessage.h
        httprequest.cpp
        httprequest.h
        httpresponse.cpp
        httpresponse.h
        httpserver.cpp
        httpserver.h
        httpshrimp.cpp
        httpshrimp.h
        httpsocket.cpp
        httpsocket.h
        httpSpeeder.mk
        httpSpeeder.project
        main.cpp

 

另外,补充一下,用电信专线下载同样大小的文件,
单线程:

8线程:

这下子又没有8倍提速是因为受到xiaoxia.org的服务器输出带宽的限制,不能再提高了!

来源:http://xiaoxia.org/2011/04/02/using-multi-thread-transmission-principle-to-realize-the-network-acceleration/

  1. Mr.Koala
    2012年2月20日19:04

      技术上无问题,但出于道德上的考虑应该避免。

      多线程下载和突墙毕竟不是一回事。这样做的实质只是抢夺了别人的资源而已,如果普及了大家都用只会更糟。

  2. curtius
    2012年2月17日14:55

    IDM 就是8倍提速
    不过楼主用在浏览器上 可能会引起部分网站强制关闭链接
    IDM8线程技术已经引起一部分网站的反感了

  3. curtius
    2012年2月17日14:53

    其实现实中已经有了
    佩服作者的大才啊
    IDM 就是8线程下载

    网上有cracked版本

  4. 银色子弹
    2012年2月17日13:17

    其它操作系统可以吗?

    • iGFW
      2012年2月17日13:41

      应该能,你问原文作者吧

  5. wave
    2012年2月17日12:40

    无法下载啦

    • iGFW
      2012年2月17日12:48

      感谢提示,已修复,请重新下载