版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、 摘 要P2P技術(shù)存在已久,其第一次實際使用可以追溯到1979年的Usenet新聞服務(wù)系統(tǒng)。隨著1998年出現(xiàn)的音樂共享軟件Napster的流行,著眼于分布式數(shù)據(jù)共享的P2P技術(shù)得到了迅猛的發(fā)展,并日益呈現(xiàn)出取代傳統(tǒng)的C/S文件共享模式的趨勢。BitTorrent是P2P技術(shù)在文件共享領(lǐng)域最成功的代表之一。BitTorrent是一個開放的文件分發(fā)系統(tǒng),它基于兩個通信協(xié)議并由幾種分工不同的網(wǎng)絡(luò)節(jié)點組成。不同于普通的http或者ftp文件共享方式,BitTorrent采用一種全新的模式:資源的發(fā)布者最少只需要上傳一份完整資源的數(shù)據(jù)量,之后的數(shù)據(jù)交換完全可以在BitTorrent下載者之間進行。本文
2、將詳細(xì)分析BitTorrent文件分發(fā)系統(tǒng)的關(guān)鍵部分123456BitTorrent協(xié)議客戶端的實現(xiàn)。本文從P2P的基本概念開始,首先介紹BitTorrent文件分發(fā)系統(tǒng)的組成,之后在此基礎(chǔ)上解析BitTorrent的兩個重要協(xié)議,最后重點分析一個輕量型BitTorrent協(xié)議客戶端的實現(xiàn)。分析依照軟件工程的思想,首先描述客戶端的總體框架,包括功能模塊、數(shù)據(jù)流和主程序的執(zhí)行流程。在總體框架的基礎(chǔ)上,具體分析客戶端的各個功能模塊的實現(xiàn),其中將會重點討論兩個算法:piece選擇算法和peer選擇算法,這兩個算法是BitTorrent的核心,分別在piece維護模塊和peer維護模塊里實現(xiàn)?!娟P(guān)鍵詞
3、】P2P BitTorrent 文件分發(fā)系統(tǒng) 文件分發(fā)協(xié)議 客戶端 GTK ABSTRACTP2P technology has existed for a long time, its first actual use can be traced back to 1979, the Usenet news service system. Since the music-sharing application Napster designed in 1998 became popular, P2P technology focusing on distributed data-sharing
4、has been in rapid development and with a tendency to replace the traditional C / S file-sharing model gradually.BitTorrent is one of the most successful classifications of P2P technology in file-sharing field. It is an open file distribution system, which is based on two communication protocol and c
5、onsists of several network nodes in different roles. Unlike ordinary http or ftp file-sharing manner, BitTorrent uses a new model: the publisher of a resource only needs to upload at least a whole resource. After that, the exchange of data can be just done between the BitTorrent downloaders. This ar
6、ticle will detailedly analyse the implementation of the pivotal part of BitTorrent file distribution system, a BitTorrent client. This article will begin with the P2P basic concept, and then introduce the constitutes of the BitTorrent file distribution system. On the basis of that, it will analyse t
7、he two important Algorithms of BitTorrent. And finally it will come with focus on the implementation of a lightweight BitTorrent client. In accordance with the idea of software engineering, the framework of the client will be described first, including functional modules, data flow and the process o
8、f the main thread. Basing on the framework, this article will analyse the implementation of the functional modules individually. This part will focus on two algorithms: piece selection algorithm and peer selection algorithm. These algorithms are the core of BitTorrent which are implemented in the pi
9、ece-maintaining modules and the peer- maintaining module respectively.【Key words】 P2P BitTorrent file distribution system file distribution protocol client GTK目 錄緒 論1第一節(jié)發(fā)展現(xiàn)狀1第二節(jié)論文組織與結(jié)構(gòu)2第一章P2P概述4第一節(jié)P2P定義4第二節(jié)從C/S到P2P5第三節(jié)P2P技術(shù)特點6第四節(jié)P2P的應(yīng)用7第五節(jié)本章小結(jié)8第二章BitTorrent文件分發(fā)系統(tǒng)9第一節(jié)BitTorrent概述9第二節(jié)基本原理10一、P2P的關(guān)鍵技術(shù)1
10、0二、BitTorrent對關(guān)鍵技術(shù)的實現(xiàn)12第三節(jié)文件分發(fā)系統(tǒng)的組成13第四節(jié)一個完整的文件分發(fā)過程14第五節(jié)本章總結(jié)15第三章BitTorrent文件分發(fā)協(xié)議16第一節(jié)術(shù)語解釋16第二節(jié)Tracker HTTP/HTTPS Protocol17一、請求報文17二、響應(yīng)報文19第三節(jié)Peer wire protocol20一、peer的狀態(tài)20二、peer通信21三、重要算法23第四節(jié)本章總結(jié)25第四章系統(tǒng)總體設(shè)計26第一節(jié)程序簡介26一、開發(fā)環(huán)境271、操作系統(tǒng)272、開發(fā)工具273、實現(xiàn)語言和庫27二、功能簡介28三、不足與改進28第二節(jié)功能模塊29一、功能模塊圖29二、圖表說明30第三
11、節(jié)數(shù)據(jù)流31一、數(shù)據(jù)流圖31二、圖表說明33第四節(jié)主線程流程34一、主線程流程圖34二、圖表說明36第五節(jié)本章小結(jié)37第五章系統(tǒng)詳細(xì)設(shè)計38第一節(jié)任務(wù)管理模塊38一、bencoding 編碼38二、metainfo文件38三、任務(wù)信息文件40第二節(jié)網(wǎng)絡(luò)I/O模塊42一、功能42二、數(shù)據(jù)結(jié)構(gòu)42三、函數(shù)接口43第三節(jié)文件緩存模塊43一、功能44二、接收緩存列表44三、數(shù)據(jù)緩存鏈表46第四節(jié)文件I/O模塊48一、功能48二、數(shù)據(jù)結(jié)構(gòu)49三、函數(shù)接口49第五節(jié)piece維護模塊52一、功能52二、數(shù)據(jù)結(jié)構(gòu)53三、函數(shù)接口54四、Piece選擇算法55第六節(jié)tracker通信模塊56一、功能57二、數(shù)
12、據(jù)結(jié)構(gòu)57三、函數(shù)接口57第七節(jié)UI模塊58一、功能58二、數(shù)據(jù)結(jié)構(gòu)58三、函數(shù)接口58四、界面效果58第八節(jié)本章總結(jié)60結(jié) 論61致 謝63參考文獻64附 錄66一、英文原文66二、英文翻譯76三、源代碼樹86- 93 -緒 論第一節(jié) 發(fā)展現(xiàn)狀互聯(lián)網(wǎng)能夠發(fā)展至今,根本原因在于其構(gòu)建的每一個細(xì)節(jié)都是為人與人之間的交流而設(shè)置的。而現(xiàn)在能夠引起互聯(lián)網(wǎng)震動的,無非也只有交流方式的變革本身。如今,在基于網(wǎng)絡(luò)的各種技術(shù)充斥于我們周圍之時,恐怕只有很少人不知道P2P的概念了,即便您沒有深入探究,但是當(dāng)你進入互聯(lián)網(wǎng)時P2P可能就已經(jīng)在你身邊,一個簡單的例子,在你使用即時聊天工具盡情聊天或者打開一個包含視頻的
13、網(wǎng)頁的時候,實際上就享受著P2P技術(shù)給你帶來的便利。P2P技術(shù)究竟意味著什么?P2P是一種思想,有著改變整個互聯(lián)網(wǎng)基礎(chǔ)的潛能的思想??陀^講,單從技術(shù)角度而言,P2P并未激發(fā)出任何重大的創(chuàng)新,而更多的是改變了人們對因特網(wǎng)的理解與認(rèn)識。正是由于這個原因,IBM早就宣稱P2P不是一個技術(shù)概念,而是一個社會和經(jīng)濟現(xiàn)象。不管是技術(shù)還是思想,P2P直接將人們聯(lián)系起來,讓人們通過互聯(lián)網(wǎng)直接交流。它使得網(wǎng)絡(luò)上的溝通變得更容易、更直接,真正地消除中間環(huán)節(jié)。這聽起來仿佛全新的概念,但其實并不是什么新鮮事。我們每天見面,或者通過電話交流都是P2P最直接的例子。而這個時候你有沒有從電話的發(fā)展的歷史中隱約感覺到,P2P
14、必將在互聯(lián)網(wǎng)時代有著突飛猛進的發(fā)展,因為它可以改變Internet以大網(wǎng)站為中心的現(xiàn)狀、重返“非中心化”,并把權(quán)力交還給用戶,讓我們的語言影像以最直接的方式傳遞到對方身邊。它最符合互聯(lián)網(wǎng)絡(luò)設(shè)計者的初衷,給了人們一個完全自主的超級網(wǎng)絡(luò)資源庫。提到P2P就不能不提BitTorrent,作為P2P在文件共享領(lǐng)域的杰出代表,BitTorrent是使P2P技術(shù)迅速普及并深入人心的最大功臣之一。BitTorrent并不是最早的P2P技術(shù),可能也不是最先進的,但無疑它是最流行的。你可能沒聽說過P2P,但你不會連BT都不認(rèn)識,因為很有可能你的硬盤上百分之七十的容量都是由它來填滿的。BitTorrent帶來了全
15、新的資源共享方式,在有些網(wǎng)絡(luò)里它已經(jīng)取代了傳統(tǒng)的http和ftp共享方式,至少在我所處的網(wǎng)絡(luò)環(huán)境里是這樣的。毫無疑問,BitTorrent給我們帶來了新的共享體驗,這里要感謝BitTorrent的開發(fā)者們,他們一開始就把它定義為一個開放的協(xié)議,BitTorrent的愛好者因此可以參與到BitTorrent的開發(fā)和推廣中而成為傳播自由和快樂的一員,這也是我以此作為畢業(yè)設(shè)計題目的原因之一。第二節(jié) 論文組織與結(jié)構(gòu)本文主要介紹一個BitTorrent客戶端的實現(xiàn)。在討論具體實現(xiàn)之前,需要先介紹一些必要的知識,以便更好的支撐和理解后面的章節(jié)。第一章對P2P技術(shù)從定義到應(yīng)用作一個大概的了解,因為BitTo
16、rrent本身就是P2P技術(shù)的典型代表。按照一般到特殊的思路,第二章介紹BitTorrent文件分發(fā)系統(tǒng),一次完整的BitTorrent文件分發(fā)過程需要tracker服務(wù)器、web服務(wù)器、客戶端等之間相互協(xié)作才能完成,這幾個部分組成一個完整的BitTorrent文件分發(fā)系統(tǒng)。這一章從基本原理到實際的系統(tǒng)構(gòu)成再到文件分發(fā)過程,詳細(xì)的介紹了BitTorrent文件分發(fā)系統(tǒng)的各個方面。第三章介紹BitTorrent的兩個協(xié)議,其中Peer wire protocol 是最能體現(xiàn)P2P思想的協(xié)議。該協(xié)議涉及到了兩個關(guān)鍵的算法:piece選擇算法、peer選擇算法。這兩個算法是BitTorrent的核心
17、,算法實現(xiàn)的好壞直接決定一個BitTorrent客戶端的性能表現(xiàn)。從第四章開始,將具體闡述一個BitTorrent客戶端的實現(xiàn)。章節(jié)盡量按照軟件工程的流程來安排。本章第一節(jié)的簡介以及后面的幾張圖表和附加說明將勾勒出客戶端的整體結(jié)構(gòu)。第四章建立了一個比較清晰的框架,第五章開始往這個框架里添加細(xì)節(jié)。本章詳細(xì)介紹客戶端的各個功能模塊,并在必要時引用代碼來說明。具體的實現(xiàn)代碼可以參考附錄的源代碼部分,一般來說每一功能模塊都對應(yīng)一個源代碼文件。第一章 P2P概述隨著互聯(lián)網(wǎng)接入速度的提高,網(wǎng)上相關(guān)服務(wù)的需求也在不斷增加。網(wǎng)絡(luò)革命后,P2P技術(shù)歷經(jīng)進化并發(fā)展形成一批針對各種領(lǐng)域的應(yīng)用即時通訊,文件共享等。其
18、它的一些革命性的想法還在研究發(fā)展中之中。人們試圖在各種不同的應(yīng)用中使用P2P,包括電子商務(wù),教育,協(xié)同工作,搜索,文件存儲,高性能計算等等。德國互聯(lián)網(wǎng)調(diào)研機構(gòu)ipoque稱,P2P已經(jīng)徹底統(tǒng)治了當(dāng)今的互聯(lián)網(wǎng),其中50-90的網(wǎng)絡(luò)流量都來自P2P程序。P2P是什么?P2P是peer-to-peer的縮寫,peer在英語里有"(地位、能力等)同等者"、"同事"和"伙伴"等意義。因此P2P也就可以理解為兩個對等點之間的交互。拿P2P最流行的應(yīng)用123456文件下載來說,其特點就是任何一臺主機在下載數(shù)據(jù)的同時,也在給其它主機上傳數(shù)據(jù),主機與主
19、機之間的關(guān)系是平等的,沒有純粹的接受者,也沒有純粹的給予者。第一節(jié) P2P定義目前,在學(xué)術(shù)界、工業(yè)界對于P2P沒有一個統(tǒng)一的定義,下面列舉幾個常用的定義供參考: Peer-to-peer is a type of Internet network allowing a group of computer users with the same networking program to connect with each other for the purposes of directly accessing files from one another's hard drives.
20、Peer-to-peer networking (P2P) is an application that runs on a personal computer and shares files with other users across the Internet. P2P networks work by connecting individual computers together to share files instead of having to go through a central server. P2P是一種分布式網(wǎng)絡(luò),網(wǎng)絡(luò)的參與者共享它們所擁有的一部分硬件資源(處理能
21、力、存儲能力、網(wǎng)絡(luò)連接能力、打印機等),這些共享資源需要由網(wǎng)絡(luò)提供服務(wù)和內(nèi)容,能被其它對等節(jié)點(Peer)直接訪問而無需經(jīng)過中間實體。在此網(wǎng)絡(luò)中的參與者既是資源(服務(wù)和內(nèi)容)提供者(Server),又是資源(服務(wù)和內(nèi)容)獲取者(Client)。雖然上述定義稍有不同,但共同點都是P2P打破了傳統(tǒng)的Client/Server (C/S)模式,在網(wǎng)絡(luò)中的每個節(jié)點的地位都是對等的。每個節(jié)點既充當(dāng)服務(wù)器,為其它節(jié)點提供服務(wù),同時也享用其它節(jié)點提供的服務(wù)。第二節(jié) 從C/S到P2P從網(wǎng)絡(luò)的角度看,P2P是一種網(wǎng)絡(luò)模型,它的基本概念就是任何的節(jié)點都可以作為服務(wù)器或者客戶端。傳統(tǒng)的客戶/服務(wù)器(/)網(wǎng)絡(luò),都有預(yù)
22、定義的客戶端和服務(wù)器節(jié)點,而P2P則不同,P2P可提供一些額外的特性,而這些特性是傳統(tǒng)的客戶/服務(wù)器模型無法實現(xiàn)的。首先,基于P2P的模型與客戶/服務(wù)器(/)模型相比,其優(yōu)勢在于降低了對服務(wù)器的依賴和它的分散控制能力(相對于服務(wù)器的集中控制)。一些 P2P模型甚至不需要服務(wù)器,用戶可以不經(jīng)過服務(wù)器和其它用戶進行連接。在傳統(tǒng)的結(jié)構(gòu)下必須受限于傳統(tǒng)的規(guī)則,相比而言用戶在P2P模型下比使用傳統(tǒng)的客戶/服務(wù)器結(jié)構(gòu)有著更多的自由。其次就系統(tǒng)的魯棒性而言,P2P系統(tǒng)沒有單一的失敗點。最后從性能上比較,P2P是基于互聯(lián)網(wǎng)的對等架構(gòu),它會大大改善內(nèi)容的流量分布,解決網(wǎng)絡(luò)帶寬的瓶頸問題,并且極大程度緩解了內(nèi)容存
23、儲服務(wù)器的壓力,相比C/S模式,它具有無可比擬的優(yōu)勢。圖1.1和圖1.2顯示了這兩種模型在拓?fù)浣Y(jié)構(gòu)上的不同:圖 圖1.1 C/S模型拓?fù)?圖1.2 P2P模型拓?fù)淙魏问虑槎季哂袃擅嫘?,比如這兩種模型的安全性。從資源獲取者的角度看,它們希望資源的提供者能保證資源的安全性,對C/S模型來說不難做到,集中控制的特性讓服務(wù)器可以約束資源提供者的行為并檢查資源的可靠性。然而P2P模型要做到這點并不容易,資源的安全性很大程度上依賴于資源提供的自律,這是自由的代價。但是,從另外一個角度,即資源提供者的角度來看,將會得到一個相反的結(jié)果,因為就保護資源提供者的隱私而言,P2P無疑具有得天獨厚的優(yōu)勢,這是在P2P
24、模式下資源會如此豐富的原因之一,這也是自由的力量。第三節(jié) P2P技術(shù)特點P2P技術(shù)的特點體現(xiàn)在以下幾個方面: 非中心化(Decentralization):網(wǎng)絡(luò)中的資源和服務(wù)分散在所有結(jié)點上,信息的傳輸和服務(wù)的實現(xiàn)都直接在結(jié)點之間進行,可以無需中間環(huán)節(jié)和服務(wù)器的介入,避免了可能的瓶頸。P2P的非中心化基本特點,帶來了其在可擴展性、健壯性等方面的優(yōu)勢。 可擴展性:在P2P網(wǎng)絡(luò)中,隨著用戶的加入,不僅服務(wù)的需求增加了,系統(tǒng)整體的資源和服務(wù)能力也在同步地擴充,始終能較容易地滿足用戶的需要。整個體系是全分布的,不存在瓶頸。理論上其可擴展性幾乎可以認(rèn)為是無限的。 健壯性:P2P架構(gòu)天生具有耐攻擊、高容錯
25、的優(yōu)點。由于服務(wù)是分散在各個結(jié)點之間進行的,部分結(jié)點或網(wǎng)絡(luò)遭到破壞對其它部分的影響很小。P2P網(wǎng)絡(luò)一般在部分結(jié)點失效時能夠自動調(diào)整整體拓?fù)?,保持其它結(jié)點的連通性。P2P網(wǎng)絡(luò)通常都是以自組織的方式建立起來的,并允許結(jié)點自由地加入和離開。P2P網(wǎng)絡(luò)還能夠根據(jù)網(wǎng)絡(luò)帶寬、結(jié)點數(shù)、負(fù)載等變化不斷地做自適應(yīng)式的調(diào)整。 高性能/價格比:性能優(yōu)勢是P2P被廣泛關(guān)注的一個重要原因。隨著硬件技術(shù)的發(fā)展,個人計算機的計算和存儲能力以及網(wǎng)絡(luò)帶寬等性能依照摩爾定理高速增長。采用P2P架構(gòu)可以有效地利用互聯(lián)網(wǎng)中散布的大量普通結(jié)點,將計算任務(wù)或存儲資料分布到所有結(jié)點上。利用其中閑置的計算能力或存儲空間,達到高性能計算和海量
26、存儲的目的。通過利用網(wǎng)絡(luò)中的大量空閑資源,可以用更低的成本提供更高的計算和存儲能力。 隱私保護: 在P2P網(wǎng)絡(luò)中,由于信息的傳輸分散在各節(jié)點之間進行而無需經(jīng)過某個集中環(huán)節(jié),用戶的隱私信息被竊聽和泄漏的可能性大大縮小。此外,目前解決 Internet隱私問題主要采用中繼轉(zhuǎn)發(fā)的技術(shù)方法,從而將通信的參與者隱藏在眾多的網(wǎng)絡(luò)實體之中。在傳統(tǒng)的一些匿名通信系統(tǒng)中,實現(xiàn)這一機制依賴于某 些中繼服務(wù)器節(jié)點。而在P2P中,所有參與者都可以提供中繼轉(zhuǎn)發(fā)的功能,因而大大提高了匿名通訊的靈活性和可靠性,能夠為用戶提供更好的隱私保護。 負(fù)載均衡: P2P 網(wǎng)絡(luò)環(huán)境下由于每個節(jié)點既是服務(wù)器又是客戶機,減少了對傳統(tǒng)C/S
27、結(jié)構(gòu)服務(wù)器計算能力、存儲能力的要求,同時因為資源分布在多個節(jié)點,更好的實現(xiàn)了整個網(wǎng)絡(luò)的負(fù)載均衡。 第四節(jié) P2P的應(yīng)用根據(jù)具體應(yīng)用不同,可以把P2P的應(yīng)用領(lǐng)域分為以下這些類型并列舉其中一些典型代表: 提供文件和其它內(nèi)容共享的P2P網(wǎng)絡(luò),例如Napster、Gnutella、eDonkey、emule、BitTorrent等; 挖掘P2P對等計算能力和存儲共享能力,例如SETIhome、Avaki、Popular Power等; 基于P2P方式的協(xié)同處理與服務(wù)共享平臺,例如JXTA、Magi、Groove、.NET My Service等; 即時通訊交流,包括ICQ、OICQ、Yahoo Mes
28、senger等; 安全的P2P通訊與信息共享,例如Skype、Crowds、Onion Routing等。第五節(jié) 本章小結(jié)P2P的本質(zhì)思想是,整個網(wǎng)絡(luò)中不存在中心節(jié)點(或中心服務(wù)器)。在P2P結(jié)構(gòu)中,每一個節(jié)點(Peer)大都同時具有信息消費者、信息提供者和信息通訊者等三方面的功能,在P2P網(wǎng)絡(luò)中每一個節(jié)點所擁有的權(quán)利和義務(wù)都是對等的。在P2P工作方式中,每一個客戶終端既是客戶機,又是服務(wù)器。它弱化了服務(wù)器的作用,將信息數(shù)量、成本資源都向互聯(lián)網(wǎng)各點均勻分布。相比與傳統(tǒng)的C/S模型,P2P具有更多的自由、更高的魯棒性以及更強的性能,并且在保護資源提供者隱私方面更有優(yōu)勢。這些優(yōu)勢得益于P2P與眾不
29、同的技術(shù)特點,也正是由于這些優(yōu)勢,P2P獲得了廣泛的應(yīng)用,從即時通訊到協(xié)同處理等,特別是在文件共享領(lǐng)域,比如本文的主題123456BitTorrent文件分發(fā)系統(tǒng)。第二章 BitTorrent文件分發(fā)系統(tǒng)第一節(jié) BitTorrent概述P2P的理論基礎(chǔ)是分布計算,架構(gòu)提出很早,但卻長期不為大眾所知。年,P2P在文件分享領(lǐng)域的先行者123456音樂共享軟件Napster一炮而紅,從此P2P終于走向大眾并成為高揚共享精神的一面旗幟。但是Naspter的巨大影響力直接觸動了唱片公司的權(quán)益,因此很快五大唱片公司就聯(lián)合將Naspter推上了被告席。2002年Napster在版權(quán)糾紛問題上敗訴,P2P技術(shù)
30、的發(fā)展仿佛一下陷入了舉步維艱的階段。 即便如此,P2P的技術(shù)優(yōu)勢和所倡導(dǎo)的分享精神已經(jīng)深入人心。作為一種極具生命力的技術(shù),P2P沒有停止進化的腳步,借助寬帶的力量,BitTorrent等新生代P2P軟件使P2P技術(shù)迎來一個全新的春天。 Napster所使用的P2P技術(shù),必須以P2P服務(wù)器為中心,所有用戶通過服務(wù)器提供的目錄服務(wù)來搜索和定位資源。雖然服務(wù)器上沒有任何資源, 但所有下載請求都要經(jīng)由服務(wù)器處理 ,因此帶寬問題在Napster代表的P2P模式中凸顯出來,直接反映為用戶的下載速度過慢。而新的P2P模式,服務(wù)器只用于發(fā)布資源,用戶之間可以最大限度地交換文件,從而大大提高了傳輸速度。新的P2
31、P模式以BitTorrent為代表,在BitTorrent的P2P模式中,每個下載者同時也是上傳者。對于上傳者,無論其是否具有完整的文件,其它對等點都可以下載它們所需要的部分;對于下載者,可以從多個目標(biāo)同時下載自己所需要的內(nèi)容。 BitTorrent的優(yōu)勢不僅在于它技術(shù)的創(chuàng)新,也體現(xiàn)于它的自由和開放。自BitTorrent誕生的那一天起,它就是真正的自由協(xié)議,完全遵從公開源代碼規(guī)則,協(xié)議和源碼在網(wǎng)上完全公開并可自由下載。同很多自由軟件一樣,BitTorrent也以其優(yōu)異的性能、獨特的個性招來大批愛好者,許多網(wǎng)絡(luò)編程高手都在它上面做了許多工作,開發(fā)出大量各具特色的客戶端程序和服務(wù)程序,以及各種輔
32、助工具,如Torrent制作程序、BitTorrent下載監(jiān)測軟件等。由于BitTorrent的原創(chuàng)者Bram Cohen未保留BitTorrent的權(quán)利,包括BitTorrent服務(wù)的權(quán)利,因此使用BitTorrent或架設(shè)BitTorrent服務(wù)器以提供BitTorrent服務(wù)不需要獲得特別授權(quán),而且各種BitTorrent 協(xié)議的實現(xiàn)者可以很方便的對協(xié)議進行擴展。無限制的廣泛授權(quán)帶來了責(zé)任的分散和分擔(dān),使BitTorrent在遇到因文件自由交換產(chǎn)生版權(quán)糾紛而受到法律追究時不殃及自身,而只加罪于BitTorrent的濫用者,從而避免Napster那樣的因提供共享服務(wù)而遭致的滅頂之災(zāi)。可以說
33、,正是BitTorrent的開放性使它具有比Napster更強的生命力。第二節(jié) 基本原理一、 P2P的關(guān)鍵技術(shù)要實現(xiàn)一個典型的P2P資源共享系統(tǒng)需要解決兩個關(guān)鍵技術(shù),即對等端發(fā)現(xiàn)技術(shù)和資源搜索技術(shù)。這兩個關(guān)鍵技術(shù)的實現(xiàn)依賴于具體的P2P網(wǎng)絡(luò)模型。1、 對等端發(fā)現(xiàn)技術(shù) 對等端是P2P的基本特征,如何定位并發(fā)現(xiàn)對等端是實現(xiàn)一個P2P系統(tǒng)的前提。這里涉及到兩方面的問題:1.對等端的定位信息 2.如何獲得這些定位信息。第一個問題要求每個對等端在整個系統(tǒng)中具有一個唯一的標(biāo)識,在基于TCP/IP的Internet網(wǎng)絡(luò)環(huán)境中,IP加上端口就可以定位網(wǎng)絡(luò)中的一個對等端。具體實現(xiàn)時還有考慮公有IP、私有IP、N
34、AT等問題。第二個是關(guān)于如何獲得定位信息的問題,不同的P2P網(wǎng)絡(luò)模型有不同的實現(xiàn)特點:(1)、 純P2P模型因為這個模型沒有服務(wù)器,對等端動態(tài)發(fā)現(xiàn)其它端并在它們之間直接通信。因此,這種通信不受傳統(tǒng)模型中的條款和規(guī)則限制。雖然本地配置方案和網(wǎng)絡(luò)信息服務(wù)是可用的。但是登陸到模型上的用戶不可能一直擁有可以發(fā)送請求的真實端數(shù)目;另外,對等端之間的直接通信會影響系統(tǒng)的安全性。(2)、 帶一個簡單發(fā)現(xiàn)服務(wù)器的P2P模型這種模型帶有一個中心服務(wù)器,這個服務(wù)器在數(shù)據(jù)庫中存儲了所有注冊用戶的位置。任何搜索一個端的請求都由服務(wù)器來處理,它會返回一個數(shù)據(jù)庫中端的清單。這種模型的主要好處是增強了安全性并對于請求端來說
35、有大量的對等端可以用,但是如果服務(wù)器速度減慢或者崩潰,定位對等端就會很困難,其它的對等端也會受到影響。(3)、 帶有發(fā)現(xiàn)和查找服務(wù)器的P2P模型在這種模型中,服務(wù)器提供了服務(wù)的清單和對等端的清單,所有的用戶在登陸時都要通知服務(wù)器。這種服務(wù)器不僅發(fā)現(xiàn)其它對等端而且返回所有登陸的重要信息。以此,這種模型相比其它的模型減少了時間耗費。(4)、 帶有發(fā)現(xiàn),查找和內(nèi)容服務(wù)器的P2P模型這種模型為響應(yīng)請求而發(fā)現(xiàn)對等端,在這種情況下中心服務(wù)器保留所有重要信息和請求端具有的內(nèi)容。每個對等端都在服務(wù)器注冊信息,服務(wù)器通過對等端和服務(wù)器響應(yīng)來處理所有請求,因此這種模型對服務(wù)器的要求比較高。2、 資源搜索技術(shù)資源搜
36、索技術(shù)涉及的問題和對等端發(fā)現(xiàn)技術(shù)很類似:1.資源的標(biāo)識信息 2.如何獲得這些標(biāo)識信息(1)、 純P2P模型因為這種模型沒有服務(wù)器協(xié)助通訊,它使用客戶端的搜索模型。如果請求端有關(guān)于另外端定位的信息,處理會非常的快速。但是由于沒有服務(wù)器可能會導(dǎo)致缺少可以連接的端,導(dǎo)致搜索的端的范圍較小。(2)、 帶有一個簡單發(fā)現(xiàn)服務(wù)器的P2P模型這種模型有一個服務(wù)器,但是它同樣使用客戶端的搜索技術(shù)。服務(wù)器提出請求端連接用戶的一個清單,請求端查找擁有所需內(nèi)容的端,連接它并獲取內(nèi)容。這種模型的好處在于它提供了可以連接獲取所需內(nèi)容的大量端。(3)、 帶有發(fā)現(xiàn)和查找服務(wù)器的P2P模型這種模型遵循客戶端的搜索和服務(wù)器端的搜
37、索。在所有的P2P模型中,這種模型是最有效和最靈活的。一個端無論何時要搜索一些特殊的內(nèi)容,它都可以直接在服務(wù)器是對已經(jīng)相連的端進行搜索,或者簡單的請求服務(wù)器對所需信息的結(jié)果進行回答。這種模型除了網(wǎng)絡(luò)上相連的端外,還有可服務(wù)于請求端,服務(wù)器上 搜索工具可用是因為無論何時一個注冊端登陸后,除了驗證外,還將發(fā)送它的名字和共享的資源清單。(4)、 帶有發(fā)現(xiàn)、查找和內(nèi)容服務(wù)器的P2P模型這種模型不能使用客戶端的搜索技術(shù),因為位于中心的服務(wù)器管理整個網(wǎng)絡(luò),服務(wù)器處理所有的操作。這種模型完全基于服務(wù)器的搜索技術(shù),一個端無論 何時需要信息,它只需連接服務(wù)器,因為服務(wù)器數(shù)據(jù)庫中有完整的信息:從注冊用戶到所有可能
38、的內(nèi)容。但是如果太多的端訪問服務(wù)器,服務(wù)器的處理速度就會下 降,也會影響到其它相關(guān)服務(wù)器。二、 BitTorrent對關(guān)鍵技術(shù)的實現(xiàn)BitTorrent在某種程度上可以歸為以上提到的帶有一個簡單發(fā)現(xiàn)服務(wù)器的P2P模型,但其具體實現(xiàn)并沒有被限制于某一個模型,而且也不是一成不變。由于BitTorrent的開放性,從誕生到至今,BitTorrent協(xié)議的各種實現(xiàn)對協(xié)議本身進行了擴展,但大部分?jǐn)U展并沒有進入官方協(xié)議。這里的分析將只依據(jù)BitTorrent的官方協(xié)議。1、 資源標(biāo)識信息BitTorrent的資源的標(biāo)識信息隱含在metainfo文件中,通過計算metainfo文件中的某個節(jié)的hash值,將
39、會得到一個20個字節(jié)的唯一標(biāo)識。由于metainfo文件里還包含tracker服務(wù)器和其它一些可變的信息,所以不能以整個文件的hash值作為資源的唯一標(biāo)識。顯然,獲得了metainfo文件就得到了相應(yīng)的資源信息。2、 對等端標(biāo)識BitTorrent的對等端標(biāo)識為對等端的IP和端口值。對等端的標(biāo)識信息由tracker服務(wù)器維護,同一個資源的對等端擁有一個IP端口列表。3、 獲取對等端標(biāo)識對等端首先獲取metainfo文件,然后計算出資源標(biāo)識,并將資源標(biāo)識作為消息的一部分向tracker服務(wù)器發(fā)出請求,服務(wù)器根據(jù)資源標(biāo)識將相應(yīng)的IP地址端口列表作為應(yīng)答發(fā)送給對等端。同時tracker服務(wù)器會記錄該
40、對等端的IP端口值。第三節(jié) 文件分發(fā)系統(tǒng)的組成一個典型的BitTorrent文件分發(fā)系統(tǒng)由如下幾部分組成:metainfo文件、提供種子文件的web服務(wù)器、tracker服務(wù)器、資源發(fā)布者、下載者。 metainfo文件: 也稱為種子文件,后綴為.torrent。文件包含了tracker服務(wù)器和資源文件的信息。比如tracker服務(wù)器的地址和通信協(xié)議、資源文件的hash值、文件路徑、文件大小等信息。 web服務(wù)器:web服務(wù)器僅僅作為metainfo文件的發(fā)布點,并提供該metainfo文件對應(yīng)資源的相關(guān)信息。如果下載者可以通過其它途徑獲得metainfo文件,那么web服務(wù)器并不是必要的,因
41、為在下載者獲得metainfo文件后,整個文件分發(fā)系統(tǒng)的運行將不再依賴web服務(wù)器。 tracker服務(wù)器:tracker服務(wù)器負(fù)責(zé)向下載者提供擁有同一資源的其它下載者的定位和狀態(tài)信息。tracker服務(wù)器和下載者之間通過HTTP協(xié)議通信,因此tracker服務(wù)器可以和web服務(wù)器集成在一起。 資源發(fā)布者:資源的原始擁有者,負(fù)責(zé)制作metainfo文件并將其發(fā)布(通過web服務(wù)器)。 下載者:文件發(fā)布系統(tǒng)中除資源發(fā)布者之外的對等端。在下載和上傳的同時,還負(fù)責(zé)和tracker服務(wù)器保持聯(lián)系,提供自己的下載狀態(tài)。圖2.1 BitTorrent文件分發(fā)系統(tǒng)組成第四節(jié) 一個完整的文件分發(fā)過程下面是一個
42、完整的文件分發(fā)過程,從中可以看到BitTorrent文件分發(fā)系統(tǒng)的各個成員在此過程中的作用: 根據(jù)BitTorrent協(xié)議,資源發(fā)布者會根據(jù)要發(fā)布的資源生成一個種子文件。 資源發(fā)布者將種子文件提交給web服務(wù)器,并提供資源內(nèi)容的描述以便于資源的檢索。當(dāng)然資源發(fā)布者也可以通過其它方式來發(fā)布種子文件。 下載者訪問web服務(wù)器,根據(jù)資源描述選擇需要的資源并下載對應(yīng)的種子文件。 下載時,BitTorrent客戶端首先解析種子文件得到Tracker地址,然后連接Tracker服務(wù)器。Tracker服務(wù)器記錄下載者的信息然后回應(yīng)下載者的請求,并提供其它下載者(包括發(fā)布者)的IP和端口信息。此后,客戶端會定
43、時連接tracker服務(wù)器報告自己的狀態(tài),或者根據(jù)需要請求更多其它下載者的IP和端口信息。 根據(jù)tracker服務(wù)器返回的信息,下載者再連接其它下載者。根據(jù)種子文件,連接的雙方分別向?qū)Ψ礁嬷约阂呀?jīng)擁有的數(shù)據(jù),然后交換對方?jīng)]有的數(shù)據(jù)。 下載者每得到一個數(shù)據(jù)塊,需要算出數(shù)據(jù)塊的hash值與種子文件中保存的原始值對比,如果相同則說明數(shù)據(jù)塊正確,不同則需要重新下載這個塊,以此保證數(shù)據(jù)的準(zhǔn)確性。 當(dāng)下載者獲得資源的完整拷貝時,下載完成。這時下載者可以選擇退出,或者轉(zhuǎn)變?yōu)楹唾Y源的發(fā)布者一樣只上傳數(shù)據(jù)的上傳者,即種子。第五節(jié) 本章總結(jié)BitTorrent等新一代的P2P軟件使P2P技術(shù)迎來了春天。相比Na
44、pster,BitTorrent更開放和自由,并且進一步削弱了目錄服務(wù)器的作用,從而獲得了更強的性能,同時也分散了資源發(fā)布的責(zé)任,避免了一些法規(guī)上的糾紛。通過metainfo文件和tracker服務(wù)器,BitTorrent巧妙的解決了P2P模型的兩個關(guān)鍵技術(shù)。BitTorrent是由web服務(wù)器、tracker服務(wù)器、資源發(fā)布者、下載者等實體組成的一個文件分發(fā)系統(tǒng),一個完整的文件分發(fā)過程需要各個實體有序高效的協(xié)作才能完成。第三章 BitTorrent文件分發(fā)協(xié)議BitTorrent文件分發(fā)協(xié)議的網(wǎng)絡(luò)接口部分涉及到兩個通信協(xié)議:1. Tracker HTTP/HTTPS Protocol 2.
45、Peer wire protocol,分別用于對等端與tracker服務(wù)器通信以及對等端與對等端之間的點對點通信。其中Tracker HTTP/HTTPS Protocol明顯是傳統(tǒng)C/S模式的通信協(xié)議,從這點上看BitTorrent并不是一個純P2P網(wǎng)絡(luò)模型。相比而言,Peer wire protocol則是一個典型的P2P通信協(xié)議,也是BitTorrent的核心。第一節(jié) 術(shù)語解釋BitTorrent的官方協(xié)議里包含了一些術(shù)語,它們都對應(yīng)著文件分發(fā)系統(tǒng)中的某個實體。為了盡量保持術(shù)語原來的意思,通常不使用它們的中文名稱。如下是相應(yīng)的解釋: tracker:對應(yīng)于tracker服務(wù)器; peer
46、:對應(yīng)于文件分發(fā)系統(tǒng)的對等端; seeder:特指已經(jīng)擁有完整資源的peer,包括資源的發(fā)布者。它們只上傳不下載。 client:從某一個對等端角度,把自身稱為client,其它和它交互的對等端稱為peer。 piece:在BitTorrent中,把某一個資源里的所有文件抽象成一個大的文件塊,然后將文件塊按一定的長度(2的n次冪字節(jié))等分,每一等份就為一個piece。如果整個文件塊的長度不是piece長度的整數(shù)倍,則最后一個piece的剩余部分將被填充為零。 slice:每個piece會再被劃分為slice。對等端以一個slice為單位請求和接收數(shù)據(jù)。 torrent:一個資源以及相應(yīng)的種子文
47、件、對等端組成一個下載群。torrent是這個下載群里所有實體的抽象。第二節(jié) Tracker HTTP/HTTPS Protocol從字面上就很容易理解, Tracker HTTP/HTTPS Protocol是一個構(gòu)建在HTTP/HTTPS之上的協(xié)議,用于peer和tracker之間的通信。Peer給tracker發(fā)送的HTTP GET請求中包含了peer的一些信息,tracker通過這些信息維護相關(guān)torrent的全局統(tǒng)計信息。Tracker給peer的響應(yīng)消息里包含一個IP端口列表,這樣peer就可以通過這個列表加入到相應(yīng)的torrent下載群里。下面詳細(xì)說明該協(xié)議請求報文和響應(yīng)報文的格
48、式。一、 請求報文GET/announce?info_hash=%0Bp%A3%40%EB%A9%27%21%F4%19%B7%E5NLu%DAn4XI&peer_id=%2DCD0102%2D%F4%17%F4%03%82%26%F8%CCQ%5F%E0%C3&port=2706&uploaded=0&downloaded=0&left=0&compact=1&event=stopped&numwant=100 HTTP/1.0以上是一個 Tracker HTTP/HTTPS Protocol GET請求的格式,請求的annou
49、nce URL是metainfo文件中announce關(guān)鍵字對應(yīng)的值。URL頭后面的參數(shù)采用的是標(biāo)準(zhǔn)CGI格式(announce URL 之后是一個?字符,然后就是一連串的參數(shù)=值參數(shù)序列)。由于有些字符不能在URL中出現(xiàn),所以URL中的二進制數(shù)據(jù)(比如info_hash、peer_id)必須根據(jù)RFC1738規(guī)范進行轉(zhuǎn)義。任何不在1-9,a-z,A-Z,'.','-','_',''字符集中的字符都要轉(zhuǎn)換為“%nn”的格式,“nn”是對應(yīng)字節(jié)的十六進制形式,如下面的例子:轉(zhuǎn)換前:x12x34x56x78x9axbcxdexf1x2
50、3x45x67x89xabxcdxefx12x34x56x78x9a轉(zhuǎn)換后:%124Vx%9A%BC%DE%F1%23Eg%89%AB%CD%EF%124Vx%9A 下面解釋GET請求中的一些關(guān)鍵字: info_hash: 元文件中info部分的hash 值,也就是之前提到的資源的標(biāo)識信息。這個字符串需要轉(zhuǎn)義。 peer_id: peer的id,一個20字節(jié)長的字符串。每個peer在開始一次新的下載之前,需要隨機創(chuàng)建這個id。這個字符串通常也需要被轉(zhuǎn)義。 ip: 一個可選參數(shù),peer的真實IP地址,可以是點分十進制的IPv4地址或RFC3513定義的十六進制格式的IPv6地址。這個參數(shù)之所以
51、是可選的,是因為tracker服務(wù)器通常會通過連接的socket直接獲得peer的IP地址。但是在某些情況下需要這個參數(shù),比如當(dāng)peer通過代理連接tracker時,或者當(dāng)tracker和peer都在某一個NAT網(wǎng)關(guān)的本地端時,因為(RFC1918中定義的)私有IP地址對外部(NAT的另一端)來說是不可訪問的,tracker會忽略私有IP地址,所以peer有必要通過此參數(shù)給tracker提供一個有效的公有IP地址,以便外部的peer能夠主動連接到本地的peer。另外,不同的tracker對該參數(shù)的處理方式不一樣,有些tracker只有當(dāng)IP為公有IP時才會采用此參數(shù)。有些tracker會無條件
52、的采用此參數(shù),不管是私有IP還是公有IP,比如在校園網(wǎng)環(huán)境內(nèi)。而有些tracker干脆直接忽略此參數(shù)。 port: peer所監(jiān)聽的端口,用于其它的peer主動連接本peer。peer通常在在 6881 端口上監(jiān)聽,如果該端口被占用,那么會一直嘗試到 6889,如果都被占用,那么就放棄監(jiān)聽。 uploaded: peer已經(jīng)上載的數(shù)據(jù)大小,十進制表示,單位為字節(jié)。 downloaded: 已經(jīng)下載的數(shù)據(jù)大小,十進制表示,單位為字節(jié)。 left: 該peer還有多少數(shù)據(jù)沒有下載完,十進制表示,單位為字節(jié)。注意,這個值不能根據(jù)文件長度和已下載數(shù)據(jù)大小計算出來,因為很可能是斷點續(xù)傳,或者因為檢查文件
53、完整性失敗而必須重新下載。 event: 一個可選參數(shù),值是started、compted或者stopped之一(也可以為空,不做處理)。在一次下載剛開始的時候,該值被設(shè)置為started,在下載完成之后,設(shè)置為completed。如果下載者停止了下載,那么該值設(shè)置為stopped。如果只是一般的保持連接的請求,則不出現(xiàn)該參數(shù)或者該參數(shù)為空。started: 給tracker的第一個請求里必須包含此參數(shù)值,包括斷點續(xù)傳和新的下載。stopped: 如果下載被正常的暫停,則使用此參數(shù)值. completed: 下載完成時使用此參數(shù)值。但如果下載開始前已下載完所有數(shù)據(jù),只是單純做種,則不必設(shè)定此參
54、數(shù)值。二、 響應(yīng)報文tracker的響應(yīng)消息是一個”text/plain“類型的文檔,該文檔包含一個采用bencoding編碼的字典。字典中包含如下關(guān)鍵字: failure reason: 一個字符串,用來解釋查詢失敗的原因。如果該關(guān)鍵字存在,則其它關(guān)鍵字都不再需要。 warning message: 與failure reason類似的字符串,新添加的可選關(guān)鍵字。不同的是它不影響后面的關(guān)鍵字。 interval: 一個整數(shù)。peer在兩次發(fā)送請求之間的時間間隔 ,以秒為單位。 min interval: 一個整數(shù),為可選關(guān)鍵字。 peer連接tracker失敗到嘗試再次連接之間的最小時間間隔
55、。這是為了防止peer的頻繁連接使tracker性能下降。 tracker id: 一個當(dāng)peer再次連接tracker時需要返回給tracker的字符串。 complete: 一個整數(shù)。擁有完整文件的peer的數(shù)量。即seeder的數(shù)量。 incomplete: 一個整數(shù)。除seeder之外的peer的數(shù)量。 peers: 一個字典列表。每個字典包含兩關(guān)鍵字:1、peer id: 一個字符串。代表peer的一個ID,由peer自己定義并在上面的請求中提交給tracker;、ip: peer的IP地址,可以是IPv6(十六進制表示)、IPv4(點分十進制表示)或者DNS域名(字符串表示);、p
56、ort: 一個整數(shù)。peer的端口號。 peers: 一個字符串。作用和上面的peers字典列表一樣,保存peer的定位信息,只是采用的格式不一樣。這是一個每6個字節(jié)為一組的字符串,每個組的前四個字節(jié)保存IPv4地址,后兩個字節(jié)保存端口號,而且要按網(wǎng)絡(luò)字節(jié)順序保存。上面提到的peer字典列表默認(rèn)為50個項。如果torrent對應(yīng)的下載群里的peer數(shù)小于50,則返回實際數(shù)目的peer。如果大于50,則tracker一般會隨機選擇50個peer返回,或者采用更智能的選擇機制以使整個下載群更有效,比如在一個返回給seeder的peer列表中包含其它seeder就不是一個明智的做法。第三節(jié) Peer
57、 wire protocolPeer wire protocol是用于peer與peer之間互相交換piece的協(xié)議。該協(xié)議基于TCP/IP,TCP提供的可靠數(shù)據(jù)流服務(wù)和協(xié)議本身的數(shù)據(jù)完整性檢查可以保證數(shù)據(jù)傳輸?shù)目煽啃院驼_性。根據(jù)“一報還一報”的原則,通過優(yōu)化的piece以及peer選擇算法可以保證整個下載群的健康性,使單個peer獲得極快的下載速度。一、 peer的狀態(tài)peer的狀態(tài)是指一個連接中兩個交互的peer的狀態(tài),包括choked和interested。 choked: 中文為阻塞,當(dāng)一個peer阻塞另外一個peer時,意味著該peer將忽略另一個peer的任何請求消息,所以另外一個peer不會從該pee
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電力施工課件教學(xué)課件
- 2024年度乙方為甲方提供財務(wù)咨詢服務(wù)合同
- 2024年度供應(yīng)鏈融資合同融資額度與還款方式說明
- 2024醫(yī)療器械公司與研發(fā)團隊合作協(xié)議
- 2024年度技術(shù)服務(wù)與授權(quán)合同
- 2024婚姻擔(dān)保協(xié)議合同
- 2024建筑的裝飾合同書范本
- 2024年度版權(quán)出租合同詳細(xì)條款及其標(biāo)的
- 2024年居住房屋買賣合同
- 畫小雞課件教學(xué)課件
- 2024秋期國家開放大學(xué)??啤陡叩葦?shù)學(xué)基礎(chǔ)》一平臺在線形考(形考任務(wù)一至四)試題及答案
- 實驗七二苯甲醇的制備
- 雷沃十年十大影響力事件評選活動方案
- 肺癌化療臨床路徑
- 全員育人導(dǎo)師制工作手冊
- 各種型鋼理論截面積、理論表面積、理論重量對照表
- 部門服務(wù)滿意度評分表
- 第十章銷售團隊的激勵機制
- 《螞蟻做操》說課稿
- 《危險駕駛罪》PPT課件.ppt
- (完整版)PD、QC有限快充的知識講解
評論
0/150
提交評論