電驢作為 P2P 下載重要方式,逐漸被大眾接受。但無論新手還是玩家數月者,對許多核心問題仍模稜兩可、誤解重重。本文集中解答高頻疑問,建立本質認知。
Peer-to-peer 縮寫,意指「點對點」。1999 年 18 歲 Shawn Fanning 開發 Napster 引入概念。不僅是軟體架構,更是社會模式體現。網路 P2P 架構分兩大類:
FastTrack(Kazaa 底層技術)迅速崛起取代 Gnutella 成 P2P 霸主。
第二代普及後出現「只取不予」自私現象,發展遇瓶頸。eDonkey(2000 年 Jed McCaleb 創立)改變遊戲規則,標誌第三代興起:
ED2K://。eMule 為 eDonkey 的 Mod(如 OSP 之於 Quake3),獨到之處在於開源。基於 eDonkey 協議,直連各類伺服器,並提供 eDonkey 缺乏功能:自動搜尋伺服器、保留搜尋結果、與用戶交換伺服器/檔案資訊、優先下載檔頭尾利於預覽,使用更便利,同獲「電驢」美譽。繼承二代無中心純分散特點,引入強制分享機制,避免前幾代隨意性與低效率。
建立於 MFTP 之上。網路由伺服器端與客戶端組成。伺服器端是客戶端連接、搜尋尋找下載源的橋梁,列表如電話簿。客戶端瀏覽獲取檔案擁有者資訊。下載過程中無檔案資料經過伺服器端,純客戶端點對點直連。
每客戶端連一伺服器為主伺服器。連接時客戶端告知主伺服器分享檔案、IP 等資訊,伺服器記錄所有登入者資訊。本伺服器搜尋時匹配記錄回饋結果。用「擴展搜尋」時,請求與應答透過限制頻寬的 UDP 封包連到客戶端伺服器列表對應 IP 的伺服器。
選檔下載時,先收集擁有該檔客戶端列表:查主伺服器登入用戶 → 再查其他伺服器登入用戶。找到來源後,向每客戶端請求不同片段,最終拼裝完整檔。暫停/續傳僅斷開/恢復客戶端間 TCP 連線,續傳時僅發送 22 bytes 給伺服器,不佔用伺服器資源,甚至暫停時完全不經伺服器。
希望讀完後,大家對 eMule 原理有本質認識。