史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 網路軟硬體架設技術文件
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2004-08-15, 09:38 AM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 KWF下的BitTorrent下載討論

開始接觸Kerio Winroute Firewall也是因為BT下載的原因,由於是局內網用戶,白天下載的速度最多不會超過10K,與我最初的期望相去甚遠,終於到了無法忍耐的地步,也就有了對BitTorrent下載深入研究的興趣。

首先說說我的網路拓撲,512K ADSL撥號Modem(電信所說的512K其實與我們理解的不一樣,512K=512Kbps=512K bits/s=64K bytes/s,也即個人用戶所能獨享的最大下載帶寬只有64K/s),代理伺服器Windows 2000 Advanced Server+SP4,使用Kerio Winroute FireWall 6.0代理上網,沒有安裝第三方防火牆和殺毒軟體。區域網路內BT下載客戶端機為Win98。

如果你是外網用戶,那麼BT下載沒有任何問題,基本上不需要做任何的配置就能達到理想的下載效果。怎樣區別局內網和外網,論壇上有很多類似的帖子,在這裡我就不囉嗦了。

很多帖子都提到通過連接阜映射來提速,個人認為完全沒有必要,對於局內網用戶來說是個誤導。這是根據BitTorrent傳輸協定使用Sniffer分析資料包得出來的結論。



BT原理

與其他的P2P軟體相比,BT有個獨特的地方,它存在一個中間的WEB伺服器,就是我們在發怖時所填寫的announce,該伺服器提供了發怖的統一管理。BT 開啟一個 torrent文件後,先要你選項文件儲存哪裡。然後判斷該檔案不存在的話就建立新文件,存在的話就用 Sha1 校驗碼去校驗文件---錯誤的就是還沒下載的,這樣就可以實現續傳了。

現在知道要下載什麼了,到哪裡下載呢?這就要尋找有誰提供上傳了,BT是通過WEB伺服器來實現的,首先BT會通過份析 torrent 來得到發怖網址,從而建立與服務端的連接。



l 外網環境下BT客戶端與WEB伺服器建立TCP連接的程序


http://www.isaservercn.org/pic/btoverkwf/image001.jpg




Source Address 61.194.98.92 ADSL撥號軟體從ISP處獲得的外網位址

Destiation Address 222.141.64.184 WEB伺服器位址

Source Port 2198

Destiation Port 8000

我們關注的是封裝在TCP畫格中的HTTP傳輸協定部分:

GET /announce?info_hash=%FE%237eND%ED%3B%08%0A%118TH%03%BE%FD%86%E5%D2&peer_id=exbc%005%E1%F3Q%5EQM%B9%FD%5D%0FJ%33C%7B%BD&port=16351&natmapped=1&localip=61.149.98.92&uploaded=68468736&downloaded=52133888&left=411632144&compact=1&no_peer_id=1&event=started HTTP/1.0



Host: btfans.3322.org:8000



btfans.3322.org:8000是發怖伺服器的位址



info_hash 是torrent文件中的 info 部分的Sha校驗碼,WEB通過它在發怖列表找到對應的紀錄



peer_id 是自身的標識,它是12個0和當前時間+全球的唯一標識碼(GUID)的Sha校驗的前八位,共20位



port 你提供上傳的 port,亦即常說的監控連接阜,這裡是16531



IP 你的ip位址,沒有的話伺服器會自己找到,由於是在外網環境,所以IP為ISP提供的位址61.149.98.92(問題的關鍵就在這裡,如果你是局內網用戶,那麼BitTorrent客戶端在此填入的位址即為你的內部分配位址,比如10.10.10.x,這個位址當然是不可路由的,下面我會對局內網環境下TCP建立程序作相應的比較)



uploadED downloadED 你上傳和下載了多少,伺服器可以用它來做流量分析

left 你還要下載多少個字元

event 狀態,告訴伺服器你是準備開始下載,還是停止,還是下載完成了

以上這個操作預設值 5 分鐘做一次,或由伺服器設定


伺服器中有個一個 track 程序來管理這些請求,得到這一串程式碼後就會用 info_hash 來搜尋列表,找到你就可以下載。接著它會反連(NatCheck)你的 IP 和 Port來判斷你是局內網用戶還是公共外網用戶(象10.10.10.x這樣的位址,它是連不通的,這就是我說的為什麼局內網用戶做不做連接阜映射其實無所謂)。接下來伺服器返回現在正在下載這個文件的所有公共外網用戶的IP和port


http://www.isaservercn.org/pic/btoverkwf/image002.jpg


