上一篇提了Winny的運作原理, 現在讓我們來了解一下Winny這套軟體的緣起吧.

Winny作者金子勇(Isamu Kaneko), 原是日本東京帝大(經網友雞屁更正: 東京大學)的資工所研究助理, 也曾在日本自動化能源研究機構(Japan Atomic Enerygy Reserch Institue)待過一陣子. 他最初在2ch是以匿名身分發表文章的. 由於2ch鄉民對匿名者都直接以文章編號稱呼之(有點類似Ptt上常講的五樓), 因此他的網路化名就變成47號.

在2002年Winny出現之前, 日本本地最流行的P2P軟體是WinMX. WinMX使用與Napster相當類似的網路架構(Opennap). 使用者先連到一個伺服器(日文術語叫』鯖』), 然後才能與在同一個鯖的使用者交換檔案. WinMX有一個特點, 就是每個人能控制要把檔案分享給誰, 因此如果你高興的話, 可以讓某個人插隊 : 讓他優先從你電腦上下載他要的檔案. 這個特性進而衍生出一種交換機制: 要下載時, 得先請問對方願不願意讓你下載, 而對方往往是先看幾眼你電腦裡有哪些東西, 如果有他感興趣的, 則兩方才會進行下載. 換言之, WinMX的運作方式就像是回到貨幣還沒出現的時代, 古早人所採取的』以物易物』. 為了搏取對方的好感, WinMX使用者常被教導要』懂禮貌』: 手上的檔案要多, 要先把自己手上的檔案整理得一清二楚, 讓對方看你檔案清單時能快速找到他要的東西, 說話要客氣, 網路連線速度要開高一點…等等.

雖然WinMX在2002當時在日本就已經相當流行, 但金子勇顯然對它相當反感. 他曾經說過, WinMX只能算是』交換』軟體, 而不能算是』分享』軟體. 因此在2002年中他獨立以c++程式語言, 撰寫了Winny這套軟體. 從名字就可以看出Winny跟WinMX的關係 : winny的』ny』正好就是』mx』的下一個字母, 代表Winny比WinMX還要先進.

Winny是從Freenet改寫而來, 因此許多特性還保留著, 包括了Freenet的

  • 匿名連線
  • 下載/檔案發佈機制
  • 無伺服器的搜尋方式

嚴格講起來上面這三點都是freenet特有的網路下載機制造成, 有興趣的人可以參考上一篇的說明. 但也由於freenet無伺服器的搜尋方式, 使用者只能搜尋身邊數位鄰居, 導致可能會找不到想要的檔案, 因此Winny乾脆發展出下面這套方法:

使用者加入Winny時可用一句話, 描述自己想抓哪一種類型的檔案, 接著在往後的日子中, 只要遇到跟你描述相當接近的使用者, 則你們之間成為鄰居的可能性就會越強. 這個描述字眼就叫做Cluster Word (直譯: 群組關鍵字?). 也就是說, 隨著時間的演變, Winny的網路大概會長這樣:

三個顏色底分別代表不同Cluster word的使用者們, 例如左上角可以想像成是使用』電影』作為關鍵字的群組, 右上角是』音樂』, 下方是』卡通影集』. 可以看到使用同一個Cluster word的使用者之間連結會比較緊密, 因此在群組內搜尋相關關鍵字時(例如下方的群組成員搜尋』柯南』), 找到檔案的機率會高得多.

