• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 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)解”
    钟祥市| 亚东县| 砀山县| 驻马店市| 永嘉县| 太谷县| 宁晋县| 桦甸市| 绥芬河市| 崇义县| 德保县| 江达县| 涡阳县| 扶风县| 翁牛特旗| 公安县| 通州市| 张家界市| 河间市| 满城县| 信阳市| 宁津县| 昌乐县| 阜平县| 庆安县| 明星| 岳池县| 栖霞市| 延津县| 东山县| 通道| 云霄县| 望都县| 百色市| 仁化县| 涟源市| 山东| 仁化县| 孟州市| 山东| 武鸣县|