前言:事實上leech/leecher這個詞最早出現在p2p世界的時候並不是特指吸血的,而是相當於今日的download,即正在下載的客戶端(相對於下載已經完畢正在進行上傳的客戶端)。leecher是何時被用來指代用各種手段使得數據不公平交換的技術和客戶端,已經不可考,但是無疑的,emule世界出現的anti-leecher相關技術是最為明確的標誌。
這篇文章將不再考證anti-leecher出現的歷史和背景,而是主要著眼於emule世界中leecher的性質和行為。
下文中所說的emule網路,指代所有使用eD2K協議進行數據交換的p2p網路(為了避免使用電驢網路這個目前在中國指代意義混亂的名詞)。
一、leech與leecher
關於吸血的定義,我在另一篇文章什麼是吸血,如何定義吸血行為,如何對抗吸血行為已經討論過了。這裡要重新強調的一點是,必須從行為的本質上分析吸血行為,而不是單純地從上傳或者不上傳來判斷是否屬於吸血。
首先我將展開論述這一點。
如上所述,emule是建立在p2p(=peer-to-peer ,peer這個詞自身就含有地位平等的意義)上的網路,因此它是建立在平等的數據交換這個基本前提上的。這裡的平等,與公平有本質上的不同,它強調的是客戶端之間的地位是對等的(即不是伺服器端到客戶端的數據傳輸方式),因此每個客戶端的(獲取數據的)權利和(上傳數據的)義務是平等的。emule的公平是由平等的數據交換而產生的公平,不是一般意義上的我給你多少你就給我多少的公平。emule並不要求獲取了1G的數據量就必須上傳1G的數據量(也就是公平),而是要求將所獲取到的數據在其他客戶端發出需求的時候回饋至網路中。在這個層面上,emule的信用系統(credit system)的作用是巨大的,它保證了上傳數據較多的客戶端會取得較高的數據獲取優先權,從而實現了數據傳輸的良性循環。同時通過一些策略保證了新加入網路的客戶端也能夠較為優先的獲取數據(因為新加入的客戶端必然沒有很大的上傳積累量,即沒有很高的因上傳而帶來的信用「積分」),以利於網路能夠不斷拓展。而emule的文件優先順序的設計,使得信用系統(即俗稱的積分)成為程序確定上傳哪個文件、上傳多少給某個特定的客戶端的唯一依據,這也是保證數據傳輸的良性循環非常重要的一環。(因此使用者可以控制自己的哪些文件用於上傳,但是不能控制將某個文件上傳給特定或確定的客戶端,通常所說的emule的公平的意義正在於此。)
吸血行為恰好相反。吸血行為的本質,就是通過控制上傳(的具體內容和數據量),來欺騙性的獲得數據獲取優先權,以便能夠最大化地進行下載。leecher並非不上傳,因為在emule的credit system的作用之下,不上傳數據而想獲得下載,必須依靠信用系統給予新客戶端的「優惠」,但是這個「優惠」具有時效性不能長期使用,在下載較大的文件時必然會產生一段時間之後幾乎無法獲取數據的情況。(相應的,有一種吸血行為是每次啟動都變換userhash來偽裝成新手,這是很不便的,因為並不是所有的客戶端程序都可以隨時關掉重開的)。
二、leecher的上傳與正規客戶端的上傳的差異
上面已經論述了leecher必須上傳的原因,下面將要講到的部分,就是leecher的上傳如何體現了leecher的本質。
在我們所熟知的http下載中,並不存在吸血這樣的事物。leecher是伴隨著p2p出現的新鮮事物,它的基本特徵就是為了最大化數據的獲取,即使破壞數據傳輸的良性循環也在所不惜。因此我們通常說,吸血是「一切上傳僅為了下載」。它不考慮整個網路的數據循環和發展,而只注重最大化下載。如果是在http下載中這無可指摘,但是放到依靠平等的客戶端互相傳輸數據的p2p網路中就變成了嚴重的問題。
下面的這個部分,並不涉及community boost所形成的私有網路。
leecher向正規客戶端上傳數據是具有選擇性的。它不向自己沒有數據需求的客戶端上傳數據,甚至採用failed upload這樣的技術手段騙取上傳積分,以提高在正規客戶端的上傳隊列中的排名,更早更多地獲得下載。因此,它上傳的數據,不是為了回應其他客戶端的請求以將數據在網路中傳播出去形成數據的循環,而是滿足自身下載需求。換言之,它的「給」,從頭到尾都是為了「拿「。
leecher不考慮與其他客戶端之間的數據交換,只是一味的通過各種技術手段盡多儘快的獲取數據,因此會造成在宏觀上的數據單向流動,從而會破壞數據的良性循環,影響emule網路的正常傳輸,嚴重時就會直接毀掉依賴對等傳輸的emule網路。
三、community boost(社區吸血)
社區吸血是當前非常典型的、也是較為主流的leecher類型。社區吸血的主要特徵就是一個小團體內部進行數據交換,但是極少反饋給作為數據來源的全球emule網路,通常把這個小團體稱為」私有網路「(private network)。
社區吸血的標誌性技術手段,是通過特定的用戶名(或用戶名的部分)及/或userhash及/或mod string來對特定的客戶端進行加分,以給予其相對較高的數據獲取優先權。非常明顯,這個信用系統是特別改造過的,且這種信用系統與對上傳者高回報的信用系統(常見的非官方信用系統)是完全不同的。私有網路的內部數據交換,可以是不完全」公平「的,但是因為其小範圍的特性,私有網路的成員仍然享有相對於公共網路成員而言完全不可想像的數據獲取優先權。另外,由於社區吸血的私有網路內部,使用的多是一些leecher mod或者有吸血行為/技術手段的客戶端,本身就對emule網路有一定的破壞性,使得社區吸血幾乎就相當於一個毒瘤。
必須指出的一點是,社區吸血並不是通常想像的那種一個自給自足偶爾跟外界交換的」小水塘「,它的每一個節點都在不斷的從公共網路中獲取數據,但是獲取到的數據在這個私有網路內部的交換的數據量遠遠大於回饋至公共網路的數據量。因此不管是從微觀上看還是從宏觀上看,社區吸血都造成了數據交換中事實上的大範圍不平等。
10條評論隱藏
@feathia 有人說真理不辯不明,其實也可以說不爭不進步,若個人身心疲憊,則獨善其身即可,爭論的目的從來不是為了東風壓倒西風,只為了表達自己的觀點。
@祈禱永恆的愛 emule能提供一種雙贏的結果,而xl無論怎樣玩最終的結果也是零和遊戲。為了維護遊戲規則,讓遊戲的結果達到雙贏,我覺得在一定限度內dlp和ipfilter是合理的,而吸血的定義也是合理的。既然emule世界沒有強有力的「法律」,那用大家都認同的dlp和ipfilter這種融合和司法和執法行為的工具來維持公平(也就是盡量提供達到雙贏的環境)也就合情合理了。
歪樓的評論就請盡量少點吧。
@killsophia 啊呀你小心點,如果祈禱永恆的愛一會兒又認為「歪樓」一詞是在這裡特指他,有損他的人格名譽怎麼辦?又拿這個法那個法威脅取emulefans博客資料,威脅要告你怎麼辦?年輕啊,涉世不深啊 💡
@kao 有什麼可威脅的,即使是editor也不代表就等於emulefans這個blog。另:什麼樣程度的言論屬於誹謗,法律上有明文規定,不是某個人覺得是就是的。
舊話重提:請回到本文的主題上吧。
關於某愛同學的長篇大論,鄙人基本上已經看懂了(絕不是說您寫的文字如此高深以至於看不懂才「理解錯」您的意思),鄙人只想說,如果您真的覺得ed2k乃至P2P用戶(指不指吸血者不重要(不是說您是跟他們一幫的))是在「貶低」您,「圍毆」您,您盡可以憤而離開,依據《中華人民共和國憲法》,《中華人民共和國刑法》和《中華人民共和國民法通則》向您所在地的中級人民法院或高級人民法院提起訴訟,或者您樂意的話直接來把我砍了,不過您還要普及您那「愛」的理論,估計您是不會停止辯論的。
註:引號並非引用,也並非諷刺,僅為對無法確認之事的分隔
這個需要Mark下,慢慢研究…
官方emule好像沒有反吸血的措施,那不是很慘,上傳列表中一堆迅雷。
@kingwoniu 不會沒有,而是很弱,但關鍵問題是國外沒有那麼多迅雷似流氓軟體和用迅雷的。
吸血驢與整世界潮流背道而馳,被全球文明驅逐剿殺,那是自食其果。