根據奇想空間的整理, 在winny中這類Cluster word大概長得像這樣(節錄):

  • 動畫:「寿限無寿限無五劫の擦り切れ海砂利の水魚水行末雲来末風来末食う寝るところに住むところやぶら小路ぶら小路パイポパイポパイポのシューリンガン、シューリンガンのグーリンダイ、グーリンダイのポンポコピーのポンポコナーの長久命の長助」
  • 特撮:「【特撮】好物あんぱん【特撮】」
  • 動畫歌:「アニソン共有楽団」
  • Drama CD:「【Winny】サントラ・ドラマCD専用スレ【氷結野菜】」
  • 一般漫畫:「【漫画】強くて悪い砂漠のヤムチャ【(一般コミック)】」

    也就是說如果你主要想抓/分享的檔案是動畫的話, 麻煩把Cluster word設成上面那一長串…此外, 對於新加入winny的使用者, 總要提供一些』初始鄰居』給他們當作入門的起點. 這就是安裝啟動winny時要加入的』初始node』 (node, 就是代表網路上的一台電腦與相對應的IP位置). 這些初始node的資料經過加密處理, 都長得像下面這個樣子:

    @c2f6a63ea966c63b5cd29fce831958735f89d02b
    @3b5aa583ff1d58b688288c7b6f096762eb
    @2af756689892191cf3700837fab48477bbe51f4a0dd4
    @31393900072e14fa66a62ed8eaafbd38dd1388e4a90d

    如果你覺得自己現在的鄰居素質不夠好, 搜尋不到自己想要的檔案, 可以定期增加幾個這樣的新node到自己的鄰居清單中, 或許可以有不同的收穫.

    還有, Winny也提供留言版功能. 一個使用者可以在自己電腦的winny留言板上寫下一些資訊, 可能是聊天訊息, 也可能是某些檔案的新增公告, 供有興趣的使用者觀看或留言.

    (Update : 感謝網友mousep補充, Winny還有三點從Freenet承襲而來的特性:

    1. Cache File, Winny會將檔案存在Cache file裡面, 即使還沒下載完也能開始幫助上載, 增加分享的速度
    2. Filter Keyword, Winny可以設定Filter keyword, 指定哪些檔案我不想幫助分享, 所以可以設定成不想幫忙分享盜版或違法檔案
    3. 分享者可以設定一組Key, 類似簽名, 除了分享者以外別人無法偽造, 藉此來分辨特定的分享者所放流的檔案, 大大減少拉到偽檔的可能

    )

    Winny推出後隨即受到日本大眾的歡迎, 在短短時間內立即榮登日本最受歡迎的P2P軟體寶座. 然而也因為如此, Winny開始也面對一些惡意網友的攻擊. 2003年八月, 一種名為Antinny的病毒開始出現在Winny的網路上. 這可能是我印象中第一隻專門攻擊特定P2P軟體的病毒. Antinny的攻擊內容大致如下 (from Wiki):

  • 把你沒打算公開的檔案發佈到winny網路上
  • 上傳怪怪圖片到相簿網頁上
  • 對保護版權的公司(如智慧財產局等等)網站進行DOS攻擊.

    第一點很像是前一陣子Foxy傳出的爭議. Foxy是因為預設分享資料夾全開, 導致一些軍方警方內部文件散佈在網上. Foxy資料外洩還可歸咎為使用者自己的不小心, 而Antinny則是惡意地把你的檔案公佈在Winny上. 又, 由於Winny有自動把檔案發佈給網友的特性, 導致檔案一旦公佈後就再難刪除. 這首先導致日本軍方自衛隊的機密資料嚴重外洩, 隨後全日本航空(All Nippon Airlines)也尷尬的宣布他們在日本29間機場的安全密碼已經散佈在winny上. 接下來, 最嚴重的外洩事件, 是有人發現日本岡山縣警局內部的偵查資料通通上了winny, 裡面有一千五百件還在偵訊中, 且怎樣都不應該公開的機密資料, 像是還在偵辦中的嫌犯姓名, 遭到性侵害的婦女受害者姓名…等等.

    原本只是單純的P2P的分享軟體, 經過Antinny的一攪和, 變成全國知名的危險軟體, 至此, 政府也不得不介入調查這套軟體了…Winny的後續發展會是如何?

    待續

  • http://mmdays.wordpress.com/2007/05/20/japan_p2p_2/