從上圖可以看出服務端返回了一個公共外網用戶的IP和Port列表


HTTP: 6: d10:done peersi34e8:intervali1800e13:num completedi287e9:num peersi59e5eersld2:ip14:218.184.78.2317eer id20:exbc

HTTP: porti6881eed2:ip14:218.81.227.1217eer id20:exbc

HTTP: 7: 4orti15949eed2:ip13:61.64.155.1647eer id20:exbc

HTTP: 8: ? 4orti10502eed2:ip14:219.197.64.2327eer id20:exbc 欿

HTTP: ??orti19856eed2:ip12:61.62.11.1557eer id20:exbc 蘸鉐

HTTP: ?S_4orti21213eed2:ip13:210.68.150.147eer id20:exbc

HTTP: :@?orti14373eed2:ip14:218.197.203.367eer id20:exbc

HTTP: '拻\%_4orti13425eed2:ip11:219.95.7.177eer id20:exbc

HTTP: >-O+d4orti14673eed2:ip12:81.156.58.177eer id20:exbc

HTTP: 緗_ ?orti15498eed2:ip14:218.79.175.1637eer id20:exbc

HTTP: +t4orti25868eed2:ip13:218.23.104.467eer id20:exbc 蚋札

HTTP: 搷__K??orti26102eed2:ip14:222.83.221.2547eer id20:exbc

