FTP 工作原理
一:FTP的目标
1) 扩大文件共享;
2) 鼓励对远程计算机的间接使用;
3) 使用户免受不同主机之间不同文件存储系统的困扰;
4) 可靠,高效的数据传输;
二:主要术语
1) 控制连接(control connection) :用户和服务器之间的通信路径之一,用于交换命令和响应信息。采用TELNET协议规则。
2) 数据连接(data connection):采用全双工工作模式,以特定的模式和类型传输数据。传输的内容可以是一个文件的一部分,一个完整的文件,或多个文件。传输路径可位于用户_DTP和服务器_DTP之间,或是两个服务器之间。
3) 数据传输进程(data transfer process ):建立,管理数据连接,可以是主动的,也可以是被动的。
4) 响应(reply):由服务器经由控制连接发给用户的响应其FTP命令的确认信息。
响应通常的形式是包括错误代码,文本字符串在内的编码。代码由程序处理,本文信息提供给用户使用。
5) 服务器数据传输进程(server_ DTP): server_DTP通常处于“主动”状态,它在用于侦听的数据端口建立连接。他负责建立用于传输和存储的参数集,并依靠它的协议解释器接收的命令传输数据。
6) 服务器_FTP进程(server_FTP process):是一个或多个进程,它们执行与用户FTP进程或另一个服务器进程通信的文件传输功能。这些功能包括协议解释和数据传输处理。
7) 服务器-协议解释器(server—protocol interpreter:server_PI):它在端口’L’上侦听来自客户的连接信息并建立控制通信连接。他接收来自用户的标准的FTP命令,发送响应信息,并管理服务器_DTP;
8) 用户_DTP(user_DTP):用户_DTP在数据端口上侦听来自服务器_FTP进程的连接信息。
9) 用户_FTP 进程(user_FTP process):是包括PI, DTP和一个用户接口在内的功能集合,它们共同执行与一个或多个FTP服务器进程进行文件传输的功能。
三:工作模式
1:
用户协议解释器(user_PI) 启动控制连接,控制连接遵守TELNET协议规则,用户初始化好之后,由user_PI生成标准FTP命令,并经控制连接将它传送给服务器,由server_PI向user_PI经控制连接发出对用户命令的响应信息。
FTP命令指定建立数据连接所需的参数,和对文件系统要作的操作。
user__DTP在指定的数据端口进行侦听,服务器启动数据连接和执行指定参数的数据传输。
其工作原理图如图所示:
Data connection
FTP commands
FTP replies
Server_PI
Server_DTP
文件系统
user interface
User
PI
User
DTP
File
System
User
Server FTP
User FTP
2:
另一种情况是用户想在两个主机之间传输数据,这两个主机都不是本地的。用户与两个主机建立控制连接,并安排它们之间的数据连接。在这种模式下,控制信息由user_PI发出,但数据在两个server_DTP之间传递。工作原理图如下:
Server_FTP
“A”
Server_FTP
“B”
User_FTP
User_PI
Control
Control
Data connection
四 命令分类
1) 存取控制命令 (access control commands):设置登录帐户和密码,使用权限。
例:USER--- user name ; PASS—password ; ACCT ---account;
CWD---change working directory; CDUP---change to parent directory
SMNT—structure mount(设置新的传输结构); REIN---reinitialize(更换登录帐号); QUIT---logout
2) 设置传输参数命令( transfer parameter commands):所有的数据传输参数都有默认值,在想改变默认值时,用这些命令设定自己的值;
例:PORT—data port(改变默认数据端口) ;
PASV—passive (将server_DTP设置为’被动’状态,使其在数据端口进行侦听数据连接,而不是启动一个数据连接);
TYPE---represention type (设置文件的表示类型);
STRU---file structure(设置文件结构);
MODE---transfer mode (设置传输模式);
3) FTP 服务命令(FTP service commands):定义文件传输和文件系统功能,通常需要的
参数是路径名(pathname)
例:RETR—retrieve:该命令使服务器_DTP传输路径名指定的文件副本到数据连接另一端的服务器或用户DTP;
STOR---store:该命令使服务器DTP接收经数据联接传输过来的数据,并将其作为文件存在服务器上。
APPE---append ; ALLO—allocate ; REST---restart(重传);RNFR—rename from;
RNTO---rename to ; ABOR---abort ; DELE---delete; REM—remove directory;
MKD---make directory;PWD---print working directory; LIST—list ;
NLST—name list; SITE---site parameters ; SYST---system; STAT---status;
HELP---help;
六:传输参数介绍
1:数据类型(data types):用于TYPE命令,即presention type;
1) ASCII 类型;
这是默认的值,所有FTP执行程序必须可接收该值,它一般用于传输文本文件。发送端将数据从内部字符表示类型转换为标准的8位NVT-ASCII类型,然后接收端再将它转换为本机内部格式。
2) EBCDIC 类型:
这种类型适用于在两个都采用EBCDIC作为其内部格式的主机之间的高效传输。在传输过程中,数据使用8位的EBCDIC字符表示。
3) IMAGE 类型:
采用这种类型时,数据打包成8位传输字节作为连续位进行传送。接收方必须将这些数据作为连续的位进行存储。该类型适用于高效存储,文件恢复和二进制数据传输,推荐这种类型应被所有FTP执行程序接受。
4) LOCAL类型:
采用这种类型时,数据以指定的逻辑字节大小传输时,必须在第二个参数上指定字节大小。表示字节大小的值必须是十进制整数。逻辑字节大小不一定和传输字节大小相同。当它们不同时,数据将以逻辑字节进行连续打包,而不管传输字节的边界,并在结尾进行必要的填充。
2:数据结构(data structure):用于STRU命令。
作为表示类型的补充,FTP必须指定文件结构。在FTP中定义有三种文件结构:
1) file-structure :文件被看作连续的数据字节序列,没有内部结构。
2) record-structure:文件由连续的记录组成。
3) page-structure:文件由独立的索引页组成。
3:传输模式(transmission modes):用于MODE命令。
有三种传输模式:流模式,块模式和压缩模式。所有数据传输必须以EOF结尾,它可以明示或暗示关闭数据联接。
1):流模式(stream mode):
数据以字节流的形式传送时,对使用的表示类型没有限制,允许文件使用记录结构。如果使用了文件结构,则传输结尾的EOF标示将表示关闭数据联接。
2):块模式(block mode):
在该模式下,文件以一系列数据块形式传送,每个数据块都有头字节,头字节可以是一个或多个字节。头字节包括一个值域和描述编码。值域指明该数据块有多少个字节,从而也就表明了下一个数据块的起始位。描述编码定义的内容有:128—数据块的结尾是EOR(end of record);64--数据块的结尾是EOF(end of file);32—数据块中可能有错误的数据;16—数据块是重传标示符。
4) 压缩模式( compressed mode):
该模式有三种传送形式:
如果表示形式是ASCII或EBCDIC码,则填充字节是<SP>即空格。如果是图象类型(image type)或本地类型(local type) 则填充字节是0(零)。