admin 管理员组

文章数量: 1184232


2024年4月18日发(作者:php 主流开发工具)

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 进程的责任。

帐户(ACCT)

这个命令的参数域是一个用来识别用户帐户的Telnet 字符串。这个命令不需要和USER

命令相关,某些站点可能需要一个帐户用来登录,另一些站点仅用于特殊访问权限,比如存

储文件。后一种情况下这个命令可能在任何时候收到。有一些响应代码用来自动地区分这些

情况:当登录过程必须要求帐户信息的时候,PASS命令成功的响应代码是332。相应,如果

登录过程不要求帐户信息时,PASS 命令成功的响应代码是230;如果帐户信息需要在随后的

对话命令中给出,服务器应该根据是保留(等侍收到ACCT 命令)还是放弃命令来相应的返

回332 或532。

改变工作目录(CWD)

这个命令允许用户在不改变登录用户和帐户信息的情况下改变工作目录或数据集。传输

参数保持不变。这个命令的参数是一个路径名,用来指定相应的目录或者其他系统上的文件

组名。

返回上层目录(CDUP)

这个命令是CWD 命令的特例,因为在不同的操作系统下表达父目录可能有不同的语法,

所以可以用这个命令简化目录树的传输实现。它的响应代码应该和CWD 的响应代码相同。更

多信息参看附录II。

结构装备(SMNT)


本文标签: 数据 命令 传输 用户 帐户