当前位置:文档之家› TCP论文文件传输论文

TCP论文文件传输论文

TCP论文文件传输论文
摘要:本文介绍了在linux下基于tcp协议的文件的传输系统的流程与设计。

在传输的过程中,服务器(server)上使用了线程池技术实现了多线程的设计,并使用openssl 对所传输文件数据进行加解密,以保证文件传输过程中安全性的需求。

关键词:tcp;文件传输;线程池;openssl
tcp-based secure file transmission system design and research
liu xianqiang,lin hui,huang chengmao
(school of optoelectronic information,university of electronic
science&technology,chengdu610054,china)
abstract:this article describes the file transmission system processes and design,base on tcp protocol in linux.in the transmission process,the server uses the thread pool technology to achieve the multi-threaded design,and using openssl library to ensure security of the data encryption during file tarnsmission.
keywords:tcp;file transmission;thread
pool;openssl
文件传输系统是目前一项非常广泛的应用。

在网络如此发达的今天,基本上随处都会用到文件的传输功能。

本系统是基于linux平台tcp协议的安全文件传输系统。

通过tcp 协议对文件数据进行加密的传输。

在传输过程中,使用了openssl库实现了对文件数据的2048位的非对称加密,以保证传输过程中文件数据的安全。

而系统的大框架使用了线程池实现多线程的技术,以实现多个客户端同时进行文件传输的功能。

这种设计非常适合多用户段任务的系统设计。

一、tcp传输协议
tcp(transmission control protocol,tcp)是重要的传输层协议,它是是一种面向连接的,可靠的,基于字节流的传输层通信协议。

在简化的计算机网络osi模型中,他完成传输层所指定的功能。

它能提供端口编号的译码,以识别主机的应用程序,而且完成数据的可靠传输。

tcp协议具有严格的内装差错检验算法确保数据的完整性。

tcp是面向字节的顺序协议,这意味着包内的每个字节被分配一个顺序编号,并分配给每包一个顺序编号。

二、利用线程池实现多线程技术
程序中,我们用到了多线程的设计。

如果单一的进行多线程设计,那么当有任务来时,要创建一个线程,当任务结
束的时候,要销毁线程,这样会耗费大量的系统资源。

我们考虑到文件传输是短任务,多用户的情况,该系统可以使用线程池来进行多线程的设计,这样会节约很多的系统资源。

系统首先创建一个线程池,让线程池中所有的线程都处于等待的状态。

在系统有任务请求时,处理过程中将任务添加到队列,然后在调用一个在线程池中处于空闲等待的线程对任务进行处理。

在任务处理完后,该线程又回到等待状态,等待下一次任务的到来,这样就不用重复的创建和销毁线程,节约了很大的系统资源和时间资源。

如果线程池中所有的线程都处于忙的状态,那么在有任务进来,我就将其添加到等待队列中去,以等待有空闲线程时,在对该任务进行处理。

线程池中所有的线程都是资源共享的,我们在设计时在对公共资源进行访问时,必须进行保护。

这里我们通过互斥锁和条件变量的机制来保护系统中被访问的公共资源,这样能够防止多个线程同时访问一个资源是出现的冲突的情况。

三、在文件的传输过程中对文件数据加密与解密
ssl就是为了加密数据而产生的协议,它是位于应用层和tcp/ip之间的一层,数据经过它流出的时候被加密,再往tcp/ip送,而数据从tcp/ip流入之后先进入它这一层被解密,同时它也能够验证网络连接两端的身份。

它的主要功
能就是两个:1.解密在网络中传输的数据包,同时保护这些数据不被修改,和伪造。

2.认证网络对话中双方的身份。

在对文件数据进行加密传输的时候,我们需要生成数字证书(cacert.pem)和密钥(privkey.pem),这是我们在加解密过程中要用到得。

这里我们采用2048位的非对称加密。

openssl库中提供的生成2048位非对称加密的密钥和证书的命令非别为:
openssl genrsa -out privkey.pem 2048
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095
四、整个系统的设计框架流程简述
五、结语
本文中提出的用线程池来实现多线程的算法非常适合文件传输这类多用户短任务设计。

用openssl对传输过程中的数据加密是非常安全的,目前是使用最多的对数据加密的工具。

该系统的设计还有很大的提升空间,我们可以对传输的文件进行完整性验证,这可以利用目前使用广泛的hash md5算法来实现,还有断点续传功能也可以在很大程度上完善该系统的设计,这样可以使文件传输系统得到进一步的扩展。

参考文献:
[1]尤晋元,张亚英,戚正伟.unix环境高级编程(第2版)[m].北京:人民邮电出版社,2006
[2]谢希仁.计算机网络[m].大连:大连理工大学出版社,2004:79-80
[3]al kelley ira pohl.c语言解析教程(原书第4版)[m].addision-wesley,2002
[作者简介]刘显强(1986-),四川泸州人,在读硕士研究生,专业:电路与系统,研究方向:嵌入式系统;林辉(1982-),海南海口人,在读硕士研究生,专业:电路与系统,研究方向:数字电路设计与应用;黄成茂(1986-),湖南常德人,在读硕士研究生,专业:电路与系统,研究方向:嵌入式系统。

相关主题