[整理]eDonkey心得_為什麼老是覺得驢子慢?(特別典藏紀念版)
@ 2007-8-21 07:18 PMeDonkey心得_為什麼老是覺得驢子慢?(特別典藏紀念版)
============================================================
每次逛進論壇裡時,偶爾總是會不經意地跑到這裡來看看,每次總會瞄到這篇已經有點歷史的PO文~
[eDonkey心得]為什麼老是覺得驢子慢 ? (圖文進階版)
有時‧‧不自覺的也會點進去看看,每次‧‧總會引起一點情緒起伏,觸動一些過往回憶在腦海中盤旋。
「呵~呵~~這篇殘缺的文章,怎麼還在這啊?」
許久了~真的記不起那位版主的厚愛,把俺這篇PO文給置頂、加入精華的,
而且訝異的是在經過妖驢戰亂、論壇改版的洗鍊後,它居然還在...逃得過剪刀手的摧殘;
twed2k也夠堅硬的~居然也陪俺那麼長一段時間了,硬是要得!!
看著~想著~~來把它稍微修改一下,再PO上來~當作是 特別典藏紀念 吧!
以此篇獻給所有念舊的驢友、壇主、VIC以及所有曾經在論壇裡奉獻、努力的壇友;
『謝謝您們陪我走過一段歡樂時光,也因為你們的努力讓我在此收益良多,並祝福twed2k將來可以更好!!』
============================================================
為什麼老是覺得驢子慢?想臭罵 !! ~~ 想訐譙 !! ~~ 先別急 !!!!
你知道當你以 50 KB/Sec 下載檔案時,要多少人供檔給你 ? 又驢子作了哪些事 ?? 請看看這裡說明
這裡有 【基本原理】【網路運作說明】【搜尋運作說明】【傳輸速度說明】
.... 等等介紹,希望您能對 eDonkey 有更進一步了解,愛用它,並且多多分享、下載完後盡量把檔案放久一點、儘可能打開上傳的頻寬,讓你、我、大家都受益喔 !!
---------------------------------------------------------------------------------------------------------------------
壹、【基本原理】 eDonkey 2000 運作原理 ..................................................... 2002/07/29
- eDonkey2000 是以多重來源檔案傳輸協定 Multisource File Transfer Protocol (MFTP),作為通訊協定基礎的檔案傳輸程式。
- 構成 Donkey (以下全部稱呼為:驢子) 的網路傳輸是以 Server、Client 兩種應用程式搭配共同運作所組成。
- 驢子的客戶端 (Client) 程式,就是指我們現在安裝在自己的電腦裡,用來搜尋、下載並且分享檔案所使用的 eDonkey 2000 程式。
- 驢子的伺服器端 (Server) 程式,就是指現在我們常常連上去,才可以搜尋檔案和下載檔案的連線主機,像常用的 台灣 Ed2K 伺服器、NCTU-Taiwan eDonkeyServer 伺服器都是。
- 舉個例子來說:伺服器有點類似電話簿,電話簿是讓我們查詢某某人的電話,而驢子的伺服器則是當我們的驢子要去下載檔案時,找看看誰的電腦裡有這個檔案,找到之後回傳給我們 (~誰有~),所以驢子的伺服器本身是沒有檔案也不傳檔案的。
附註:
- Donkey 這個英文字翻譯是叫作 "驢子",是一種動物的稱呼,那 eDonkey 加上了 e 就有 "電子驢"的意味;
- 驢的外形像馬,但較矮小,耳朵較長,背部有一條黑線直達尾部,毛較不光滑,大都為深灰色。驢生性刻苦耐勞,能持久工作,能吃粗食,能耐渴、耐餓、耐熱,所以很受農民的喜愛,常被使用來馱貨、拉車、拉磨、耕地、乘騎等。最大的用途是拉磨,因為牛拉磨不快,馬拉久了會暈倒,只有驢拉得又快又不暈,所以拉磨的工作只有靠驢來做。
- 驢屬於奇蹄目馬科,產於亞洲,我國西北和東北各省產得很多。一般人都說驢笨,其實驢的記憶力很強,可能比馬還要聰明。不過牠脾氣很倔強,但對於擅於駕馭牠的人,卻很聽話。
- 公驢很會叫,叫聲大且長,因此俗稱「叫驢」,不過叫聲並不悅耳。母驢的懷孕期約一年,一胎生一隻小毛驢。壽命可達二十五年以上。驢的年齡可由牙齒磨損的程度來辨別,年老的驢牙齒會磨平。
---------------------------------------------------------------------------------------------------------------------
貳、【網路運作說明】eDonkey 2000 運作原理之網路運作說明 ................................ 2002/07/29
Connection :TCP/IP 資料傳遞的基礎,就好比火車一樣,需要鐵軌才有辦法行駛。
eDonkey2000 的網路運作共會開啟四種"連結" Connection 。
- Main Server Connection 主要伺服器連結
- Extended Server Connection 延伸伺服器連結
- Peer to Peer Connection 驢友對驢友的連結
- Inter-Server Connection 伺服器相互連結
這四種"連結"的作用如下:
- 主要伺服器連結:驢子客戶端與主伺服間的連線,當驢子連上任一部伺服器時即已建立,它使用 TCP Port 4661。
- 延伸伺服器連結:當你使用"延伸搜尋"(extend search)時或下載檔案中,驢子會以你伺服器清單中可以連線的伺服器建立延伸伺服器連結,它使用 UDP Port 4665。
- 驢友對驢友的連結:驢友對驢友間的連結,驢子自伺服器取得"檔案來源"的驢友清單後,便開始一個一個嘗試與清單所列的網友分別建立"驢友對驢友的連結",一旦可以建立連結,驢子便開始常是要求傳輸所要求的"檔案片段"它使用 TCP Port 4662。
- 伺服器相互連結:當你的驢子連上伺服器時,有些伺服器會自動下載伺服器清單給你,這個功能裡的伺服器清單(Server List)就是靠"伺服器相互連結"所提供,驢子伺服器間只有非常小資料流量的通訊,它週期性的對其它伺服器發出"我在這"的通知,其他伺服器如果有在工作(On Line is Live)收到這個訊息,便回傳它自己的伺服器清單作為回應,伺服器上的伺服器清單表便是透過這種方式來維護。
※ 所以驢子設定項裡的最大連線數 (MaxConnections) 會影響你的傳輸情形。
附圖:驢子的網路連結架構圖 ↓
圖示說明:各"連結"主要通訊內容
註:
1. 驢子到底使用多少連結 ( Connections ) ? 我要如何設定最大連結數 ?
驢子用掉的連結數大約可以用這樣的公式計算:
{ 主伺服器連結數 + 延伸伺服器連結數 + 驢友間連結數 + 等候中( Queue )數 } →
大約是 1 + 5 + 驢友間連結數 + Queue 數 ==> 設定最大連結數的參考依據 !!
驢友間連結數可於驢子 Command Line 區,以指令 vp 查詢目前驢友的連結數。
參、【搜尋運作說明】eDonkey 2000 運作原理之搜尋運作說明 ................................ 2002/07/29
eDonkey2000 的多重來源檔案傳輸協定 (MFTP),靠的是驢子伺服器和驢子客戶端共同合作來達成,驢子的搜尋方式有兩種:
"正常搜尋" (Search) 與 "延伸搜尋 " (Extend Search)。
正常搜尋:
當驢子的客戶端 (Client) 程式連結到(Connected)驢子伺服器(Server)後,這部伺服器便成為主伺服器,並且驢子客戶端會告訴主伺服器在這部電腦有哪些分享的檔案,每一部驢子的伺服器都會管理、維護一份所有連結到它的驢子所分享的檔案清單總表,其中包含ID 與分享的 檔案名稱、大小、類型、Hash 值 ... 等等資料。
當驢子的客戶端要搜尋某個檔案時,它是送出"搜尋字串"給主伺服器,主伺服器便傳回符合搜尋字串的清單給客戶端,其中包含 檔案名稱、大小、類別、檔案格式及可得數等資料;而可得數 指的是連結到這部伺服器有相關檔案的驢子客戶端數。
延伸搜尋:
當你在正常搜尋結束後,若你不太滿意搜尋結果並按下"延伸搜尋"按鈕時,驢子便依照你伺服器清單裡有的伺服器順序,以UDP送出"搜尋字串"及接收"搜尋結果",來限制對驢子伺服器所造成的"網路傳輸頻寬需求擴大"及"連結數提高" .. 等運作負荷,並由於延伸搜尋使用UDP來傳輸,所以~~可能透過"延伸搜尋"所得到的結果,會比使用"正常搜尋 "所得到的結果清單要來的少。
附圖:驢子的搜尋傳遞示意圖 ↓
---------------------------------------------------------------------------------------------------------------------
肆、【下載運作說明】eDonkey 2000 運作原理之 下載運作說明 .................. 2002/07/29
當你從驢子搜尋結果中或者是從你好友的分享檔案清單中要下載你要的檔案時,驢子會先蒐集擁有你想要下載那個檔案的 eDonkey Client (我們把它稱為驢友好了),首先驢子會問 主 Server (你現在已經連線的那個),哪些人有你要下載的那個檔案 (P.S. 不管他是不是已經把檔案全部傳完),接下來驢子也會去問其他的Server (你伺服器清單裡其它的Server) 還有誰擁有你想要下載的檔案,然後驢子開始跟其他驢友連線,開始傳輸那個檔案你還沒有的部分,一直到整個檔案傳完為止;※這即是說:驢子傳檔是分段在傳,它會把檔案以每9.28MB(約) 為單位分段(9,728,000 Byte)。
附圖:驢子下載時網路交換方式示意圖 ↓
圖例說明:假設小明的驢子連線到台灣ed2K伺服器,他的驢子裡伺服器清單裡還有另外的伺服器 NCTU Sssun,小明現在要下載 " VCD 我不笨.dat " 這個檔案,檔案大小為 63 MB,小明的驢子送出"檔案來源"的查詢給主伺服器,詢問主伺服器台灣ed2K有哪些人有這個檔案?,伺服器回答共有 A、B、C、D、E、F、G 七位驢友有" 豕者豆頁自爆我不笨,我只是呆了點.dat
" 這個檔案,{ 驢友:G } 有完整的檔案,而驢友 A、B、C、D、E、F
這六位網友剛好分別有 a ~ f
以9.28MB為單位的各段,接著小明的驢子便分別和這七位驢友的驢子嘗試連線,並且分別開始溝通傳輸檔案各個分段的部分,小明很幸運 因為 A、B、C、D、E、F
這六位網友剛好分別有這個檔案的各段,所以小明便享受了七位網友傳檔給他的傳輸速度。
{ 驢友:G }上傳的頻寬蠻大的,沒多久小明就把" 豕者豆頁自爆我不笨,我只是呆了點.dat " 這個檔案 g 段部分給下載完了。
這時小明的驢子與 { 驢友:A } 的驢子彼此溝通後,{ 驢友:A } 沒有" 豕者豆頁自爆我不笨,我只是呆了點.dat" 這個檔案 g 段部分,請小明的驢子傳給它,小明的驢子回答"可以"後便開始傳了,小明的驢子會重複上面的動作直到" 豕者豆頁自爆我不笨,我只是呆了點.dat" 這個檔案的各段全部傳完,並且組合成為一個完整的檔案。
而A、B、C、D、E、F
這六位網友的驢子也會像小明的驢子一樣,不斷重複上面的步驟一直到整個檔案傳輸完成。
附註:驢子在把檔案分段時是使用稱為MD4s的公式來計算,所以當你剛啟動驢子時,會花比較多時間。
---------------------------------------------------------------------------------------------------------------------
五、【傳輸速度說明】eDonkey 2000 運作原理之傳輸速度說明 .................... 2002/07/29
- eDonkey2000 是以多重來源檔案傳輸協定 Multisource File Transfer Protocol (MFTP),作為通訊協定基礎的檔案傳輸程式。
- 它是以 Peer To Peer 為基礎的檔案傳輸應用程式,然後在eDonkey 的網路環境架構下運作。
- 驢子的客戶端 (Client) 程式因為它的對等(Peer)原則,在程式中當上傳速度低於10KByte/Sec以下時,其上/下傳速度比以1:3(未註冊版)或1:4(註冊版)來強制訂定,亦即當你設定為上傳4K時,下傳最大為16K,這是eDonkey程式一開始在設計時就如此。
- 驢子的客戶端與其它驢子在傳輸資料時,預設可以"傳輸資料的通道"數大約是 4~15 個(使用TCP Port:4662 ),預備通道Queue數大約是 50~70個左右,而驢子在超過10個以上的連結Connections需處理時,通常會把"傳輸資料的通道"維持在10個左右,其它的就排入Queue中等待,所以以一般網友常用的 512Kb/64Kb ADSL 來說,如果設定上傳5KB/Sec而驢子建立10個"傳輸資料的通道"分別給10個驢友,那麼每位連線到這個驢友的驢子大約可以獲得0.5KB/Sec的傳輸速度。
圖例說明:
假設小明的驢子用512Kb/64Kb速率的ADSL連線到台灣ed2K伺服器,那他設定驢子上傳為 5KB/Sec,他今天很熱心的分享了自拍的VCD "豕者豆頁自爆我不笨,我只是呆了點.dat " 這個檔案供網友認識他,他把檔案放到已經設定好"分享"的一個目錄區去,並且按下了驢子的分享檔案Shared Tab "更新"的按鈕,並從分享清單List中找到了"豕者豆頁自爆我不笨,我只是呆了點.dat "這個檔案,他複製連結到剪貼簿中,貼到已經打好的電子郵件裡寄給十位同樣都是用512Kb/64Kb速率的ADSL網友(驢友),網友在收到他的電子郵件後,陸續地開始下載小明的VCD"豕者豆頁自爆我不笨,我只是呆了點.dat t" 這個檔案,剛開始只有3個網友在下傳,小明看他的上傳清單中三位網友( A、B、C )各以2K/Sec 左右的速度在接收檔案,若以這個速度計算這三位網友大概需要 32,256 秒 ==> 538 分鐘 ==> 9 小時才能傳完。
一個半小時(90分鐘)後,網友D也開始下載,網友D剛開始時以16KB/Sec的速度在接收檔案,大約10分鐘後變成剩下約1.2KB/Sec的傳輸速度在接收檔案。
假設只有這四位網友在下載檔案,那麼所有網友完成檔案傳輸的時間就是大約13小時 後。
[xTheme 在 2007-9-9 05:05 PM 作了最後編輯]
25 評論
真是詳細
驢子用了4年
一點也沒有想要去了解原理
發佈者 : su72amd
@ 2007-8-21 11:46 PM
太專業了,結果只有一直往下轉轉轉看圖而已..............XD
發佈者 : swat_martin
@ 2007-8-31 07:28 AM
哇,做的真詳細
可不可以借我用一下
我要解釋給朋友的
呵呵^^a
發佈者 : cidchen
@ 2007-9-8 12:38 AM
您請隨意取用哦~
發佈者 : xTheme @ 2007-9-9 12:34 AM
既然已有更佳的版本
那舊的殘缺版就卸下囉!
置頂位置過高可能反而被忽略
所以我先將顏色標亮吧!
發佈者 : innison
@ 2007-9-9 05:00 PM
這個....
小弟只能送花了
我都不知道要講什麼....
對於原理..我太慚愧了
發佈者 : beartree
@ 2007-9-10 10:17 AM
上了一課,謝謝
不送花就說不過去
發佈者 : samuel_3533
@ 2007-9-11 09:20 PM
大大 你太屌了 請受小弟一拜 orz
發佈者 : mancool1234
@ 2007-9-11 10:22 PM
樓主解釋的很詳細喔
長久以來只會騎驢
但完全不知道驢子怎麼跑~~~真是慚愧
發佈者 : 00880707
@ 2007-9-11 10:45 PM
eDonkey已經成為過去式了
有沒有eMule 的教學呢 ?
雖然兩者有許多相似處,但終究不是完全一樣!
[jazzblue 在 2007-9-11 11:21 PM 作了最後編輯]
發佈者 : jazzblue
@ 2007-9-11 11:19 PM
我覺得版主應該要提一提WINDOWS XP SP2 所做的連線數限制
像我這次重灌電腦一直沒注意到這一點,導致平常只能以20k下載在龜爬
一修正之後,下載馬上跑到80k喔(H 2m / 256k).....
發佈者 : boxturtle
@ 2007-9-12 12:50 AM
太專業了...
佩服佩服
哪像我
只懂的抓東西....
發佈者 : skyjay171
@ 2007-9-13 05:19 PM
這真是一篇好文章及教學.
讓小弟我增長不少之知識.
平常只知騎驢.不知其源
感謝大大詳實說明.
感溫阿!
發佈者 : navy
@ 2007-9-13 10:54 PM
被置頂.推精華~
還真不是沒有原因~
當之無愧阿,大大~
謝謝大大分享嚕~*
發佈者 : chriswjm
@ 2007-9-14 08:25 PM
對"傳輸速度"一直不是很瞭解,原來下載人數的影響有這麼大啊
發佈者 : ashoola
@ 2007-9-14 10:45 PM
| |||||
可打印版本 | 推薦給朋友 | 評分 |