日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

[缓存]迅雷下载原理

發(fā)布時(shí)間:2023/12/9 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [缓存]迅雷下载原理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

來自:http://hi.baidu.com/gcjia/blog/item/2b77bc3df8544803bba1675f.html

1.迅雷是什么?

迅雷是基于P2SP的一款下載軟件,能夠大大增強(qiáng)下載速度,可謂迅雷不及掩耳盜鈴之勢(shì)如破竹。

P2SP的道理不復(fù)雜,就是指:如果多個(gè)服務(wù)器上有某個(gè)相同的文件,當(dāng)某個(gè)用戶下載其中一個(gè)服務(wù)器上的這一文件時(shí),迅雷會(huì)自動(dòng)查找到另外的幾個(gè)服務(wù)器,同時(shí)下載這一文件,達(dá)到提速的目的。

迅雷比較流氓,在用戶沒有得到任何提示毫不知情的情況下,偷偷上傳用戶的本地文件,在所有網(wǎng)絡(luò)流量的統(tǒng)計(jì)中排到了第7位。(注:CERNET上似乎可以進(jìn)三強(qiáng))迅雷比較小氣,不說源代碼不是公開的,連原理也不公開。

迅雷比較聰明,她的架構(gòu)讓人佩服啊佩服,佩服啊佩服,佩服啊佩服……

2 下載原理

還記得百度的mp3搜索么?你到mp3.baidu.com上搜索一個(gè)mp3,百度會(huì)給你列出她知道的所有服務(wù)器列表(這些服務(wù)器都是別人的),你可以在百度上點(diǎn)擊該連接下載mp3,而不用登陸真正的服務(wù)器。

迅雷就是把這個(gè)過程自動(dòng)化了,并且增加了判斷文件唯一性的功能,畫個(gè)圖簡(jiǎn)單說明一下:

1.用戶點(diǎn)擊1.2.3.4上的QQ_1.exe文件的連接

2.用戶客戶機(jī)上的迅雷得到該文件的唯一的校驗(yàn)值。

3.迅雷自動(dòng)向自己的資源服務(wù)器上搜索,查找到存放同一文件的其他的服務(wù)器列表

4.得到文件在該服務(wù)器上的目錄和文件名(紅色部分,有可能和原始連接中的文件名不相同),http://www.cnblogs.com/erwin/admin/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.迅雷自動(dòng)向1.2.3.5和1.2.3.6上下載該文件的不同文件塊,以達(dá)到加速下載的目的(紫色部分)。

6.用戶向公網(wǎng)用戶1.2.3.7發(fā)送一個(gè)UDP資源請(qǐng)求

7.1.2.3.7回應(yīng)一個(gè)資源請(qǐng)求說:偶這兒有你要的文件

8.用戶向公網(wǎng)用戶1.2.3.7的3077端口發(fā)起請(qǐng)求,并傳輸數(shù)據(jù)。

9.下載完畢后,如果迅雷資源服務(wù)器上,該文件的服務(wù)器列表中沒有目前用戶點(diǎn)擊下載的服務(wù)器1.2.3.4,則將這個(gè)新的服務(wù)器地址加入到該文件的服務(wù)器列表(藍(lán)色部分)。

注:

1.上述過程中的6、7、8步驟中隱含了一個(gè)過程:判斷用戶是否是公網(wǎng)用戶。

如果是公網(wǎng)用戶,則該用戶的IP地址和提供下載服務(wù)的端口也將記錄在迅雷的資源服務(wù)器中,后續(xù)用戶可以從該用戶處下載;第三節(jié)有這個(gè)過程的說明。

2.迅雷如何區(qū)分不同的文件?很多文件名字不同但是內(nèi)容相同,很多文件名字相同但是內(nèi)容不同。搜索迅雷的相關(guān)信息只是得到了幾句無(wú)關(guān)痛癢的廢話:迅雷還使用了獨(dú)創(chuàng)的文件校驗(yàn)機(jī)制,保證了用戶下載文件的正確性和完整。至于什么方法不得而知

3.我們?nèi)绾尾榭囱咐姿阉鞯降馁Y源列表?

在迅雷搜索到一系列的資源列表并且任務(wù)沒有完成時(shí),會(huì)在相同下載目錄下建立一個(gè)臨時(shí)文件,里面有搜索到的資源信息,其中peer就是搜索到的包含要下載文件的公網(wǎng)用戶。

3 協(xié)議解析

