• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      網(wǎng)絡(luò)文件傳輸技術(shù)的研究與實現(xiàn)*

      2016-09-18 08:46:59閆培哲
      山西電子技術(shù) 2016年4期
      關(guān)鍵詞:忻州局域網(wǎng)解密

      閆培哲

      (忻州師范學(xué)院,山西 忻州 034000)

      ?

      網(wǎng)絡(luò)文件傳輸技術(shù)的研究與實現(xiàn)*

      閆培哲

      (忻州師范學(xué)院,山西 忻州 034000)

      在現(xiàn)代信息社會中,信息的交換、共享顯現(xiàn)的尤為重要。局域網(wǎng)作為計算機(jī)網(wǎng)絡(luò)中的終端成員,在企事業(yè)單位中起著至關(guān)重要的作用。本文介紹了計算機(jī)網(wǎng)絡(luò)中文件的傳輸實現(xiàn)技術(shù),并針對局域網(wǎng)特點,設(shè)計了一種較為高效安全的局域網(wǎng)文件傳輸系統(tǒng)設(shè)計方案,實現(xiàn)了網(wǎng)絡(luò)發(fā)現(xiàn),數(shù)據(jù)的實時壓縮、實時加密,流量控制等功能。

      局域網(wǎng)發(fā)現(xiàn);文件傳輸;網(wǎng)絡(luò)流量控制

      基于局域網(wǎng)的文件傳輸系統(tǒng)能夠讓局域網(wǎng)內(nèi)部資料實現(xiàn)快捷,準(zhǔn)確,安全的共享。文件傳輸系統(tǒng)主要功能是自動獲取局域網(wǎng)內(nèi)用戶的主機(jī)名,IP地址以及其他信息,最終通過TCP/IP協(xié)議和UDP協(xié)議實現(xiàn)點到點文件傳輸功能。

      在目前的局域網(wǎng)中信息的傳輸是開放的,所以任何人都可以借助一些特殊的工具(如抓包工具)實現(xiàn)對這些信息的獲取,這樣就大大的降低了信息的安全性,甚至可能會帶來巨大的經(jīng)濟(jì)損失。另外,雖然目前局域網(wǎng)的帶寬已經(jīng)達(dá)到10 M/s到100 M/s,甚至出現(xiàn)了千兆以太網(wǎng),但是可用帶寬作為一種資源,它的不足會嚴(yán)重影響到整個局域網(wǎng)的服務(wù)質(zhì)量,使得人們的工作效率大幅度下降。

      設(shè)計基于自身局域網(wǎng)特點的文件傳輸工具顯得尤為重要。

      1 通訊參數(shù)設(shè)置

      計算機(jī)與計算機(jī)之間的網(wǎng)絡(luò)通訊實際上是運(yùn)行在這兩個計算機(jī)上的進(jìn)程之間的通訊,如圖1所示。

      圖1 網(wǎng)絡(luò)通訊示意圖

      網(wǎng)絡(luò)中使用一個三元組來標(biāo)識全局中的唯一進(jìn)程:

      (協(xié)議,本地地址,本地端口號)

      這樣一個三元組稱作半相關(guān)(half-association),它指定的是連接的一端,如果需要確定一個完整的網(wǎng)絡(luò)通訊,則需要確定兩個進(jìn)程,并且只能使用一種高層協(xié)議,這就需要下面的五元組,稱為全相關(guān)(association):

      (協(xié)議,本地地址,本地端口號,遠(yuǎn)程地址,遠(yuǎn)程端口號)

      Heartbeat服務(wù)的目的就是收集和維護(hù)這些信息。

      2 Socket的創(chuàng)建

      在本文中,協(xié)議主要用到TCP和UDP兩種協(xié)議,用于發(fā)送和接受控制數(shù)據(jù)的Socket使用UDP協(xié)議,而用于文件傳輸?shù)腟ocket使用TCP協(xié)議。

      根據(jù)SOCK_STREAM和SOCK_DGRAM兩種類型的Socket的工作模式,可以知道,應(yīng)用程序可以在整個生命周期中重復(fù)使用一個SOCK_DGRAM類型的Socket來向任意客戶端發(fā)送數(shù)據(jù)包形式數(shù)據(jù),而利用一個SOCK_STREAM類型的Socket在請求連接或接受連接時返回的Socket來進(jìn)行所需的流式數(shù)據(jù)通訊。

      另外,考慮到安全性和穩(wěn)定性等因素,客戶端可以設(shè)置三種端口用于整個生命周期中的網(wǎng)絡(luò)通訊,分別為Heartbeat Service Port(每個HeartbeatService 設(shè)置需要一個端口,以適應(yīng)不同Heartbeat Service Port的客戶端群),TCP Port(唯一)和UDP Port(唯一)。其中,TCP Port和UDP Port隨機(jī)創(chuàng)建,然后通過端口固定的Heartbeat服務(wù)來通知其他客戶端自己的TCP Port和UDP Port信息。

      2.1Heartbeat服務(wù)的實現(xiàn)

      HeartbeatService主要是以計時器為驅(qū)動的服務(wù),其中包含一個Heartbeat Info List,存儲了所有Heartbeat服務(wù)節(jié)點。

      在客戶端啟動后,Heartbeat服務(wù)便開始運(yùn)行。初始化過程將遍歷 Broadcast List,對每一個CHeartbeatNode做如下處理。

      1) 讀取其中的Heartbeat服務(wù)設(shè)置,通過CommManager為其創(chuàng)建CommNode數(shù)據(jù),并將此數(shù)據(jù)指針填入其中;

      2) 使創(chuàng)建的CommNode中的Socket開始監(jiān)聽;

      3) 將此CHeartbeatNode注冊到HeartbeatService中,開始廣播Heartbeat數(shù)據(jù)。

      至此開始,HeartbeatService將伴隨著客戶端的整個生命周期,定時廣播HeartbeatData,并監(jiān)聽其他客戶端廣播的HeartbeatData,并根據(jù)前文中的處理方法處理對應(yīng)的Buddy。

      當(dāng)BuddiesList更改了自身的數(shù)據(jù)后,會同時更新一個時間戳,UI部分在定時檢查BuddiesList時會檢查這個時間戳,以確定是否更新界面。

      2.2數(shù)據(jù)加密

      目前,網(wǎng)絡(luò)安全傳輸方案中經(jīng)典的加密方法分為對稱加密和非對稱加密兩種。對稱加密運(yùn)算速度快但容易被攻擊和破解;非對稱加密算法復(fù)雜,不易被破解,但加密速度慢,不適宜傳輸大量的安全數(shù)據(jù)。由于考慮到文件傳輸?shù)奶攸c,本文使用的是對稱加密算法。

      由于本文所使用的加密算法屬于對稱加密算法,所以便需要一套較為健壯的密鑰生成算法。密鑰的生成需要以下信息:接收方IP地址:peer_ip;接收方端口:peer_port;發(fā)送方userhash:userhash;一個16位隨機(jī)數(shù):randomkey。這里用到了發(fā)送方和接收方雙方的信息,保證了信息的分散;另一方面,在一定程度上也防止了虛假Package的干擾(如果無法利用擁有的userhash正確解密Package數(shù)據(jù),則這個Package可能屬于虛假Package)。

      創(chuàng)建函數(shù)首先會創(chuàng)建一個長度為18的緩沖區(qū)key_data,緩沖區(qū)將被分為三部分:

      A0(13Bytes)A1(2Bytes)A2(3Bytes)

      圖2緩沖區(qū)示意圖

      各部分按照如下規(guī)則填充數(shù)據(jù):A0:userhash中從第3字節(jié)開始的13字節(jié)數(shù)據(jù);A1:peer_port與randomkey異或的結(jié)果;A2:peer_ip的結(jié)尾3字節(jié)數(shù)據(jù);填充完畢后生成其md5值,并根據(jù)此md5值利用RC4初始化算法KSA最終產(chǎn)生加密密鑰。

      解密過程與加密過程相反,是將加密時用于創(chuàng)建密鑰的隨機(jī)數(shù)和原始數(shù)據(jù)的md5值從加密數(shù)據(jù)中獲取出來,然后根據(jù)隨機(jī)數(shù)和相關(guān)信息創(chuàng)建密鑰解密加密數(shù)據(jù),再取得解密后數(shù)據(jù)的md5值,并與原始數(shù)據(jù)的md5值比較,判斷解密過程是否成功,成功則返回解密數(shù)據(jù)。

      3 Package的壓縮

      壓縮過程和解壓縮過程是在Package中完成的,Package中設(shè)計了三個函數(shù)用于壓縮和解壓,分別是:void CPacket::PackPacket(void);bool CPacket::UnPackPacket(UINT nUnPackSize);bool CPacket::UnPackPacket(void)。壓縮過程指的是Package在發(fā)送之前將會被壓縮,當(dāng)壓縮之后的長度小于原始數(shù)據(jù)長度時,發(fā)送壓縮數(shù)據(jù),否則依然發(fā)送原始數(shù)據(jù)。解壓縮過程使用Package的兩個成員函數(shù),UnPackPacket(UINT nUnPackSize)解壓當(dāng)前Package,nUnPackSize限制了解壓后數(shù)據(jù)的最大長度,如果超過這個長度,則認(rèn)為解壓失敗。此函數(shù)同樣為解壓當(dāng)前Package,解壓方法大致相同,與上一個函數(shù)不同的是它忽略了解壓后最大長度的限制。

      在對壓縮功能做測試時,使用了上述的函數(shù)對Regedit.exe進(jìn)行了壓縮和解壓,結(jié)果如下:

      圖3 Regedit.exe壓縮解壓效果圖

      其中,regedit_compressed.exe為regedit.exe壓縮后得到的文件,regedit_uncompressed.exe為將regedit_compressed.exe解壓后得到的文件,壓縮率約為17.22%,壓縮結(jié)果較為理想。

      4 流量的控制

      流量的控制目的是為了限制網(wǎng)絡(luò)傳輸時傳輸速率的上限,保證有限地使用網(wǎng)絡(luò)帶寬,防止帶寬耗盡,影響其他需要占用網(wǎng)絡(luò)帶寬的應(yīng)用程序或主機(jī)。

      流量控制可以在硬件層、驅(qū)動層或者在應(yīng)用程序?qū)又型瓿伞_@里將流量控制處理放在應(yīng)用程序?qū)又?,以時間片調(diào)度的方式來實現(xiàn)。在每個時間片中,完成一組TransferTask的處理。

      前文中提到當(dāng)應(yīng)用層需要發(fā)送一個Package時,它并不直接將這個Package通過相應(yīng)的受控Socket發(fā)送出去,而是將其放入BandThrottler中的任務(wù)隊列,這種任務(wù)被稱作TransferTask,通常為發(fā)送或接受一個Package。

      一個TransferTask的處理流程如圖4所示。

      圖4 TransferTask的處理流程

      當(dāng)一個TransferTask創(chuàng)建并放入任務(wù)隊列之后,它將開始等待獲得傳輸權(quán),當(dāng)獲得了傳輸權(quán)后,它便被Task Processor從TaskQueue中提取出來進(jìn)行處理。

      TaskQueue中包含兩個隊列,如圖5。

      圖5 TaskQueue隊列圖

      Temp Queue用于暫時存放新添加的TransferTask,相當(dāng)于應(yīng)用層和Task Queue之間的一個緩沖區(qū)。Temp Queue 和Process Queue各有一個互斥鎖,保證了各線程在同時訪問這兩個隊列時的數(shù)據(jù)安全。當(dāng)應(yīng)用層各個線程希望添加自己的任務(wù)到TaskQueue時,由于Temp Queue的互斥鎖,可以依次完成添加任務(wù);當(dāng)Process Queue由于Task Processor提取任務(wù)鎖閉時,應(yīng)用層仍可以將任務(wù)提交到Temp Queue,而不必等待Process Queue解鎖;當(dāng)Process Queue中無任何任務(wù)時,將執(zhí)行一次從Temp Queue中提取所有任務(wù)到自身的過程。

      為了控制整個傳輸過程,這里將時間劃分為一個個長度相同的時間片,并為當(dāng)前的時間片計算出可以用于傳輸?shù)淖畲罅髁恐担诿總€時間片內(nèi),BandThrottler如果發(fā)現(xiàn)TaskQueue中有任務(wù),將開始執(zhí)行一個循環(huán),不斷提取TaskQueue中的每個任務(wù)并進(jìn)行處理,每次處理將會從單位時間片的最大傳輸流量值中減去此次任務(wù)執(zhí)行所需的流量,當(dāng)流量耗盡時,將停止處理并在剩余的時間內(nèi)進(jìn)入休眠,以等待下一個時間片。

      為了獲得精確的系統(tǒng)時間,這里使用了timeGetTime()。經(jīng)反復(fù)測試,每個時間片(即TIME_BETWEEN_UPLOAD_LOOPS)設(shè)置在200毫秒較為適宜。

      通過上面的設(shè)計,流量控制基本實現(xiàn)了其功能。

      至此,主要功能的實現(xiàn)大致完成。

      5 結(jié)束語

      本文提出一種結(jié)合了加密、壓縮和流量控制的文件傳輸系統(tǒng)。使用加密來提高數(shù)據(jù)的安全性,使用壓縮來減小傳輸流量,并通過一套算法來控制傳輸過程。針對文件傳輸?shù)奶攸c,本文使用的是對稱加密方式,采用RC4算法;壓縮使用了目前較為成熟的zlib壓縮函數(shù)庫。

      [1]齊治昌,譚慶平,寧洪.軟件工程[M].第2版.北京:高等教育出版社,2004.

      [2]Steve McConnell.代碼大全[M].金戈,湯凌,等譯.北京:電子工業(yè)出版社,2006.

      [3]謝希仁.計算機(jī)網(wǎng)絡(luò) [M].第2版.北京:電子工業(yè)出版社,1999.

      [4]韓希義.計算機(jī)網(wǎng)絡(luò)基礎(chǔ) [M].北京:高等教育出版社,2004.

      [5]Dr. International.國際化軟件開發(fā)[M].北京:機(jī)械工業(yè)出版社,2003.

      [6]Schneier B.Applied Cryptography,Protocols.Algorithms and Source Code in Co[M].New York:John Wiley & Sons,1996.

      [7]孟慶樹,王麗娜,傅建明,等.密碼編碼學(xué)與網(wǎng)絡(luò)安全原理與實踐[M].北京:電子工業(yè)出版社,2006.

      [8]馬永勤,李正文,汪劉艷.基于Winsock的文件互傳[J].重慶大學(xué)學(xué)報,2004,28: 49-52.

      [9]侯俊杰.深入淺出MFC[M].武漢:華中科技大學(xué)出版社,2001.

      [10]孫鑫.VC++深入詳解[M].北京:電子工業(yè)出版社,2006.

      [11]孔鵬.Visual C++技術(shù)手冊[M].北京:機(jī)械工業(yè)出版社,2007.

      [12]王曉鵬.TCP/IP下的Socket及Winsock通信機(jī)制[J].航空計算技術(shù),2004,34: 126-128.

      [13]Dana Moore,John Hebeler.對等網(wǎng)[M].北京:清華大學(xué)出版社,2003.

      [14]Microsoft.Microsoft Visual C++分布式應(yīng)用程序開發(fā)(英文版)[M].北京:北京大學(xué)出版社,2001.

      [15]黃強(qiáng).WINDOWS網(wǎng)絡(luò)編程[M].北京:人民郵電出版社,2003.

      Research and Implementation on Network File Transmission Technology

      Yan Peizhe

      (XinzhouTeachersUniversity,XinzhouShanxi034000,China)

      In the modern information society, information exchange and sharing appears particularly important. LAN, as a computer network terminal member, plays a crucial role in enterprises and institutions. This paper introduces the transmission technology of files in the computer network, and according to the characteristics of the local area network, it designs a more efficient and safe network file transmission system; realizes the network discovery, data real-time compression, real-time encryption, flow control and other functions.

      LAN discovery; file transmission; network flow control

      2016-07-05

      忻州師范學(xué)院院級科研基金資助項目(201111)

      閆培哲(1981- ),男,碩士,忻州師范學(xué)院計算機(jī)助教,主要研究方向為網(wǎng)絡(luò)開發(fā)、教育管理。

      1674- 4578(2016)04- 0092- 03

      TP 393.093

      A

      猜你喜歡
      忻州局域網(wǎng)解密
      解密“熱脹冷縮”
      忻州職業(yè)技術(shù)學(xué)院
      陽煤忻州通用機(jī)械有限責(zé)任公司
      解密“一包三改”
      少先隊活動(2020年9期)2020-12-17 06:17:31
      炫詞解密
      基于VPN的機(jī)房局域網(wǎng)遠(yuǎn)程控制系統(tǒng)
      電子制作(2019年16期)2019-09-27 09:35:04
      基于802.1Q協(xié)議的虛擬局域網(wǎng)技術(shù)研究與實現(xiàn)
      電子制作(2017年17期)2017-12-18 06:40:48
      局域網(wǎng)性能的優(yōu)化
      電子制作(2017年8期)2017-06-05 09:36:15
      《魅力忻州》
      解密“大調(diào)解”
      防城港市| 神池县| 资源县| 抚远县| 科技| 菏泽市| 泽州县| 汽车| 清丰县| 白河县| 河源市| 新建县| 喀喇| 北宁市| 海淀区| 巫溪县| 会同县| 宁夏| 广宗县| 泗阳县| 江陵县| 同德县| 武威市| 承德县| 荔浦县| 依兰县| 紫云| 新化县| 郁南县| 洛浦县| 沛县| 阿勒泰市| 临高县| 黑山县| 海阳市| 吉木萨尔县| 内江市| 鄱阳县| 曲麻莱县| 财经| 灌云县|