協(xié)議概述
迅雷是基于P2SP的一款下載軟件,能夠大大增強下載速度,可謂迅雷不及掩耳盜鈴之勢如破竹。
P2SP的道理不復(fù)雜,就是指:如果多個服務(wù)器上有某個相同的文件,當(dāng)某個用戶下載其中一個服務(wù)器上的這一文件時,迅雷會自動查找到另外的幾個服務(wù)器,同時下載這一文件,達到提速的目的。
下載原理
還記得百度的mp3搜索么?你到mp3.baidu.com上搜索一個mp3,百度會給你列出她知道的所有服務(wù)器列表(這些服務(wù)器都是別人的),你可以在百度上點擊該連接下載mp3,而不用登陸真正的服務(wù)器。
迅雷就是把這個過程自動化了,并且增加了判斷文件唯一性的功能,畫個圖簡單說明一下:
1.用戶點擊1.2.3.4上的QQ_1.exe文件的連接
2.用戶客戶機上的迅雷得到該文件的唯一的校驗值。
3.迅雷自動向自己的資源服務(wù)器上搜索,查找到存放同一文件的其他的服務(wù)器列表
4.得到文件在該服務(wù)器上的目錄和文件名(紅色部分,有可能和原始連接中的文件名不相同),ftp://1.2.3.5/QQ_2.exe,http://1.2.3.6/QQ_3.exe,以及公網(wǎng)用戶1.2.3.7有QQ.exe
5.迅雷自動向1.2.3.5和1.2.3.6上下載該文件的不同文件塊,以達到加速下載的目的(紫色部分)。
6.用戶向公網(wǎng)用戶1.2.3.7發(fā)送一個UDP資源請求
7.1.2.3.7回應(yīng)一個資源請求說:偶這兒有你要的文件
8.用戶向公網(wǎng)用戶1.2.3.7的3077端口發(fā)起請求,并傳輸數(shù)據(jù)。
9.下載完畢后,如果迅雷資源服務(wù)器上,該文件的服務(wù)器列表中沒有目前用戶點擊下載的服務(wù)器1.2.3.4,則將這個新的服務(wù)器地址加入到該文件的服務(wù)器列表(藍色部分)。
注:
1.上述過程中的6、7、8步驟中隱含了一個過程:判斷用戶是否是公網(wǎng)用戶。
如果是公網(wǎng)用戶,則該用戶的IP地址和提供下載服務(wù)的端口也將記錄在迅雷的資源服務(wù)器中,后續(xù)用戶可以從該用戶處下載;第三節(jié)有這個過程的說明。
2.迅雷如何區(qū)分不同的文件?很多文件名字不同但是內(nèi)容相同,很多文件名字相同但是內(nèi)容不同。搜索迅雷的相關(guān)信息只是得到了幾句無關(guān)痛癢的廢話:迅雷還使用了獨創(chuàng)的文件校驗機制,保證了用戶下載文件的正確性和完整。至于什么方法不得而知
3.我們?nèi)绾尾榭囱咐姿阉鞯降馁Y源列表?
在迅雷搜索到一系列的資源列表并且任務(wù)沒有完成時,會在相同下載目錄下建立一個臨時文件,里面有搜索到的資源信息,其中peer就是搜索到的包含要下載文件的公網(wǎng)用戶。
協(xié)議解析
分析第二節(jié)原理圖中的下載過程,第1、2、5步和正常的下載是一模一樣的,我們無法根本無法區(qū)分。那好,我們就在3、4、6上做文章。
除了上述用戶下載一個具體文件的過程的各個報文外,還有交換資源信息報文,用戶和用戶之間的文件塊傳輸報文、判斷用戶是否是公網(wǎng)用戶的報文等。
1.資源請求報文
每次迅雷都會向219.134.132.47的tcp端口3076發(fā)出資源請求,該地址是寫死在迅雷軟件中的,并非依靠DNS請求得到。
如果該地址不可用,則會切換到另外兩個可替換的地址219.134.132.42、219.134.132.86。
Web迅雷則使用219.134.132.46。
過濾掉這個報文,那么迅雷客戶端就無法完成資源請求,無法從多點下載。用TP過濾掉報文后迅雷只能從原始連接下載,如下圖:
協(xié)議報文特征如下:
2.資源搜索回應(yīng)報文
過濾掉這個報文,那么迅雷客戶端就無法得到資源列表,無法從多點下載。
協(xié)議報文特征如下:
3.用戶之間的文件傳輸(握手報文)
用戶之間是可以傳送文件塊的,下面的報文就是傳送文件塊開始之前的握手報文,3077端口為客戶端的監(jiān)聽端口,用來把本地的文件傳輸給別人。(如果3077不能用,會轉(zhuǎn)到其他端口).
4.用戶之間資源信息交換報文
5.提交新的資源信息報文
6.連接NAT測試服務(wù)器報文
迅雷每過幾分鐘就會向statnat1.sandai.net發(fā)送NAT測試報文,也就是告訴迅雷的資源服務(wù)器,自己是否是公網(wǎng)IP.該報文由于無返回報文,所以猜想采用的辦法是采用STUN的方法:
將本機的IP地址放在UDP的payload里,如果迅雷的服務(wù)器收到報文發(fā)現(xiàn)IP層的源地址和payload里的IP地址一致,那么就是公網(wǎng)地址,否則就是處于防火墻后面或者需要經(jīng)NAT才能上公網(wǎng)。
協(xié)議報文如下:
注:
sandai.net是xunlei旗下的一個網(wǎng)站,很少單獨拋頭露面,多出現(xiàn)在迅雷軟件檢索關(guān)聯(lián)信息、顯示廣告的DNS請求報文中。
4TP過濾
如果TP武斷的對迅雷進行過濾,只需要設(shè)定一個traffic management,把目的地址為219.134.132.0/24網(wǎng)段,目的端口為3076的報文全部過濾就可以防止迅雷下載,但是有可能會誤報。下面的規(guī)則更詳細一點,可以減少誤報。
1.針對用戶向服務(wù)器資源請求報文和資源回應(yīng)報文的過濾
由于迅雷的服務(wù)器IP地址比較容易更換,所以建議過濾的DV:
協(xié)議:tcp
源端口/目的端口:3076
開始的四個字節(jié):0x29000000
2.針對用戶之間的資源信息交互報文的過濾
協(xié)議UDP
端口3076
前四個字節(jié)0x32000000
3.針對用戶之間的文件傳輸(握手報文)的過濾
協(xié)議tcp
源端口或者目的端口可以為3077、3078
前四個字節(jié)為0x29000000
4.提交新的資源信息的報文的過濾
協(xié)議TCP
目的端口3076
前四個字節(jié)0x29000000
5.針對連接NAT測試服務(wù)器的報文的過濾
協(xié)議UDP
目的端口3076
前四個字節(jié)0x00000101
通訊方式
迅雷支持Http連接、Ftp連接、MMS連接、RTSP連接以及其他代理模式。
迅雷查詢和下載資源默認使用TCP
3076和3077端口,迅雷的雷區(qū)注冊和登陸使用的是TCP 5200和6200端口。如果登陸端口TCP
6200、3076和3077端口都不通,就會自動跳轉(zhuǎn)到Http的80端口登陸。(注:HTTP 80端口為上網(wǎng)瀏覽必須的端口。)
如何封堵迅雷?
由于迅雷會自動進行端口轉(zhuǎn)換,而且最重要的是迅雷可以走80端口,所以我們建議你采取以下方法進行控制:
1)封堵迅雷的服務(wù)器的IP和迅雷的主要下載站點和占用的端口
2)通過限制主機的鏈接數(shù)來控制迅雷的下載(但是無法限制迅雷從單點高速下載)
3)在用聚生網(wǎng)管封堵迅雷時,則可以選擇P2P下載里面迅雷,除此之外,你還需要在禁止普通下載那里設(shè)置文件后綴名;如果你想完全控制迅雷的下載,還需要勾選上“禁止一且http”下載。
總之,控制迅雷,禁止迅雷,限制迅雷,封堵迅雷,監(jiān)控迅雷,控制迅雷,禁止迅雷,限制
迅雷,封堵迅雷,監(jiān)控迅雷,禁迅雷,限迅雷,封迅雷,禁迅雷,限迅雷,封迅雷,迅雷端口,迅雷協(xié)議,迅雷服務(wù)器IP,如何控制迅雷,如何禁止迅雷,如何限
制迅雷,如何封堵迅雷,如何監(jiān)控迅雷,如何管理迅雷等等這些功能,聚生網(wǎng)管可以實現(xiàn)!