- 論壇徽章:
- 2
|
Normal
0
0
2
false
false
false
MicrosoftInternetExplorer4
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:標(biāo)準(zhǔn)の表;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0mm 5.4pt 0mm 5.4pt;
mso-para-margin:0mm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:Century;
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
關(guān)于BitTorrent
協(xié)議的幾點(diǎn)感想
1) 使用文件info的hash值作為文件的id(即Info_hash)
為什么不使用順序編號(hào)或者GUID之類的東西呢?
如果采用順序編號(hào),誰來編號(hào),發(fā)布者?還是某個(gè)服務(wù)器?如果是發(fā)布者,兩個(gè)不同的發(fā)布者就不能保證編號(hào)不重復(fù)。如果是某個(gè)服務(wù)器,那這個(gè)ID只在該服務(wù)器的勢(shì)力范圍內(nèi)有效,不夠靈活,也增加了發(fā)布的復(fù)雜度。
至于GUID,可能是個(gè)辦法。但感覺不太保險(xiǎn),誰知道發(fā)布者的GUID從哪兒來的。
但使用文件info的hash值作為文件的id(Info_hash)就完全不一樣了。
文件info中包含所有片段的Hash值,所以info的hash值其實(shí)和文件內(nèi)容是有對(duì)應(yīng)關(guān)系的。除非2個(gè)文件的內(nèi)容完全一樣,并且它們的發(fā)布者給它們?cè)O(shè)的屬性(文件名,片段長(zhǎng)度等)完全相同,否則hash值發(fā)生沖突的概率小到可以忽略不計(jì)。
這個(gè)Info_hash本身就能標(biāo)識(shí)文件,只要種子和下載者提供的Info_hash相同,就可以認(rèn)為它們指的是同一個(gè)文件。
這樣一個(gè).torrent對(duì)應(yīng)多個(gè)tracer也是有可能的。
2)數(shù)據(jù)塊的管理
對(duì)于多個(gè)文件,按文件順序?qū)⑺形募钠谓y(tǒng)一編號(hào),管理,顯然簡(jiǎn)化了處理。
3)為什么使用bencoding編碼
-交換性好(比較2進(jìn)制編碼)
-機(jī)器讀取方便
-解編碼器比較容易實(shí)現(xiàn)(比較其他文本編碼,如XML)
-可以在字符串中自由包含2進(jìn)制數(shù)據(jù),不用轉(zhuǎn)義。
-可擴(kuò)展(比較java的屬性文件)
-人工可讀
4)‘choke’,‘unchoe’,‘interested’,’not interested’的作用
‘choke’,‘unchoe’告訴對(duì)方,我能不能或愿不愿意給你發(fā)數(shù)據(jù)。
interested’,’not interested’ 告訴對(duì)方,我愿不愿意接受數(shù)據(jù)。
我想暫停的時(shí)候,應(yīng)該發(fā)送’unchoe’和’not interested’中止對(duì)方的數(shù)據(jù)收發(fā)。
疑問:
Peer_id的作用,以及Peer_id為什么要通過hash運(yùn)算得到?不清楚
參考:
http://blog.csdn.net/honkerhero/archive/2007/07/03/1677022.aspx
本文來自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u2/72988/showart_2185304.html |
|