FTP协议概念:
FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写。
该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,
提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就
是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载
(download)”文件。若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”
文件。在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。
FTP 的目标是:1)促进程序/数据文件的共享;2)鼓励(通过程序)使用远程计算机3)使用户不必面对不同主机上不同文件系统的差异;4)对数据进行高效可靠的传输。FTP尽管可以
直接在终端上应用,但它主要被设计通过程序来使用。
数据由发送端主机存储设备传输到接收端主机的存储设备上。由于两个系统的数据存储形式不同,经常需要将数据转换形式。例如,NVT-ASCII 在不同的系统中有不同的存储表示。DEC TOP-20 一般用5 个7 位的ASCII 字符存储NVT-ASCII,左对齐成36 位的字。IBMMainframe 用8 位EBCDIC 编码存储NVT-ASCII。Multics 将NVT-ASCII 存储成4 个9 位字符组成的字。当在不同的系统中传输字符时理应将其转换成标准的NVT-ASCII 表示。发送和接收端则应相应地在标准表示法和内部表示法间转换。当传输二进制数据时表示法的另一个问题就是不同主机有不同的字长度。并不总是明确发送端怎样发送数据以及接收端怎样接收数据。例如,当从一个32 位字长的系统传输32 位字节到一个36 位字长的系统时,应该(为了高效和实用)在后一个系统中将32 位字节在36 位字中右对齐。无论哪种情况,用户都应该可以选择数据表示形式和传输功能。应该注意FTP 提供了非常有限的数据表示形式。传输这些表示形式之外的数据时用户应该自行转换。
协议RFC中文文档:
一、传输模式
1.1流模式
数据以字节流传输。对表示类型没有限制;可以使用记录结构。
在记录结构文件中,EOR 和EOF 将分别用两个字节的控制码表示。第一个字节都是同样的escape 字符。第二个字节中,EOR 将低位置一,其他位置零;EOF 则是将第二低位置一;也就是这个字节对于EOR 来说是1,对于EOF 来说是2。EOR 和EOF 可能在传输结束时通过使最低两置一来同时指定(就是值3)。如果想发送escape 字符,要在第二个字节再重复一次。如果结构是文件结构,则使用关闭主机连接来指示EOF,传输的所有数据字节就是原始字节。
1.2块模式
文件以连续的带有数据头的数据块来传输。数据头包括一个计数域和描述码。计数域指示了数据块整个长度,由此可以算出下一数据块的开始位置(没有填充位)。描述码定义了:文件最后一块(EOF),记录最后块(EOR),重开始标记(参见错误恢复和重开始章)或者怀疑数据(也就是被怀疑在传输中可能不可靠的数据)。最后的描述符不是FTP 错误控制的
一部分。它用来在站点间交换指定类型的数据(比如地震或天气数据)而且简略本地错误(比如磁带读错误)。记录结构可以在这种模式下使用,而且可以用任何表示类型。头包括3 个字节。在这24 位的头信息中,低16 位表示字节记数,高8 位表示描述符。
二、文件传送功能
下面的命令表示访问控制标识符(括号中表示命令代码)
用户名(USER)
这个命令的参数域是一个用来标识用户的Telnet 字符串。用户识别对于服务器控制文件系统存取权限是必需的。这个命令通常是控制连接建立后从用户端发送的第一条命令(一些服务器可能需要保证这一点)。一些服务器可能还需要附加的识别信息如密码或帐号命令。为了改变控制权限和/或帐户信息,服务器可能在任何时候都允许接受一个新的USER 命令,来更换存取权限或帐户信息。产生的效果是刷新早先登录的用户名、密码和帐户信息,并重新开始一个登录过程。所有的传输参数不发生变化,并且所有正在传输中的文件传输过程均在原来的访问控制权限下完成。
密码(PASS)
这个命令的参数域是一个用来指定用户密码的Telnet 字符串。这个命令必须紧跟在用户名命令之后,在某些站点上,它用来完成用户访问权限识别。因为密码信息非常敏感,一般应该使用掩码代替或者禁止回显。显然服务器没有安全的办法做到这一点,所以隐藏敏感的密码信息就成了用户FTP 进程的责任。
帐户(ACCTtcp ip协议中文名)
这个命令的参数域是一个用来识别用户帐户的Telnet 字符串。这个命令不需要和USER命令相关,某些站点可能需要一个帐户用来登录,另一些站点仅用于特殊访问权限,比如存储文件。后一种情况下这个命令可能在任何时候收到。有一些响应代码用来自动地区分这些情况:当登录过程必须要求帐户信息的时候,PASS命令成功的响应代码是332。相应,如果登录过程不要求帐户信息时,PASS 命令成功的响应代码是230;如果帐户信息需要在随后的对话命令中给出,服务器应该根据是保留(等侍收到ACCT 命令)还是放弃命令来相应的返回332 或532。
改变工作目录(CWD)
这个命令允许用户在不改变登录用户和帐户信息的情况下改变工作目录或数据集。传输参数保持不变。这个命令的参数是一个路径名,用来指定相应的目录或者其他系统上的文件组名。
返回上层目录(CDUP)
这个命令是CWD 命令的特例,因为在不同的操作系统下表达父目录可能有不同的语法,所以可以用这个命令简化目录树的传输实现。它的响应代码应该和CWD 的响应代码相同。更多信息参看附录II。
结构装备(SMNT)
这个命令允许用户在不改变用户和帐户信息的情况下装备一个不同的文件系统数据结构。传置传输参数不会改变。它的参数是一个用来标识目录或者其他系统中依赖文件组的路径名。
重新初始化(REIN)
此命令除允许当前正在传输过程完成外,终止一个用户,刷新所有的I/O 和帐户信息。所有
参数重设为默认值,并保持控制连接。此时等同于控制连接刚刚建立的状态。这条命令之后可能需要USER 命令。
注销(QUIT)
此命令终止一个用户,并且当没有文件正在传输的话,服务器将关闭控制连接。如果当前有文件正在传输,连接会保持并等待回应,之后服务器将关闭连接。如果用户进程想以不同的用户名传输文件,而不想关闭然后再重建立连接的情况下,应该使用REIN 命令而不是
QUIT。
控制连接的意外关闭将会导致服务器产生等同于放弃(ABOR)和注销(QUIT)动作。
三、FTP 服务命令
FTP 服务命令定义了用户请求传送文件或者文件系统的功能。FTP 服务命令的参数一般是一个路径。路径的语法必须符合服务器站点的惯例(尽量用默认标准)和控制连接的语言习惯。建议的默认参数是使用最后一个设备,目录或文件名,或者本地用户的默认标准。除"re
name from"命令后面必须紧跟"rename to"命令以及restart 命令必须紧跟随中断服务命令。
追加(包括创建) (APPE)
这个命令引起服务DTP 接受从数据连接传送过来的数据并存储在服务器端的一个文件
里。如果指定的文件在服务器端已经存在,则这个数据会附加到文件的后面;否则服务器端
会创建这个文件。
分配(ALLO)
一些服务器可能要求用这个命令来保留足够的空间来容纳新文件。其参数是一个十进制整数,用来指定保留给文件存储用的字节数(用逻辑字节长度)。对于用记录或者而结构传送的文件而言,还需要有最大结构或页的大小(使用逻辑字节),这个值在这个命令的第二个参数域用十进制整数指定。第二个参数是可选的,但当它存在的时候应该用三个Telne字符<SP>R<SP>和第一个参数分开。这个命令之后应该是STOR 或者APPE 命令。在那些不需要预先知道文件最大值的服务器上,这个命令应该被作为NOOP(无操作)对待,在那些只对记录或页最大值感兴趣的服务器上应该忽略第一个参数。
重新开始(REST)
这个命令的参数域指定了需要重新开始传输的文件的位置标记。这个命令不会引起文件的传输,只是忽略文件中指定标记点前的数据。
重命名开始(RNFR)
这个命令指定了需要重新命名的文件的原始路径名。后面必须马上接着“重命名为”命令,来指定新的文件路径
重命名为(RNTO)
这个命令为在“重命名开始”命令中指定的文件指定新的路径。这两个命令一起为文件
重新命名。
放弃(ABOR)
该命令告诉服务器放弃先前的FTP 服务命令和相关的传输的数据。放弃命令也许需要引起服
务器的“特别注意”(参见FTP 命令部分),使服务器强制识别。当前一个命令(包括数据传输)完成时,将不会产生动作。服务器不会关闭控制连接,但是数据连接必须关闭。服务器接收这个命令时可能处在两种状态:(1)FTP 服务命令已经完成,或者(2)FTP 服务命令还在执行中。
第一种情况,服务器关闭数据连接(如果数据连接是打开的)回应226 代码,表示放弃命令已经成功处理。
第二种情况,服务器放弃正在进行的FTP 服务,关闭数据连接,返回426 响应代码,表示请求服务请求异常终止。然后服务器发送226 响应代码,表示放弃命令成功处理。
删除(DELE)
这个命令在服务器端删除指定的文件。如果需要额外的保护,应该由用户FTP 进程提供。删除目录(RMD)
这个命令移除指定路径下的目录(如果是绝对路径),或者是当前工作目录的子目录(如
果是相对路径)。参看附录II
新建目录(MKD)
该命令在指定的路径下新建一个目录(如果是绝对路径),或者在当前工作目录下建子目录(如果路径是相对的)。
打印工作目录(PWD)
该命令返回一个当前的工作目录名。
列表(LIST)
该命令从服务器端发送一个列表到被动的DTP。如果路径名指定了目录或者别的文件组,服务器应该传送指定目录下的文件列表。如果路径名指定了文件,服务器应当传送这个文件的信息。没有参数,意味着用户的当前工作目录或者缺省目录。数据通过数据连接以ASCII 或EBCDIC 类型传输。(用户必须确定类型是ASCII 或者EBCDIC)。因为不同系统间的文件信息差别很大,这个信息可能不易被程序自动使用,但可能对于用户来说是有用处
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论