• 如何在局域网内抢带宽
    时间:2012-10-09   作者:四火的唠叨   出处:www.raychase.net

    事情的起因是最近家里买了一台60寸的智能电视,支持点播(VOD)功能,家里的网络带宽理论上只有4M,在播放的时候,就会占用大量网络带宽,导致我同时上网浏览网页都很困难。

    有没有办法给限制局域网内某台主机的流量?首先,还是得从TCP的原理说起。

    TCP拥塞控制


    TCP是个君子协议,在拥塞控制的设计(RFC 2851)中包括慢开始、拥塞避免、快重传和快恢复4种算法。

    tcp

    拥塞窗口(cwnd)和接收端窗口(rwnd)二者的最小值确定了发送窗口的上限值,而实际上对于现今的网卡,接收端窗口的大小是可以很大的,也就是说,拥塞主要寄希望于拥塞窗口来控制,拥塞窗口直接决定了传输的速率。从上面这张图可以看到:

    慢开始增加到门限初始值的这段过程中,拥塞窗口的增长是比较快的。
    之后的增长由指数式变成了保持线性缓慢增长,直到出现网络拥塞超时。
    超时以后重新慢开始的过程,但是门限值发生了改变,变成了拥塞发生值的一半大小。
    为了改进上述拥塞控制算法的弊端,又加入了快重传和快恢复算法。快重传指的是:

    对于msg1和msg2,接收端收到以后,就分别回复ack2和ack3,但是这时候msg3丢失了(或者由于网络原因很久还未到达);
    接收端又收到了msg4,那就可以接收下msg4,但是依然回复ack3(ack3依旧是意味着告诉发送端只收到了msg1和msg2);
    发送端继续发送msg5和msg6,可是接收端依然回复ack3;
    但是发送端只要发现一连3个重复的ack3,就知道估计msg3丢失了,得重传msg3了。
    而快恢复算法是为了解决在发生网络拥塞时,拥塞窗口一下子跌到谷底(为1),导致不能很快恢复网络正常通信流量状态,所以做了一个改进——

    在拥塞发生的时候,只是把拥塞窗口置为ssthresh+n×MSS(其中n表示收到重复的ack报文的个数,MSS指的是最长报文段);
    同时,这以后当收到新的ack报文时,就将拥塞窗口置为ssthresh的值。
    TCP协议在这样的拥塞控制机制下保证了对质量较差的网络也有较好的适应性,但是UDP协议就不具备这种拥塞控制机制(除非你在协议之上的应用中自己设计),而流媒体往往是基于UDP来实现的,因为它更快、无连接,而且偶尔丢帧也可以接受。在这种争夺带宽的场景下,君子TCP就没有办法争夺到较好的流量了。

    多端口多连接

    这是迅雷的主要做法之一,开启多个端口,建立多个连接,靠这种简单粗暴的方式来占取带宽。

    ARP欺骗

    Google搜索局域网抢带宽以后,映入眼帘的是P2P终结者这样的“杀器”,它的原理就是基于ARP欺骗,即是说,通过ARP攻击等使局域网内其它机器产生大量本地盲包,减少对公用网络资源的占用。

    ARP(Address Resolution Protocol,地址解析协议)是获取物理地址的一个TCP/IP协议。某节点的IP地址的ARP请求被广播到网络上后,这个节点会收到确认其物理地址的应答,这样的数据包才能被传送出去。也就是说,在这个过程中,发送方用目标IP地址去换取了接收方的MAC地址,之后MAC地址存放到本地的缓存中(在一定的生存期时间内)。

    由于在局域网中是使用MAC地址进行传输的,因此P2P终结者就伪造这样的一个ARP应答,把P2P终结者所在的机器A的MAC地址告诉目标机B(目标机B在任意时候都可以接收ARP请求的应答),让目标机以为本机才是网关,这样B接收后就会更新本地缓存,以后所有本该走到网关去的包都会从机器A走,这就是一个简单的ARP欺骗的原理。

    ARP欺骗是黑客常用的攻击手段之一,ARP欺骗分为二种,一种是对路由器ARP表的欺骗;另一种是对内网PC的网关欺骗。

    arp

    MSS

    在TCP的选项字段中,有一个是最大报文长度(MSS),在TCP建立连接的时候,双方就要约定好这个数值,每一个报文段都希望尽可能大,这样在带宽有限的情况下,相同数量的报文段可以承载更多的信息,但是MSS是有限制的,限制的值=MTU-IP头长度-TCP头长度,所以对于以太网来说就是1500-20-20=1460。

    网友留言/评论

    我要留言/评论

    相关文章

    阅读好体验的准则:100% Easy-2-Read:大多数网站都挤满了小号的文字,使人阅读起来感到很痛苦。产生这个问题的原因是什么呢?如果我们稍作思考就会发现,没有理由将如此多的信息都硬塞进一个小小的屏幕当中。其实,这只是一个历史遗留问题,因为过去的时候屏幕真的是很小。
    不要告诉我你懂margin:你真的了解margin吗?你知道margin有什么特性吗?你知道什么是垂直外边距合并?margin在块元素、内联元素中的区别?什么时候该用padding而不是margin?你知道负margin吗?你知道负margin在实际工作中的用途吗?常见的浏览器下margin出现的bug有哪些?……
    高性能网站的十四条黄金法则:许多研究都表明,用户最满意的打开网页时间,是在2秒以下。用户能够忍受的最长等待时间的中位数,在6~8秒之间。这就是说,8秒是一个临界值,如果你的网站打开速度在8秒以上,那么很可能,大部分访问者最终都会离你而去。
    SEO关于URL优化的一些经验:URL在搜索结果列表中时显示内容之一。设计网站结构时需要对目录及文件命名系统做事先规划。总的原则是首先从用户体验出发,URL应该清晰友好、方便记忆,然后才考虑URL对排名的影响。具体可以考虑以下几个方面。
    搜索引擎高排名的8步骤:对于网上业务,网站和博客一样,在搜索引擎中的排名高是必须的。有机搜索结果是相关的网页出现在搜索引擎结果页面在回应关键字搜寻字词。结果是不带偏见,而不是生成的基础上的付费广告。当你的网站排在各大搜索引擎,像谷歌,雅虎和Bing高,您的网站的网址,标题和描述的结果页上可见。获得了坚实的搜索引擎的地位,意味着你的网站是一个权威和流行的在线源。
    解构科技博客:一直压着没发,之前写知乎时就写完这篇东西了,今天突发灵感就修改一些东西发出来了,可能以后写东西的方向会改变,不再是这类大而泛的文章了。
    十五种实用促销方式:促销是指为了促进产品的销售,针对的消费行为、消费习惯而采取的促进产品快速实现从厂家到手中转变的策略。@茵曼文案lala凤 根据自己在工作中的实践与摸索,总结了15种促销方式,她没想到的是,这个图迅速在微博上疯传,并被许多网友惊呼为“目前看起来最全的促销图”。
    GET和POST有什么区别?及为什么网上的多数答案都是错的。:前几天有人问我这个问题。我说GET是用于获取数据的,POST,一般用于将数据发给服务器之用。
    网站运营人员必须要了解的网站运营术语:一个网站从建立到发展需要很多人的努力,现在的网站运营也不仅仅是一个开源程序,一个cms或者是一个网站源码就可以搞定的事情。网站建立起来想要获得发展的话还需要有人去经营网站,而如何经营,那就是网站运营要做的事情了。当然不一样的网站需要的运营手法是不相同的,而且每个运营人员对于网站的理解也是不一样的。但是不管如何改变,网站运营术语还是一样的。
    互联网产品如何从无到有聚集用户?:最近遇到考题:一个互联网产品如何从无到有聚集用户?对此,我分了3个阶段来进行论述。(中间加了一些孙子兵法的观点,学习孙子兵法,对做产品也有一定的指导思想。希望更多的人能学习国学,爱国学。多学国学,就能透过现象看本质,这也是哲学的本意。)