分析第二節(jié)原理圖中的下載過程,第1、2、5步和正常的下載是一模一樣的,我們無(wú)法根本無(wú)法區(qū)分。那好,我們就在3、4、6上做文章。

除了上述用戶下載一個(gè)具體文件的過程的各個(gè)報(bào)文外,還有交換資源信息報(bào)文,用戶和用戶之間的文件塊傳輸報(bào)文、判斷用戶是否是公網(wǎng)用戶的報(bào)文等。

1.資源請(qǐng)求報(bào)文

每次迅雷都會(huì)向219.134.132.47的tcp端口3076發(fā)出資源請(qǐng)求,該地址是寫死在迅雷軟件中的,并非依靠DNS請(qǐng)求得到。

如果該地址不可用,則會(huì)切換到另外兩個(gè)可替換的地址219.134.132.42、219.134.132.86。

Web迅雷則使用219.134.132.46。

過濾掉這個(gè)報(bào)文,那么迅雷客戶端就無(wú)法完成資源請(qǐng)求,無(wú)法從多點(diǎn)下載。用TP過濾掉報(bào)文后迅雷只能從原始連接下載,如下圖:

協(xié)議報(bào)文特征如下:

2.資源搜索回應(yīng)報(bào)文

過濾掉這個(gè)報(bào)文,那么迅雷客戶端就無(wú)法得到資源列表,無(wú)法從多點(diǎn)下載。

協(xié)議報(bào)文特征如下:

3.用戶之間的文件傳輸(握手報(bào)文)

用戶之間是可以傳送文件塊的,下面的報(bào)文就是傳送文件塊開始之前的握手報(bào)文,3077端口為客戶端的監(jiān)聽端口,用來把本地的文件傳輸給別人。(如果3077不能用,會(huì)轉(zhuǎn)到其他端口).

4.用戶之間資源信息交換報(bào)文

5.提交新的資源信息報(bào)文

6.連接NAT測(cè)試服務(wù)器報(bào)文

迅雷每過幾分鐘就會(huì)向statnat1.sandai.net發(fā)送NAT測(cè)試報(bào)文,也就是告訴迅雷的資源服務(wù)器,自己是否是公網(wǎng)IP.該報(bào)文由于無(wú)返回報(bào)文,所以猜想采用的辦法是采用STUN的方法:

將本機(jī)的IP地址放在UDP的payload里,如果迅雷的服務(wù)器收到報(bào)文發(fā)現(xiàn)IP層的源地址和payload里的IP地址一致,那么就是公網(wǎng)地址,否則就是處于防火墻后面或者需要經(jīng)NAT才能上公網(wǎng)。

協(xié)議報(bào)文如下:

注:

sandai.net是xunlei旗下的一個(gè)網(wǎng)站,很少單獨(dú)拋頭露面,多出現(xiàn)在迅雷軟件檢索關(guān)聯(lián)信息、顯示廣告的DNS請(qǐng)求報(bào)文中。

4TP過濾

如果TP武斷的對(duì)迅雷進(jìn)行過濾,只需要設(shè)定一個(gè)traffic management,把目的地址為219.134.132.0/24網(wǎng)段,目的端口為3076的報(bào)文全部過濾就可以防止迅雷下載,但是有可能會(huì)誤報(bào)。下面的規(guī)則更詳細(xì)一點(diǎn),可以減少誤報(bào)。

1.針對(duì)用戶向服務(wù)器資源請(qǐng)求報(bào)文和資源回應(yīng)報(bào)文的過濾

由于迅雷的服務(wù)器IP地址比較容易更換,所以建議過濾的DV:

協(xié)議:tcp

源端口/目的端口:3076

開始的四個(gè)字節(jié):0x29000000

2.針對(duì)用戶之間的資源信息交互報(bào)文的過濾

協(xié)議UDP

端口3076

前四個(gè)字節(jié)0x32000000

3.針對(duì)用戶之間的文件傳輸(握手報(bào)文)的過濾

協(xié)議tcp

源端口或者目的端口可以為3077、3078

前四個(gè)字節(jié)為0x29000000

4.提交新的資源信息的報(bào)文的過濾

協(xié)議TCP

目的端口3076

前四個(gè)字節(jié)0x29000000

5.針對(duì)連接NAT測(cè)試服務(wù)器的報(bào)文的過濾

協(xié)議UDP

目的端口3076

前四個(gè)字節(jié)0x00000101

轉(zhuǎn)載于:https://www.cnblogs.com/erwin/archive/2009/07/24/1529808.html

總結(jié)

以上是生活随笔為你收集整理的[缓存]迅雷下载原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。