网络文件传输技术的研究与实现*

2016-09-18 08:46闫培哲
山西电子技术 2016年4期
关键词:忻州局域网解密

闫培哲

(忻州师范学院,山西 忻州 034000)



网络文件传输技术的研究与实现*

闫培哲

(忻州师范学院,山西 忻州 034000)

在现代信息社会中,信息的交换、共享显现的尤为重要。局域网作为计算机网络中的终端成员,在企事业单位中起着至关重要的作用。本文介绍了计算机网络中文件的传输实现技术,并针对局域网特点,设计了一种较为高效安全的局域网文件传输系统设计方案,实现了网络发现,数据的实时压缩、实时加密,流量控制等功能。

局域网发现;文件传输;网络流量控制

基于局域网的文件传输系统能够让局域网内部资料实现快捷,准确,安全的共享。文件传输系统主要功能是自动获取局域网内用户的主机名,IP地址以及其他信息,最终通过TCP/IP协议和UDP协议实现点到点文件传输功能。

在目前的局域网中信息的传输是开放的,所以任何人都可以借助一些特殊的工具(如抓包工具)实现对这些信息的获取,这样就大大的降低了信息的安全性,甚至可能会带来巨大的经济损失。另外,虽然目前局域网的带宽已经达到10 M/s到100 M/s,甚至出现了千兆以太网,但是可用带宽作为一种资源,它的不足会严重影响到整个局域网的服务质量,使得人们的工作效率大幅度下降。

设计基于自身局域网特点的文件传输工具显得尤为重要。

1 通讯参数设置

计算机与计算机之间的网络通讯实际上是运行在这两个计算机上的进程之间的通讯,如图1所示。

图1 网络通讯示意图

网络中使用一个三元组来标识全局中的唯一进程:

(协议,本地地址,本地端口号)

这样一个三元组称作半相关(half-association),它指定的是连接的一端,如果需要确定一个完整的网络通讯,则需要确定两个进程,并且只能使用一种高层协议,这就需要下面的五元组,称为全相关(association):

(协议,本地地址,本地端口号,远程地址,远程端口号)

Heartbeat服务的目的就是收集和维护这些信息。

2 Socket的创建

在本文中,协议主要用到TCP和UDP两种协议,用于发送和接受控制数据的Socket使用UDP协议,而用于文件传输的Socket使用TCP协议。

根据SOCK_STREAM和SOCK_DGRAM两种类型的Socket的工作模式,可以知道,应用程序可以在整个生命周期中重复使用一个SOCK_DGRAM类型的Socket来向任意客户端发送数据包形式数据,而利用一个SOCK_STREAM类型的Socket在请求连接或接受连接时返回的Socket来进行所需的流式数据通讯。

另外,考虑到安全性和稳定性等因素,客户端可以设置三种端口用于整个生命周期中的网络通讯,分别为Heartbeat Service Port(每个HeartbeatService 设置需要一个端口,以适应不同Heartbeat Service Port的客户端群),TCP Port(唯一)和UDP Port(唯一)。其中,TCP Port和UDP Port随机创建,然后通过端口固定的Heartbeat服务来通知其他客户端自己的TCP Port和UDP Port信息。

2.1Heartbeat服务的实现

HeartbeatService主要是以计时器为驱动的服务,其中包含一个Heartbeat Info List,存储了所有Heartbeat服务节点。

在客户端启动后,Heartbeat服务便开始运行。初始化过程将遍历 Broadcast List,对每一个CHeartbeatNode做如下处理。

1) 读取其中的Heartbeat服务设置,通过CommManager为其创建CommNode数据,并将此数据指针填入其中;

2) 使创建的CommNode中的Socket开始监听;

3) 将此CHeartbeatNode注册到HeartbeatService中,开始广播Heartbeat数据。

至此开始,HeartbeatService将伴随着客户端的整个生命周期,定时广播HeartbeatData,并监听其他客户端广播的HeartbeatData,并根据前文中的处理方法处理对应的Buddy。

当BuddiesList更改了自身的数据后,会同时更新一个时间戳,UI部分在定时检查BuddiesList时会检查这个时间戳,以确定是否更新界面。

2.2数据加密

目前,网络安全传输方案中经典的加密方法分为对称加密和非对称加密两种。对称加密运算速度快但容易被攻击和破解;非对称加密算法复杂,不易被破解,但加密速度慢,不适宜传输大量的安全数据。由于考虑到文件传输的特点,本文使用的是对称加密算法。

由于本文所使用的加密算法属于对称加密算法,所以便需要一套较为健壮的密钥生成算法。密钥的生成需要以下信息:接收方IP地址:peer_ip;接收方端口:peer_port;发送方userhash:userhash;一个16位随机数:randomkey。这里用到了发送方和接收方双方的信息,保证了信息的分散;另一方面,在一定程度上也防止了虚假Package的干扰(如果无法利用拥有的userhash正确解密Package数据,则这个Package可能属于虚假Package)。

创建函数首先会创建一个长度为18的缓冲区key_data,缓冲区将被分为三部分:

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

图2缓冲区示意图

各部分按照如下规则填充数据:A0:userhash中从第3字节开始的13字节数据;A1:peer_port与randomkey异或的结果;A2:peer_ip的结尾3字节数据;填充完毕后生成其md5值,并根据此md5值利用RC4初始化算法KSA最终产生加密密钥。

解密过程与加密过程相反,是将加密时用于创建密钥的随机数和原始数据的md5值从加密数据中获取出来,然后根据随机数和相关信息创建密钥解密加密数据,再取得解密后数据的md5值,并与原始数据的md5值比较,判断解密过程是否成功,成功则返回解密数据。

3 Package的压缩