HTTP: {??華4orti17104eed2:ip14:218.81.227.1217eer id20:exbc

HTTP: 9: 4orti15949eed2:ip12:218.80.9.2467eer id20:exbc

HTTP: ?4orti11458eed2:ip13:220.173.6.2407eer id20:exbc

HTTP: U o4orti9711eed2:ip15:219.148.178.2147eer id20:exbc 櫓

HTTP: _鞖g4orti13128eed2:ip13:138.88.221.197eer id20:exbc

HTTP: ?g?orti15492eed2:ip11:219.95.7.177eer id20:exbc

HTTP: _?orti19753eed2:ip12:61.150.43.307eer id20:exbc

HTTP:



象d10:done peersi34e8:intervali1800e13:num completedi287e9:num peersi59e5eersld2:ip14:218.184.78.2317eer id20:exbc




這裡Tracker的回應資訊以一種簡單高效可增強的格式(Bencoding,B編碼格式)傳送。

B編碼的規則如下:

·字元串表示為前綴十進制的字元串長度加冒號再跟原字元串。
如4:spam就相當於'spam'。
·整型資料的表示是前面加'i'後面加'e'中間是十進制數,如i3e就相當於3,i-3e就是-3。整型資料沒有長度限制。i-0e無效,所有以'i0'開頭的除了代表0的i0e,其它都無效。
·列表編碼為一個'l'開頭,後面跟它所包含的項目(已經被編碼過)最後加一個'e',比如 l4:spam4:eggse 就等於 ['spam', 'eggs'] 。
·字典編碼為一個'd'開頭,後面是關鍵值(key)及其對應值輪流出現,最後加一個'e'。
如:d3:cow3:moo4:spam4:eggse 相當於 {'cow': 'moo', 'spam': 'eggs'}
d4:spaml1:a1:bee 相當於 {'spam': ['a', 'b']}
關鍵值必須是處理過的字元串(用原始字元串編碼的,而不是數位字母混合編碼的)。

interval 1800 是告訴 BT 隔多少秒來查詢一次seed和peer這裡是 30 分鐘,如果你是公共外網用戶它會把你提交的 IP 和 Port 放到info_hash 對應的列表中,這樣其它人就可以找到你。



同樣我們可以注意到,公共外網用戶的監聽Port都是隨機選項產生的,換句話來說,監聽連接阜只是為了方便別人找到你。對於局內網用戶來說,即便你在網路閘道上做了監聽連接阜的映射,但是由於在與Tracer通訊的資料包中填入的是你的私有位址,Tracer就不會把你的IP和Port放入列表。因此你只能主動發起對列表中公共外網用戶的連接,而沒有遠端端能找到你。

局內網環境下客戶端與服務端的TCP通信

前面說過,局內網環境下,客戶端與WEB伺服器通信程序唯一不同的地方就在於填入的IP位址是本身的私有位址



http://www.isaservercn.org/pic/btoverkwf/image004.jpg

GET /announce?info_hash=%FE%237eND%ED%3B%08%0A%118TH%03%BE%FD%86%E5%D2&peer_id=exbc%005%C8%8DqnvF%BFj%E4%12P%9E%D1%FC&port=15600&natmapped=1&localip=10.10.10.8&uploaded=299663360&downloaded=188547600&left=275317264&compact=1&no_peer_id=1&event=started

Host: btfans.3322.org:8000



綜上所述,在局內網環境下即便進行了連接阜映射,也因為Tracer不會把你提交的私有位址和連接阜放入info_hash列表中而導致沒有遠端端能主動發起與你監控連接阜的連接,所以下載的速度不會有根本的改善。除非你能強制客戶端程序把你共享上網的IP提交給Tracer伺服器作為你的綁定位址。


http://www.isaservercn.org/pic/btoverkwf/image004.jpg


比特精靈就正好有此項功能,同時它還能提供所有Windows平台UPnP連接阜映射功能,包括Win98、Me、XP,但是2000並不支持UPNP,彌補這一缺陷的辦法是在Windows 2000代理伺服器上安裝Winroute Firewall。不需要做任何的連接阜映射,啟用它的UpnP即可。



http://www.isaservercn.org/pic/btoverkwf/image006.jpg

接下來,在局內網客戶端機安裝BitSpirit,官方下載位址http://www.17yy.com/bs/<br />
<br />
 <br />
<br />
安裝好以後會產生一個檢測UpnP設備的程序,按提示一步步往下走即可,它會自動搜尋安裝在代理伺服器的WinRoute FireWall。<br />
<br />
<br />
[img]http://www.isaservercn.org/pic/btoverkwf/image008.jpg
 

搜尋成功後會產生提示

 

http://www.isaservercn.org/pic/btoverkwf/image009.jpg

最關鍵的一步:

選項->個人設定->進階,在「強制指定IP」一欄前打勾,填入代理伺服器撥號上網後ISP分配的公共外網位址

http://www.isaservercn.org/pic/btoverkwf/image010.jpg



這樣設定就行了,讓我們來做一下驗證,檢視BitSpirit的網路狀態日誌:



2004-06-22 20:06:11; 正在檢查Torrent文件...;

2004-06-22 20:06:11; 從Tracker伺服器獲取種子資訊 ...;

2004-06-2220:06:11;正在連接伺服器:

[img]http://btbtbt.vicp.net:8000/announce?info_hash=%c9%c7%af%3a%27%3bvN%3e%b0kK7%a1%ff%fc%16%2b%c7%cd&peer_id=%00%02BS%5f%da5%c0A%7d%5fVY%9e%8e%89b%9e%94O&port=20272&ip=61.149.98.129&uploaded=0&downloaded=0&left=614727680&event=started;

這樣一來,Tracer就把你當成了公共外網用戶,並把你的IP和Port放入hash_info列表當中,讓其它的BT下載也能找到你,既有本機連接,又有遠端端發起的主動連接,從而把局內網下載速度提高到極限。



如圖,平均下來也有60多K的下載速度,這已經是512K ADSL所能達到的極限下載速度了。


http://www.isaservercn.org/pic/btoverkwf/image012.jpg


通過以上分析,希望你能對BitTorrent下載能有更深的認識,而不是在連接阜映射上做文章,那樣治標不治本。讓我們開始愉快的BT之旅吧!




作者:紫川楓
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
舊 2004-08-15, 09:42 AM   #2 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

再論KWF後的BT下載

在Kerio winroute firewall6.0.1透明代理模式下,需要三個條件才能進行BT下載
1.連線到發怖BT的WEB伺服器,以便提交自己的監聽連接阜和獲取正在下載的其它人的連接連接阜。
2.發起主動連接。
3.接受別人的連接。

如果不對KWF做設定,BT肯定不會下到任何東西。
分析:
發怖BT的WEB伺服器,使用的連接阜各不相同,有8000,6969,7802……,大家使用的BT軟體各不不相同,其監聽連接阜也不同,並且還可以自己修改,所以即使獲得了別人連接連接阜,也無法主動連接成功。KWF原則不允許。
不做連接阜映射,別人也無法連到你的機器。
下面提出我的解決方法:
對於第一、二個條件,由於使用的連接阜太雜亂,無法定義一種服務,使其通過,可以在KWF中建一用戶,然後定義一條原則,使其能使用任何服務,即any。用BT下載時,只需先登入防火牆即可。
對第三個條件,必須做連接阜映射,或開UPNP服務。
這樣才能使BT下載達到全速。

http://www.isaservercn.org/pic/btoverkwf2/image001.jpg

http://www.isaservercn.org/pic/btoverkwf2/image002.jpg


http://www.isaservercn.org/pic/btoverkwf2/image004.jpg



http://www.isaservercn.org/pic/btoverkwf2/image006.jpg
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
 



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 01:02 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1