Re: winny的原理
幫更改排版及加上看完後的心得(不要打我QQ)
原轉錄者為RobertChase大大
原文http://mmdays.wordpress.com/2007/05/16/japan_p2p_1/
(Mr. and Mrs. Days的部落格)
他們寫文章很詳細=w=
做專題的時候我也有時會到這看看自己的缺失說
文章內容(當然圖片跟顏色沒有XD)
從BT, IP-TV系列之後, 好一陣子沒有回到P2P主題上了. 一方面是因為懶(這類的題目
要做功課啊…), 另一方面則是對這次的主題感到相當惶恐. 惶恐? 因為這次我要講的
P2P軟體主題, 是在台灣不甚流行(其實也只有日本流行)的Winny. 由於我自己親身接觸
Winny的經驗少之又少, 對日文又不了解, 只能從一些相關的中文新聞與討論看到旁枝
末節, 因此接下來的文章如果有明顯謬誤的話, 還請各位不吝指正.
日本所流行的P2P軟體與世界其他各地非常不一樣. 根據去年12月的報導, 排名第一的
Winny大約每日有40萬人次, 再來據說是WinMX, 第三是Share, 約有10~15萬人次. 聽慣
BT和eMule的朋友一定覺得很奇怪, 日本人幹什麼偏偏要特立獨行, 別人在用eMulel你
們偏偏愛用自己寫的Winny呢? 其實說起來也沒這麼奇怪, 早期的P2P軟體(像是Napster
啦, Audiogalaxy等等)是只支援英文的, 想找其他語言的可麻煩了. 還記得以前我在
Napster上打”faye”(王菲英文名), 跑出來一堆”chi_ai_mo_sen_ran”(只愛陌生人)
…. 在這種情況下, 想用自己語言的日本人只好自己寫囉,這套軟體後來大家用慣了,
也就不想改用eMule了. 這就是本系列的主角: Winny. (台灣人也自己寫過中文的P2P啊
! 別忘了ezPeer與Kuro這兩套軟體)
Winny的作者叫做金子勇(Isamu Kaneko), 如果對這方面新聞有印象的人, 應該知道他
也是日本論壇2ch的鄉民之一. 他在2ch上的代號叫47氏, 也被稱作Mr. 47或直接叫47.
關於金子勇本人的創作源起與後續發展, 在下一篇會探討. 金子勇約在2002年中時在
2ch上發表這套軟體, 到了2003年12月時winny已經成為日本最大的p2p軟體, 約有25萬
人使用.
金子勇曾經出過一本書叫做Winnyの技術,
(圖)
當中詳細解說了Winny的原理, 不過尷尬的是, 通篇是以日文寫成, 在網路上也找不到
中文或英文的翻譯. 幸好, 雖然看不懂日文, 但是該書卻寫滿了另外一篇著名的P2P網
路: Freenet的名字. 從Freenet的架構以及各種winny相關的介紹文章看來, 極大部分
的Winny承襲了Freenet理念與演算法. 也好, 今天這篇就讓我們從Freenet著手, 看看
winny的創作理念是什麼吧!
(圖)
Freenet的標誌
Freenet是以Ian Clarke為首的一群美國人所研發的. 他們的創作理念在論文當中寫得
非常清楚. 他們想創造的p2p網路是:
Anonymity for both producers and consumers of information
Deniability for storers of information
Resistance to attempts by third parties to deny access to information
Effcient dynamic storage and routing of information
Decentralization of all network functions
翻譯成中文就是
匿名地發布與分享資訊
無法知道誰是資料源頭
無法讓人查出你儲存了什麼資訊
快速的檔案更新與網路資訊更新
所有功能都以分散(純P2P)的方式進行
Ian Clarke認為, 真正的言論自由來自於完全的匿名, 所以才會開發出這一套“不知道
檔案源頭是誰, 也不知道分享給誰”的軟體. 當然, 這也引起了衛道人士的抗議, 認為
會被有心人士用來分享違法資訊, 像是猥褻兒童圖片或是違法影音檔等等. 其實這類議
題幾乎是P2P分享軟體的宿命了, 一直游走在法律邊緣. 不過這不是今天的重點, 我們
先來探究Freenet是怎麼作的吧!
freenet是一套純p2p軟體, 換言之, 在系統中沒有任何伺服器的存在, 因此一個使用者
若要進行搜尋, 只好像我先前在透視BT4中所說, 派出小螞蟻們去向各個鄰居敲門了.
過程如下:
(圖)
圖中的黑點a就是搜尋發起人, a先詢問鄰居b知不知道這個檔案在哪, b看看自己的身上:
沒有這個檔案, 於是就問另一個鄰居c, c說他也沒有, 而且c很孤僻不認識其他鄰居, 沒
辦法再幫忙問, 於是將問題丟回給b. b收到c的拒絕信後不死心, 繼續問他認識的其他鄰
居, 直到找到為止.
整個流程用文字表達大概是:
a問b, b問c, c說不知道;
b問e, e問f, f竟回頭問b, b當然不知道;
e再問另一個鄰居d, 終於在d處找到檔案.
經過這一番折騰(圖論上把這種方式稱為DFS : Depth First Search), 終於找到一個有
檔案的人了. 那麼d會直接將檔案回傳給a嗎? 錯了, 其實在整個過程中, 每個人只知道
發訊息問他檔案的人是誰, 並不會紀錄誰是最源頭, 像e就只記得b向他問檔案, 而e最後
是把這個問題丟給d去處理; b也只記得a曾經問過他, 而b最後是在e處找到解答的; 每個
人只記得誰問他這個問題, 以及他把這個問題丟給誰. 在這種情況下, d僅能把檔案丟給
e, 而e也只知道上游是b, b最後再把檔案丟還給他的上游, 也就是一開始的詢問者a.
稍微熟悉一點網路運作的人一定會覺得這樣超沒效率; 要檔案的人是a, 幹麻沿路不作紀
錄, 直接讓d回傳檔案給a就好了啊! 何必這樣沿路傳, 結果a,b,e,d電腦裡面都有一份檔
案備份呢, 而且a還要等b,e傳完檔才能下載? 呵呵, 可別忘了這套系統的目標在於匿名
分享啊! 讓我們來看看這種做法有什麼好處:
1.a可以不承認自己是下載者. a可以謊稱是另外一個上游x想要這個檔案, a只是好心幫
忙問而已
2.d可以不承認自己是檔案源頭. d可以謊稱是另一個下游y擁有這個檔案, d只是好心幫
忙問而已
3.如果該檔案是該區網路(a,b,c,d,e,f)人人都想要的熱門檔, 這麼一來不但b,e不用搜
尋就會擁有檔案, 而且下次c或f想搜尋這個檔案的時候, 隨便問一個人都抓得到.
網路上關於winny的討論文章, 總是會很驚奇說:”我又沒有下指令說要抓這個檔, 為何
我電腦會自動出現這個檔, 而且還正在上傳給我不知道的人?” 這就是原理所在了.
Freenet上值得一提的還有”發佈檔案的過程”. 假如今天a手上有一個新檔案, freenet
軟體偵測到後會自動發一個搜尋的訊息出去, 先看看網路上是不是已經有同名的檔案.
如果網路上已經存在同名檔案, 則a會收到別人寄來的檔案, 證明檔案撞名了; 如果找了
好幾個人都找不到同名的檔案, 則a會很高興地將手上的檔案依著最後的路線發佈出去.
從前例看來, 如果找到d時放棄的話, 則發佈路線會是a->b->e->d.
Freenet的檔案搜尋與新增功能, 從一方面看來有助於檔案的散佈, 但從另一方面看來,
也可說是浪費了大量的頻寬, 將檔案散佈給不知道需不需要的人; 而且搜尋極沒效率,
只能搜索附近幾個認識的鄰居; 因此我在年少的大學時代, 幼稚地認為這套系統只會停
留在學術研究階段, 不會大紅; 哪知道Freenet經過金子勇的改寫之後, 以Winny的姿態
紅遍東瀛, 從2004至今, 仍穩坐日本最熱門的P2P軟體. 如果各位版友對日本動漫畫有
狂熱興趣, 相信對這套軟體應該不陌生才是.
下一篇來寫寫Winny的緣起, 以及它在日本掀起的滔天巨浪, 敬請期待.
延伸閱讀:
Freenet in Wikipedia
http://en.wikipedia.org/wiki/Freenet
Winny in Wikipedia
http://en.wikipedia.org/wiki/Winny
Winny日本官方網頁
http://winny.cool.ne.jp/
Winny安裝手冊(該站有大量Winny安裝教學, 值得有興趣的人研究)
http://blog.comicparty.com/post/1/106
(這個部落格格主是ACG愛好者沒錯XD)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.122.102
※ 編輯: mgcmsc 來自: 140.113.122.102 (05/19 12:03)
推
05/19 16:35, , 1F
05/19 16:35, 1F
→
05/19 16:49, , 2F
05/19 16:49, 2F
推
05/19 20:26, , 3F
05/19 20:26, 3F
→
05/19 20:27, , 4F
05/19 20:27, 4F
討論串 (同標題文章)
P2PSoftWare 近期熱門文章
PTT數位生活區 即時熱門文章