ftp论文文档格式.docx
- 文档编号:21930518
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:27
- 大小:116.14KB
ftp论文文档格式.docx
《ftp论文文档格式.docx》由会员分享,可在线阅读,更多相关《ftp论文文档格式.docx(27页珍藏版)》请在冰豆网上搜索。
通常服务器端是远程端点,用户可以通过Internet网络连接到远程的FTP服务器站点。
服务器的功能是主要的。
只有当FTP服务器支持各种协议和指令时,才能够开发相应的客户端程序。
下面就是整个ftp项目的设置思路。
Abstract
FTP(FileTransferProtocol,FTP),thetwocomputerstotransferfilesintheTCP/IPnetworkprotocol,FTPisoneoftheearliestprotocolusedinTCP/IPnetworkandINTERNET,itbelongstotheapplicationlayerofthenetworkprotocolsuite.FTPclientcanissuecommandstotheservertodownloadfiles,uploadfiles,createorchangedirectoriesontheserver.Althoughthisisasmallftpprogram,butitbasicallyhasftp.ItisrunningonanylinuxSeriessystem,usethelinuxthegcccompilertool.Inordertotesttheftpserverandclienttoberealized.TheFTPprotocolisaTCP/IP-basedprotocolTCPisconnection-orientedreliabletoanagreement.
Whyisthereaftp?
Networkbandwidthandservicelimitations,asimpledownloadfromthepageisslowandunreliable,sotherearemanyFTPtools.Fundamentallyspeaking,theFTPisavarietyofnetworkbetweencomputersinaccordancewiththeTCP/IPprotocoltotransferfiles.FTPisapopularClient/Servermodel,consistingofanFTPclientandFTPserver-sideprograms.Usuallyserver-sideremoteendpoint,userscanconnectthroughtheInternetnetworktoaremoteFTPserversite.Theserver'
smainfunctionis.OnlywhentheFTPserversupportsvariousprotocolsandinstructionstobeabletodevelopappropriateclientprogram.Hereistheentiresetofftpprojectsideas.
目录
摘要2
Abstract2
目录3
第一章FTP协议与原理3
1.1FTP协议4
1.2FTP工作原理5
1.3FTP权限管理6
1.4FTP的传输有两种方式7
1.5FTP的工作方式7
1.6该程序服务器端实现的的命令8
第二章开发环境及工具介绍9
2.1C语言和socket机制9
2.2如何开发一个Server-Client模型的程序11
2.3常用的Socket类型12
2.4项目用到的socket函数和编译环境15
第三章FTP服务器与客户端需求分析16
第四章系统设计与实现19
4.1.软件总体分析与设计19
4.2.各模块具体设计19
第五章系统测试28
5.1系统可能出现的问题与不足28
5.2采用的测试类型29
5.3测试的过程与结果分析29
结论29
参考文献30
致谢31
第一章FTP协议与原理
1.1FTP协议
FTP(FileTransferProtocol),是文件传输协议的简称。
用于Internet上的控制文件的双向传输。
同时,它也是一个应用程序(Application)。
用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。
正如其名所示:
FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。
FTP是TCP/IP协议组中的协议之一,是英文FileTransferProtocol的缩写。
该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。
简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(download)”文件。
若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”文件。
在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。
从根本上说,FTP协议就是在网络中各种不同的计算机之间按照TCP/IP协议来传输文件。
FTP协议采用客户机/服务器(Client/Sever)模式,由FTP客户端程序和FTP服务器端程序组成。
使用时,先启动FTP客户端程序与远程主机建立连接,然后向远程主机发出传输命令,远程主机在收到命令后就给予响应,并执行正确的命令。
但是FTP有一个根本的限制,那就是,如果用户在某个主机上没有注册获得授权,即没有用户名和口令,就不能与该主机进行文件传输。
但匿名FTP服务器除外,它能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。
用户使用特殊的用户名“Anonymous”或“guest”就可有限制地访问远程主机上公开的文件。
现在许多系统要求用户将Emai1地址作为口令,以便更好地对访问者进行跟踪。
出于安全的目的,大部分匿名FTP主机一般只允许远程用户下载(download)文件,而不允许上载(upload)文件。
也就是说,用户只能从匿名FTP主机拷贝其需要的文件而不能把文件拷贝到匿名FTP主机。
另外,匿名FTP主机还采用了其他一些保护措施以保护自己的文件不至于被用户修改和删除,并防止计算机病毒的侵入。
匿名FTP一直是Internet上获取信息资源的最主要方式,在Internet成千上万的匿名FTP主机中存储着无以计数的文件,这些文件包含了各种各样的信息、数据和软件。
人们只要知道特定信息资源的主机地址,就可以用匿名FTP登录。
1.2FTP工作原理
拿下载文件为例,当你启动FTP从远程计算机拷贝文件时,你事实上启动了两个程序:
一个本地机上的FTP客户程序:
它向FTP服务器提出拷贝文件的请求。
另一个是启动在远程计算机的上的FTP服务器程序,它响应你的请求把你指定的文件传送到你的计算机中。
FTP采用“客户机/服务器”方式,用户端要在自己的本地计算机上安装FTP客户程序。
与大多数Internet服务一样,FTP也是一个客户机/服务器系统。
用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。
用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。
比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。
客户机程序代表用户接收到这个文件,将其存放在用户目录中。
使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可上载或下载文件。
也就是说,要想同哪一台计算机传送文件,就必须具有哪一台计算机的适当授权。
换言之,除非有用户ID和口令,否则便无法传送文件。
这种情况违背了Internet的开放性,Internet上的FTP主机何止千万,不可能要求每个用户在每一台主机上都拥有帐号。
匿名FTP就是为解决这个问题而产生的。
匿名FTP是这样一种机制,用户可通过它连接到远程主机上,并从其下载文件,而无需成为其注册用户。
系统管理员建立了一个特殊的用户ID,名为anonymous,Internet上的任何人在任何地方都可使用该用户ID。
值得注意的是,匿名FTP不适用于所有Internet主机,它只适用于那些提供了这项服务的主机。
FTP支持两种模式,一种方式叫做Standard(也就是PORT方式,主动方式),一种是Passive(也就是PASV,被动方式)。
Standard模式FTP的客户端发送PORT命令到FTP服务器。
Passive模式FTP的客户端发送PASV命令到FTPServer。
主动方式的FTP工作过程:
Port模式FTP客户端首先和FTP服务器的TCP21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。
PORT命令包含了客户端用什么端口接收数据。
在传送数据的时候,服务器端通过自己的TCP20端口连接至客户端的指定端口发送数据。
FTPserver必须和客户端建立一个新的连接用来传送数据。
针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:
1).任何端口到FTP服务器的21端口(客户端初始化的连接SC)。
2).FTP服务器的21端口到大于1023的端口(服务器响应客户端的控制端口SC)。
3).FTP服务器的20端口到大于1023的端口(服务器端初始化数据连接到客户端的数据端口SC)。
4).大于1023端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口SC)。
1.3FTP权限管理
在考虑FTP服务器安全性工作的时候,第一步要考虑的就是谁可以访问FTP服务器。
在Vsftpd服务器软件中,默认提供了三类用户。
不同的用户对应着不同的权限与操作方式。
一类是Real帐户。
这类用户是指在FTP服务上拥有帐号。
当这类用户登录FTP服务器的时候,其默认的主目录就是其帐号命名的目录。
但是,其还可以变更到其他目录中去。
如系统的主目录等等。
第二类帐户实Guest用户。
在FTP服务器中,我们往往会给不同的部门或者某个特定的用户设置一个帐户。
但是,这个账户有个特点,就是其只能够访问自己的主目录。
服务器通过这种方式来保障FTP服务上其他文件的安全性。
这类帐户,在Vsftpd软件中就叫做Guest用户。
拥有这类用户的帐户,只能够访问其主目录下的目录,而不得访问主目录以外的文件。
第三类帐户是Anonymous(匿名)用户,这也是我们通常所说的匿名访问。
这类用户是指在FTP服务器中没有指定帐户,但是其仍然可以进行匿名访问某些公开的资源。
在组建FTP服务器的时候,我们就需要根据用户的类型,对用户进行归类。
默认情况下,Vsftpd服务器会把建立的所有帐户都归属为Real用户。
但是,这往往不符合企业安全的需要。
因为这类用户不仅可以访问自己的主目录,而且,还可以访问其他用户的目录。
这就给其他用户所在的空间带来一定的安全隐患。
所以,企业要根据实际情况,修改用户所在的类别。
TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。
FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。
假设两台计算机通过ftp协议对话,并且能访问Internet,你可以用ftp命令来传输文件。
每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。
1.4FTP的传输有两种方式
ASCII传输模式和二进制数据传输模式。
1).ASCII传输方式:
假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。
2).二进制传输模式:
在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。
即使目的地机器上包含位序列的文件是没意义的。
例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。
如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。
这会使传输稍微变慢,也会损坏数据,使文件变得不能用。
(在大多数计算机上,ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。
如果你传输二进制文件,所有的位都是重要的。
)如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。
1.5FTP的工作方式
FTP支持两种模式,一种方式叫做Standard(也就是PORT方式,主动方式),一种是Passive(也就是PASV,被动方式)。
Standard模式FTP的客户端发送PORT命令到FTP服务器。
Passive模式FTP的客户端发送PASV命令到FTPServer。
Port模式FTP客户端首先和FTP服务器的TCP21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。
PORT命令包含了客户端用什么端口接收数据。
在传送数据的时候,服务器端通过自己的TCP20端口连接至客户端的指定端口发送数据。
FTPserver必须和客户端建立一个新的连接用来传送数据。
Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。
FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTPserver不再需要建立一个新的和客户端之间的连接。
很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;
而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP20无法和内部网络的客户端建立一个新的连接,造成无法工作。
1.6该程序服务器端实现的的命令
1).USER:
指用户名,它带一个参数。
格式为:
USERusername在登录ftp服务器的时候先用此命令告诉服务器那个用户要登录此服务器。
如:
USERroot此命令是以root用户登录服务器。
2).PASS:
指明与用户名对应的密码,带一个参数。
PASSpassword当服务器收到来自客户端的USER命令后,检查其合法后就像客户端发提示信息要求输入密码,客户端这是就可以向服务器发送PASS命令加上root用户的密码。
服务器检查密码的正确后,客户端就与服务器连接起来了。
3).LIST:
[pathname]
参数表示要列文件的目录路径名,若不带参数,刚使用当前目录。
此命令会把pathname路径下的文件或目录按照一定的格式发送给客户端让客户端显示出来。
4).QUIT:
由于要求传输文件时有登陆的过程,断开连接到应有相应的注销过程。
这个命令就是从服务器上注销的过程,如果服务器收到该命令时,没有文件正在传达室输,刚断开控制,连接如果有文件正在传输,刚控制连接仍然保持,直到收到有关传输结果的应答时,服务器才断开连接。
5).LOAD:
取得文件这条命令是FTP事务是用得最多的命令,在请求下载文件时都有会用到。
6).UPDATE:
存放文件。
7).WYWT:
请求服务器返回系统类型。
8).TYPE:
表示文件类型,共有四种,所带参数也有四种,A,E,I,L分别对应ASCII,EBCDIC,IMAGB和LOCAL类型。
TYPEtype
9).CMD:
请求更改服务器的当前目录这各命令带一个参数,参数表示要更改的目录名。
10).DELE:
请求删除服务器上的文件。
11).MKO:
请求在服务器上新建一个目录,这条命令带一个参数指明要建立的目录名。
12).PORT:
指明数据连接的端口号,带六个参数。
PORTh1,h2,h3,h4,p1,p2
13).CAT:
命令显示某一个文件的内容。
使用格式:
CATfilename打印filename文件向终端。
14).TOUCH:
请求在服务器上新建一个文件,这条命令带一个参数指明要建立的文件名。
使用格式:
TOUCHfilename
15).PWD:
在服务器上显示当前工作目录。
16).MV:
请求在服务器上为某一个指定的文件或文件夹重命名。
17).CP:
请求在服务器上拷贝一个目录或文件。
CPspathnamedpathname
第二章开发环境及工具介绍
2.1C语言和socket机制
C语言是在70年代初创建的一种计算机语言,它既有汇编语言可以直接访问机器硬件的功能,又具有高级语言面向用户、可读性好和易于记忆的优点,因此受到广大程序员的欢迎。
C是一种结构化的程序设计语言。
它由顺序、选择和循环三种基本结构组成,便于实现由上到下、逐步细化的结构化程序设计。
因此,用C编写的程序具有容易理解和便于维护的优点。
C语言的函数结构有利于程序分割为相对独立的功能模块,为大型软件实现模块化的程序设计创造了条件。
该程序是在linux系列下的C语言开发,主要利用linuxC下的APISocket编程。
Socket通讯机制是一种较原始的通讯机制,通过Socket的数据表现出来的形式是原始字节流信息,通讯双方只要在此基础上按照双方约定方式进行数据的格式化和解析处理工作,这样才能完成具体的应用,即实现某种协议的过程。
Socket可以看成是在两个程序间进行通讯连接的两个端点,一个程序将一段信息写入一个Socket中,该Socket将这段信息发送给另外一个Socket,以便使这段信息能传达到其他程序中。
Socket有两种主要的工作方式:
有连接的和无连接的。
有连接方式如流通讯;
无连接方式如数据包方式。
有连接的Socket操作就像一部电话。
它们必须建立一个连接和一个呼叫。
所有的事情在到达时的顺序与它们出发时的顺序一样。
socket的英文原义是“孔”或“插座”。
作为4BDSUNIX的进程通信机制,取后一种意思。
通常也称作"
套接字"
,用于描述IP地址和端口,是一个通信链的句柄。
在Internet上的主机一般运行了多个服务软件,同时提供几种服务。
每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。
Socket正如其英文原意那样,象一个多孔插座。
一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电,有的提供110伏交流电,有的则提供有线电视节目。
客户软件将插头插到不同编号的插座,就可以得到不同的服务。
socket非常类似于电话插座。
以一个国家级电话网为例。
电话的通话双方相当于相互通信的2个进程,区号是它的网络地址;
区内一个单位的交换机相当于一台主机,主机分配给每个用户的局内号码相当于socket号。
任何用户在通话之前,首先要占有一部电话机,相当于申请一个socket;
同时要知道对方的号码,相当于对方有一个固定的socket。
然后向对方拨号呼叫,相当于发出连接请求(假如对方不在同一区内,还要拨对方区号,相当于给出网络地址)。
对方假如在场并空闲(相当于通信的另一主机开机且可以接受连接请求),拿起电话话筒,双方就可以正式通话,相当于连接成功。
双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向socket发送数据和从socket接收数据。
通话结束后,一方挂起电话机相当于关闭socket,撤消连接。
所谓socket通常也称作"
,应用程序通常通过"
向网络发出请求或者应答网络请求。
以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。
ServerSocket用于服务器端,Socket是建立网络连接时使用的。
在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。
对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。
不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。
重要的SocketAPI:
java.net.Socket继承于java.lang.Object,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法,其它方法大家可以见JDK-1.3文档。
Accept方法用于产生"
阻塞"
,直到接受到一个连接,并且返回一个客户端的Socket对象实例。
"
是一个术语,它使程序运行暂时"
停留"
在这个地方,直到一个会话产生,然后程序继续;
通常"
是由循环产生的。
getInputStream方法获得网络连接输入,同时返回一个InputStream对象实例。
getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。
注意:
其中getInputStream和getOutputStream方法均可能会产生一个IOException,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。
根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:
服务器监听,客户端请求,连接确认。
服务器监听:
是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ftp 论文