压缩过程和解压缩过程是在Package中完成的,Package中设计了三个函数用于压缩和解压,分别是:void CPacket::PackPacket(void);bool CPacket::UnPackPacket(UINT nUnPackSize);bool CPacket::UnPackPacket(void)。压缩过程指的是Package在发送之前将会被压缩,当压缩之后的长度小于原始数据长度时,发送压缩数据,否则依然发送原始数据。解压缩过程使用Package的两个成员函数,UnPackPacket(UINT nUnPackSize)解压当前Package,nUnPackSize限制了解压后数据的最大长度,如果超过这个长度,则认为解压失败。此函数同样为解压当前Package,解压方法大致相同,与上一个函数不同的是它忽略了解压后最大长度的限制。

在对压缩功能做测试时,使用了上述的函数对Regedit.exe进行了压缩和解压,结果如下:

图3 Regedit.exe压缩解压效果图

其中,regedit_compressed.exe为regedit.exe压缩后得到的文件,regedit_uncompressed.exe为将regedit_compressed.exe解压后得到的文件,压缩率约为17.22%,压缩结果较为理想。

4 流量的控制

流量的控制目的是为了限制网络传输时传输速率的上限,保证有限地使用网络带宽,防止带宽耗尽,影响其他需要占用网络带宽的应用程序或主机。

流量控制可以在硬件层、驱动层或者在应用程序层中完成。这里将流量控制处理放在应用程序层中,以时间片调度的方式来实现。在每个时间片中,完成一组TransferTask的处理。

前文中提到当应用层需要发送一个Package时,它并不直接将这个Package通过相应的受控Socket发送出去,而是将其放入BandThrottler中的任务队列,这种任务被称作TransferTask,通常为发送或接受一个Package。

一个TransferTask的处理流程如图4所示。

图4 TransferTask的处理流程

当一个TransferTask创建并放入任务队列之后,它将开始等待获得传输权,当获得了传输权后,它便被Task Processor从TaskQueue中提取出来进行处理。

TaskQueue中包含两个队列,如图5。

图5 TaskQueue队列图

Temp Queue用于暂时存放新添加的TransferTask,相当于应用层和Task Queue之间的一个缓冲区。Temp Queue 和Process Queue各有一个互斥锁,保证了各线程在同时访问这两个队列时的数据安全。当应用层各个线程希望添加自己的任务到TaskQueue时,由于Temp Queue的互斥锁,可以依次完成添加任务;当Process Queue由于Task Processor提取任务锁闭时,应用层仍可以将任务提交到Temp Queue,而不必等待Process Queue解锁;当Process Queue中无任何任务时,将执行一次从Temp Queue中提取所有任务到自身的过程。

为了控制整个传输过程,这里将时间划分为一个个长度相同的时间片,并为当前的时间片计算出可以用于传输的最大流量值,在每个时间片内,BandThrottler如果发现TaskQueue中有任务,将开始执行一个循环,不断提取TaskQueue中的每个任务并进行处理,每次处理将会从单位时间片的最大传输流量值中减去此次任务执行所需的流量,当流量耗尽时,将停止处理并在剩余的时间内进入休眠,以等待下一个时间片。

为了获得精确的系统时间,这里使用了timeGetTime()。经反复测试,每个时间片(即TIME_BETWEEN_UPLOAD_LOOPS)设置在200毫秒较为适宜。

通过上面的设计,流量控制基本实现了其功能。

至此,主要功能的实现大致完成。

5 结束语

本文提出一种结合了加密、压缩和流量控制的文件传输系统。使用加密来提高数据的安全性,使用压缩来减小传输流量,并通过一套算法来控制传输过程。针对文件传输的特点,本文使用的是对称加密方式,采用RC4算法;压缩使用了目前较为成熟的zlib压缩函数库。

[1]齐治昌,谭庆平,宁洪.软件工程[M].第2版.北京:高等教育出版社,2004.

[2]Steve McConnell.代码大全[M].金戈,汤凌,等译.北京:电子工业出版社,2006.

[3]谢希仁.计算机网络 [M].第2版.北京:电子工业出版社,1999.

[4]韩希义.计算机网络基础 [M].北京:高等教育出版社,2004.

[5]Dr. International.国际化软件开发[M].北京:机械工业出版社,2003.

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

[7]孟庆树,王丽娜,傅建明,等.密码编码学与网络安全原理与实践[M].北京:电子工业出版社,2006.

[8]马永勤,李正文,汪刘艳.基于Winsock的文件互传[J].重庆大学学报,2004,28: 49-52.

[9]侯俊杰.深入浅出MFC[M].武汉:华中科技大学出版社,2001.

[10]孙鑫.VC++深入详解[M].北京:电子工业出版社,2006.

[11]孔鹏.Visual C++技术手册[M].北京:机械工业出版社,2007.

[12]王晓鹏.TCP/IP下的Socket及Winsock通信机制[J].航空计算技术,2004,34: 126-128.

[13]Dana Moore,John Hebeler.对等网[M].北京:清华大学出版社,2003.

[14]Microsoft.Microsoft Visual C++分布式应用程序开发(英文版)[M].北京:北京大学出版社,2001.

[15]黄强.WINDOWS网络编程[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

忻州师范学院院级科研基金资助项目(201111)

闫培哲(1981- ),男,硕士,忻州师范学院计算机助教,主要研究方向为网络开发、教育管理。

1674- 4578(2016)04- 0092- 03

TP 393.093

A

猜你喜欢
忻州局域网解密
忻州职业技术学院
炫词解密
阳煤忻州通用机械有限责任公司
阳煤忻州通用机械有限责任公司
解密“一包三改”
轨道交通车-地通信无线局域网技术应用
炫词解密
基于VPN的机房局域网远程控制系统
基于802.1Q协议的虚拟局域网技术研究与实现
局域网性能的优化