2013-07-03 29 views
3

我試圖實現Bittorent在C.首先,編寫代碼片段之前,我試圖用網頁瀏覽器發送以下信息(URL)來跟蹤服務器。Bittorrent:爲什麼peer字段的值是二進制的,而不是Bencoded列表?

,你可以嘗試這個網址。

http://torrent.ubuntu.com:6969/announce?info_hash=%9ea%80%ed%e7/%c4%ae%c8%de%8c%b0C%81c%fbq%3cJ%22&peer_id=M7-3-5--%eck%a8%2a%7f%e6%3ah%84%f2%9d%c5&port=43611&uploaded=0&downloaded=0&left=0&corrupt=0&key=00BA7F86&event=started&numwant=4&compact=0&no_peer_id=0 

我從this link被命名爲Xubuntu的-13.04-桌面-i386.iso並具有9e6180ede72fc4aec8de8cb0438163fb713c4a22爲SHA-1的值下載torrent文件。

然而,上述請求發送後,我得到

HTTP/1.0 200 OK 
d8:completei357e10:incompletei8e8:intervali1800e5:peers24:l\262j"\310Հp\226\310\325G?\205^%!\221x \364\367\357e 

但Bittorent規範說

同行:值字典的列表,每個使用下列鍵
-peer ID 對等的自我選擇的ID,如上面描述的用於跟蹤請求(字符串)
-ip 端的IP地址(或者IPv6或IPv4)或DNS名稱(字符串)
-port 同行的端口號(整數)

爲什麼同行場的數值是二進制的,不是B編碼後的名單?
預先感謝您。

回答

1

你是指該協議在BitTorrent的初期使用。然而,隨着一些追蹤者越來越受歡迎而未能在容量方面大幅度縮減,追蹤者響應的規模變得顯着。解決這個問題的一個措施就是讓客戶接受gzipped的HTTP響應和緊湊的對等響應(這是迄今爲止追蹤器中最流行的格式)。緊湊的同伴響應能夠以相同數量的信息提供更小的響應。它在BEP23中定義。然而,即使現在的響應相對較小,TCP握手和拆卸仍然會產生一個明顯的常量,這就是爲什麼許多追蹤器正在轉向UDP BEP15

相關問題