2007年10月2日 星期二

下載檔案如何不造成lag?

前言:這篇想要寫的盡量簡單易懂,所以用了一些技術上不太正確的譬喻,高手看到請鞭小力一點。


劇情:小明在外租屋,房東家裡裝了一條ADSL網路,免費分給各位房客用。小明的朋友阿喵架了一個FTP站,在上面放了一些電影。有一天,小明在阿喵的FTP上抓電影時,房東的兒子打網路遊戲突然變的很不順,下達一個攻擊指令後過三秒才會有反應。房東的兒子和房東說了這樣的情況,於是房東就把房客們的網路線拔掉了...如果有在網路上下載檔案(FTP, BT, eMule)的人,應該常常會有這種經驗...打BBS或網路遊戲突然變的很lag(指網路回應時間很慢)。要怎麼避免這種狀況呢?
武器一:使用ping來判斷目前網路lag的狀況要怎樣判斷目前的網路連外有多lag呢?最簡單的方法就是使用ping。ping的原理很簡單,就是去計算一個封包(訊息)傳到另一台電腦,再傳回來的時間。這裡通常ping你所使用的ISP的gateway或網頁,就可以知道目前網路的lag狀態了。

前面那段看不懂沒關係,我舉個更簡單的例子...
小明的電腦:Hinet網頁主機,聽到請快回答!
Hinet網頁主機:收到收到
小明的電腦:嗯嗯,我收對方的回應了,一共經過了30ms (毫秒)

這就是ping所做的事。30ms包括了兩段的時間:小明的電腦傳訊息給hinet的時間,以及Hinet回訊息到小明的電腦收到的時間。一般來說,Hinet的ADSL用戶在網路順暢的情況下會看到8~30ms的。

在Windows下使用ping很簡單。按開始=>執行=>ping -t http://www.hinet.net/ 就會開始不停的ping...

ping

中間那個time=23ms,就是RTT,一般都會在30以下。如果房東的兒子是在玩一般的網路RPG,ping在200ms以下應該沒什麼感覺,200~400ms應該是感覺稍微不順。所以只要設法讓ping不要爆掉,房東就不會來拔你的網路線了喔。

武器二:Windows下的流量限制軟體 (如NetLimiter)

一般的P2P程式(如BT, eMule)都會提供流量限制的功能。然而提供流量限制功能的FTP軟體似乎就很少見。這個時候就要靠其他的軟體來控制流量囉。像是NetLimiter就是一套不錯的軟體。我手邊沒有灌NetLimiter的機器,所以沒辦法寫出詳細的文圖教學。有興趣的可以去看看別人寫的教學,學會怎樣控制上傳和下傳的頻寬。

注意!一般ADSL的上傳及下載頻寬是不一樣的。如果你的下載瀕寬是1MBPS,這不是說你每秒可以抓1MB的東西喔....因為所謂BPS是Bit per second,也就是每秒可以傳輸多少Bit。然而我們通常用Byte的單位來計算檔案大小,而1byte等於8bits。總而言之,把你租用的ADSL線路的頻寬數字除以八就對了。下載1MBPS的ADSL,要是你每秒抓超過0.125MB,也就是128KB的資料的話,就會非常容易lag。結論:把你的頻寬除以八,你設定的上傳/下載頻寬決不可以超過這個數字。

不過這招用在多人分用網路的時候就沒用了,除非大家約定好用的頻寬不超過多少,否則就只好試著調整上/下傳頻寬(在p2p軟體內調、或者用NetLimiter調),直到ping值在可以接受的範圍內為止。

沒有留言: