事情的起因是最近家里買了一臺60寸的智能電視,支持點播(VOD)功能,家里的網絡帶寬理論上只有4M,在播放的時候,就會占用大量網絡帶寬,導致我同時上網瀏覽網頁都很困難。
有沒有辦法給限制局域網內某臺主機的流量?首先,還是得從TCP的原理說起。
TCP擁塞控制
TCP是個君子協議,在擁塞控制的設計(RFC 2851)中包括慢開始、擁塞避免、快重傳和快恢復4種算法。
擁塞窗口(cwnd)和接收端窗口(rwnd)二者的最小值確定了發送窗口的上限值,而實際上對于現今的網卡,接收端窗口的大小是可以很大的,也就是說,擁塞主要寄希望于擁塞窗口來控制,擁塞窗口直接決定了傳輸的速率。從上面這張圖可以看到:
為了改進上述擁塞控制算法的弊端,又加入了快重傳和快恢復算法。快重傳指的是:
而快恢復算法是為了解決在發生網絡擁塞時,擁塞窗口一下子跌到谷底(為1),導致不能很快恢復網絡正常通信流量狀態,所以做了一個改進——
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的網關欺騙。
MSS
在TCP的選項字段中,有一個是最大報文長度(MSS),在TCP建立連接的時候,雙方就要約定好這個數值,每一個報文段都希望盡可能大,這樣在帶寬有限的情況下,相同數量的報文段可以承載更多的信息,但是MSS是有限制的,限制的值=MTU-IP頭長度-TCP頭長度,所以對于以太網來說就是1500-20-20=1460。
|
新聞熱點
疑難解答