日系P2P原理探究(二) — Winny, 日本崛起相关推荐

  1. Runtime底层原理探究(二) --- 消息发送机制(慢速查找)

    源码 /*********************************************************************** * lookUpImpOrForward. * ...

  2. 并发队列-无界非阻塞队列 ConcurrentLinkedQueue 原理探究

    并发队列-无界非阻塞队列 ConcurrentLinkedQueue 原理探究 http://www.importnew.com/25668.html 一. 前言 常用的并发队列有阻塞队列和非阻塞队列 ...

  3. KVO-基本使用方法-底层原理探究-自定义KVO-对容器类的监听

    书读百变,其义自见! 将KVO形式以代码实现呈现,通俗易懂,更容易掌握 :GitHub   -链接如果失效请自动搜索:https://github.com/henusjj/KVO_base 代码中有详 ...

  4. 计算机信息管理系统设计原理探究,计算机信息管理系统设计原理探究

    盛巍 摘 要:在计算机信息技术发展和应用速度不断提升的背景之下,我国社会各个行业的计算机信息管理系统需求不断提升.人们可以通过计算机信息管理系统收集自己需要的信息资料,并对数据信息进行分析,在各项决策 ...

  5. iOS底层原理探究 第一探. 事件传递和响应者链

    一. 声明:  本文意在探讨, 也参考了几位大神的文章, 在最后我会把链接发出来, 如果有理解错误的地方, 请大神们指正哈! 二. 前言:  最近自己做项目的时候, 用到了UITabbarContro ...

  6. Leveldb学习笔记:leveldb的使用与原理探究

    文章目录 前言 一.leveldb是什么? 二.leveldb的使用 1.打开一个数据库 2.Status 3.关闭一个数据库 4.数据库读写 5.原子更新 6.同步写 7.并发 8.迭代器 9.Sn ...

  7. Android wifi探究二:Wifi framework层源码分析

    上一篇博客初步认识了wpa_supplicant的作用和使用方法,并且尝试着梳理了wifi的大框架,不过,java层的框架我们忽略了,没有分析,也就是说上一篇博客简单的指出了wifi代码的大框架,那么 ...

  8. java lock的原理,Java中Lock原理探究

    在对于lock锁的使用上,很多人只是掌握了最基础的方法,但是对实现的过程不是很清楚.这里我们对lock锁功能的实现进行分析,以ReentrantLock为例,分析它的锁类型,并对相关的调用方法进行展示 ...

  9. vmware nat模式原理探究,实现虚拟机跨网段管理

    vmware nat模式原理探究: 理解nat模式,我们能更加了解主机与虚拟机之间如何通信,以及虚拟机如何实现上网. 以及便于我们分析虚拟机与主机无法通信和无法上外网的问题. 下面通过实战:虚拟网络拓 ...

  10. KVM 虚拟化原理探究--启动过程及各部分虚拟化原理

    KVM 虚拟化原理探究- overview 标签(空格分隔): KVM 写在前面的话 本文不介绍kvm和qemu的基本安装操作,希望读者具有一定的KVM实践经验.同时希望借此系列博客,能够对KVM底层 ...

最新文章

  1. 完全理解Python迭代对象、迭代器、生成器
  2. OSPF-lsa-types
  3. 走进 San CLI(下):实现原理
  4. ACL 2020 | 用于链接预测的开放知识图谱嵌入
  5. Git .gitignore文件忽略(自己做过测试了)
  6. PowerVR 6XT/6XE系列移动GPU
  7. vensim逆向供应链仿真
  8. 为什么微信无法打开html文件,微信网页版打不开怎么办?微信网页版无法打开的解决方法...
  9. IPsec简单实验-IKE协商
  10. 怎么学好html5和css3,如何提高你的CSS水平
  11. 金蝶新建生产领料单,单据编号不能自动填写
  12. 论文格式设置-页面设置、页眉页脚、自动生成目录等
  13. 多啦a梦的python代码_分享一篇文本文档画哆啦A梦代码!
  14. Mac通过git上传代码到Gitee
  15. 现在Python就业很难吗?百万程序员都在关心的问题
  16. 【three.js:语法】光源使用详解2-3(聚光灯 SpotLight、平行光 DirectionLight 、环境光 HemisphereLight、镜头光晕 LensFlare)
  17. 200、无线网桥与无线AP的带机量是多少?一篇文章搞明白
  18. 最小二乘法,简明公式整理,数学证明,matlab程序(自写代码、lsqcurvefit函数、fminsearch函数)
  19. 基于springboot的中国国家图书馆管理系统项目(管理功能)
  20. 我的Android前生今世之缘-学习经验-安卓入门教程(六)

热门文章

  1. 银行流水、财报、年报、电费分割单等各类文档一键提取,达观表格提取工具再升级!
  2. 35岁老年程序员的绝地翻身之路
  3. 自学4年多 Github 上斩获 90k Star! 聊聊自学习编程的正确姿势!
  4. 速读原著-TCP/IP(互联网与实现)
  5. Ubuntu CURL下载报错:curl: (77) error setting certificate verify locations:
  6. 分析TVS管数字移动电路中的设计与应用
  7. 怎么看服务器网络带宽?该怎样选择服务器的网络带宽和流量?
  8. 毁掉一家公司最好的方式,就是跟员工讨价还价
  9. [ESP32/ESP8266专题笔记-5] ESP8266开发板-Micropython-串口控制继电器
  10. java 只保留字母_java编程问题,急急急!输入一个字符串,如果字符串中存在字母a的次数大于1,则只保留第一个a,...