




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、FTP-文件传输协议(FileTransfrotocol,FTP)1. 介绍FTP 的目标是提高文件的共享性,提供非直接使用计算机,使介质对用户透明和可靠高效地传送数据。虽然也可以手工使用它,但是它的主要作用是供程序使用的。在阅读本文之前最好能够阅读 TCP协议标准规范和2. 概览在本节中net 协议标准规范。一些表面上的问题,有些名词的定义请参阅 TCP 和net 参考文献。先介绍一下(1) 字节大小,在FTP 中字节大小有两个:逻辑字节大小和用于传输的字节大小。后者通常是 8 位,而前者可不一定是多少了。传输字节不必等于逻辑字节大小,也不 必对数据结构进行解释。(2)控制连接是建立在 US
2、IT 和 SERVI 之间用于交换命令与应答的通信链路。(3)数据连接是传输数据的全双 工连接。传输数据可以发生在服务器 DTP 和用户 DTP 之间也可以发生在两个服务器 DTP 之间。(4)DTP:数据传输过程(DTP)建立和管理数据连接,DTP 可以是主动的也可以是的。(5)EOR 代表尾。(6)NTV代表网络虚拟终端,它的定义与在net 协议中的定义一致。(7)NVFS 代表网络虚拟文件系统。 (8)FTP可以传输非连续的文件,这些文件的一部分称为页。(9)PI 代表协议解释器。(10)服务器 DTP 代表一种传输过程,它通常处于“主动”状 态,它和侦听端口建立数据连接,它还可以为传输
3、和设置参数,并根据PI 的指令传输数据。当然,DTP 也可以转入“”状态。(11)服务器 FTP 进 程,它是和用户 FTP 进程一起工作的,它由 PI 和DTP 组成。至于用户FTP 进程则是由意图:TP 和用户接口组成的。下图是 FTP 服务示注意:数据连接是双向的,它不用整个时间都存在。上图中用户 PI 开始控制连接,控制连接与net 协议很象。在开始阶段,标准 FTP 命令由用户 PI 产生并通过控制连接传送到服务器进程。服务器 PI 向用户 PI返回标准应答。FTP 命令指定数据连接参数和文件系统操作。用户 DTP 在特定数据端口侦听,服务器开始数据连接并以指定的参数开始数据传输。数
4、据端口不必在开始 FTP 命令的机器上,但用户或用户 FTP 进程必须确定它在指定的数据端口上侦听。这个数据连接是全双工的。在另外一种情况下,用户或许希望在两个主机间传送文件,不是两个本机。用户在两台主机间建立控制连接,然后规划数据连接。用这种方式,控制信息由用户 PI 获得,但是数据在服务器 DTP 之间传送。下面就是一个例子:协议要求数据传输在处理时打开控制连接。在完成FTP 服务后由用户中止控制连接,而服务器具体操作。如果在未接收 命令时关闭了控制连接,服务器也会关闭数据传输。FTP 和net 很有联系,FTP 使用net协议进行控制连接,可有两种方法达到目的:用户 PI 或服务器 PI
5、 可以在自己的过程中实现net 协议的功能;第二种方法是利用系统中现有的实现,代码量也不大。3. 数据传输功能net 模块。实现上,FTP 对net 协议的依赖也不多,即使重新数据连接只传输数据,控制连接传送命令和响应。几个命令是关于在主机间传输数据的,数据传输基本上独立于物理结构的,但是如果在压缩传输模式3.1. 数据表示与保存式传输与文件结构有关,文件的属性与表示类型有关。数据是在主机间的设置间传送的。因为两个系统的数据方式不同,因此需要对它进行转换,在传送文本时会有对ASCII 表示的问题,在进行二进制传送的时候,会有不同系统对字节长度规定不同的问题,有的系统是 7 位,有的系统可能是
6、32 位,这也需要进行转换。需要提供数据表示与传输模型函数,但是 FTP 提供这方面的功能不多,超过 FTP 提供功能的那一部分要用户自己实现。数据类型数据表示是由用户指定的表示类型,它可以是隐含的,也可以是用户指定的。请一定注意:逻辑字节长度与物理字节长度是不同的。ASCII 类型这是所有 FTP 必须实现的默认类型,用于传送文本文件,当在主机间使用 EBCDIC 传送时更方便,则不使用ASCII 类型。发送内部表示转换为 NVT-ASCII 格式,接收进行相反的过程接收数据。根据 NVT 标准,要在行结束处使用序列。NVT-ASCII 是 8 位的。ASCII 和 EBCDIC 的格式参数
7、在下面. EBCDIC 类型。它是作为 ASCII 的另法在主机间传送数据的数据类型。EBCDIC 和 ASCII 很象,仅在类型的功能描述上有一些差别。行结束符使用很少。. 图象类型在此类型下传送的数据被看作连续的位,发送数据打包到 8 位传输字节中传送。因为结构的需要要对传送数据进行填充,填充字节全部为 0,填充必须在文件结构时使用,而且要标记出以便接收方过滤掉。它用于传送二进制数据和有效地传送和. 本地类型文件,因此所有 FTP 也必须实现。也可以以十进制指定逻辑字节大小。如果物理字节大小和逻辑字节大小不同,直接将物理数据打包为逻辑字节,不用什么填充。接收方根据逻辑字节大小进行和本机的也
8、就是说,相同的文件相同的参数,那内容必须是一样的。. 格式控制特点进行转换。传输必须是可重复的,ASCII 和 EBCDIC 有一个可选参数,它说明文件垂直格式控制,下面的数据表示类型在 FTP 中有定义。字符文 件可能有三种用途,打印,或留待以后处理。如果是用于打印,那主机必须知道垂直格式控制的表示,如果或等以后处理,也需要保留文件格式。如果在主机上处理完后传输回本机,要保证主机处理时没有麻烦。这都需要在 ASCII 和 EBCDIC 格式上加入新的参数。.1.PR未指定第二个参数是它是默认值。它必须为所有 FTP 接受。如果传输的文件是用于打印的,则使用边界和间隔的默认值。通常它不用于打印
9、目的,而用于保存文件或执行文件。NET 格式控制文件包括 ASCII/EBCDIC 垂直格式控制,这些控制字符可以使打印正常进行。CARRIAGE CONTROL (ASA)文件包含 ASA (FORTRAN)垂直格式控制字符。在以 ASA 标准形成的行中,第一个字符不打印,它用于决定打印前的走纸量。下面是定义了的 ASA 字符:bl: 向下移动 1 行;0:向下移动 2 行;1:移动至下一页;+:不移动打印机必须能够决定结构体的结束。如果文件本身有但这些格式标记已经由ASA 控制字符使用了。3.1.2. 数据结构结构就没有问题,如果没有,用于区别打印行,除了有不同的数据类型外,FTP 还允许
10、有不同的文件结构,下面是三种文件结构:文件式结构:文件中没有内部结构,文件被看作是二进制流;索引页组成的。结构:文件是由一系列组成的;页结构:文件是由不同的如果未使用STRU 命令,文件结构是默认值。文件的结构会影响传输模型,和数据表示。文件本来的属性和保存它 的主机有关,不同的机器会以自己的方式保存文件。在不同主机间传送文件时必须使主机能够识别相互的表示。有些主机上的文件是面向字节的,有些是面向的,在传送时就会出现问题。那就要在接收方进行内部转换。在进行转换的时候,需要区别的边界,在 ASCII 中使用,在 EBCDIC 中使用作为分隔符。采用这种实现方法的必须保证转换是可逆的。. 文件结构
11、如果未使用 STRU 命令,文件结构是默认值。文件结构中没有默认值,文件被看作是连续的字节串。结构.对于文本文件,. 页结构结构必须是所有 FTP 实现必须有的。结构文件是由连续的的。文件是非连续时使用页结构。这种文件称为随机文件。这些文件中有时会的和文件整体或部分相关的信息出现。在 FTP 中,文件的一个部分称为页。为了提供不同的页大小和相关信息,每页都带页头发送。页头中有如下域:所有域均以 1 个逻辑字节长度为大小,逻辑字节长度由 TYPE 命令指定。如果版本与和开始版本号一致,文件时必须以相同的参数进行。如果参数相同,FTP 实现要保证取得的文件内容是相同的。3.2. 建立数据连接传送数
12、据机制包括建立连接选择数据参数。用户和服务器 DTP 有默认数据端口。用户进程默认数据端口和控制连接端口 相同。服务器进程默认数据端口和控制连接端口相邻。传输字节大小是 8 位字节。此字节是实际传输字节,但不代表主机内的数据表示。数据传输进程在数据端 口接收数据,FTP 请求命令决定数据传输的方向。服务器在接收到请求以后,将初始化端口的数据连接。当连接建立后,传输在 DTP 之间传送,服务器PI 对用 户 PI 返回应答。FTP 实现运行一个默认数据端口,用户 PI 才能改变默认端口。通过 PORT 命令可能改变端口,用户可能希望数据在第主机上进行其它操作,用户 PI 需要在两个服务器 PI
13、上建 立连接。一个服务器知侦听另一服务器的请求。用户 PI 通过 PORT 命令通知另一服务器的数据端口。最后双方发送相应的传送命令。通常,服务器负责支持 数据连接,初始化并关闭它,除非用户DTP 在传输模式下要求关闭连接。服务器在下面情况下关闭数据连接:服务器结束发送数据,通过 EOF 要求中止传送;用户发送 ABORT 命令;用户改变端口;控制连接关闭;发生不可恢复错误。3.3. 数据连接管理默认数据连接端口:所有 FTP 必须支持默认数据连接,只有用户 PI 能够初始化非默认端口的使用。确定非默认数据端口:用户 PI 可以使用 PORT 命令指定非默认端口,它要求服务器数据端口。连接是由
14、双方地址确定的,因此改变一方地址就改变了连接。PASV 确定非默认数据连接的重用:在使用流式数据传输模型时,文件结束通过关闭连接指示。如果要传送多个文件时就会出麻烦,解决的 方法有两个,一个是确定非默认端口,另一个是使用另一种传输模式。就传输模式而言,头长度包括此字节的页头长度,为字节,最小长度为 4页索引此部分在原文件中的位置,它和传输不是一回事数据长度页数据中的逻辑字节数,最小值为 0页类型页的类型有以下几种:0=未页,指示传输结构,包头必须为 4,数据长度必须为 0;1=通常页,没有控制信息的通常页文件的普通类型;2=描述子页,用于传送整体文件的描述信息;3= 控制页,包括页级 控制信息
15、的页文件头域,包头长度必须为 5可选域提供每页的控制信息流传输模式是不安全的,因此无法确定连接是暂时还是关闭。其它传输 模式不通过关闭连接表示文件结构,它们可以通过 FTP 命令决定传送结构。因此使用这些传输模式可以在保持连接的情况下传送多个文件。3.4. 传输模式有三种传输模式:一种将数据格式化并考虑重新开始过程;一种压缩数 据;一种是不经过处理(少量处理)传送。所有数据传输必须以一个 EOF 结束,它可以显式给出,也可以通过关闭连接隐式给出。对于文件,所有 EOR 是显 式的,包括最后一个。对于以页结构传送的文件,使用“最后一页”表示结束。从这里开始,下文中提到的字节指的是“传输字节”。为
16、了进行标准化传送,传送主机必须把行结束或结束的内部表示转化为传输模式和文件结构指定的形式传送,接收进行相反的工作。IBM 大型机的计数域可能不能为其它主机识别,所以结束标记在流模式下以双字节控制码传送,在块或压缩模式下以标记位传送。而 ASCII 或 EBCDIC 的行结束则则或指示。这样的转换需要时间,所以相同的系统在传送文本文件时采用二进制或流表示比较合适。下面是 FTP定义的传输模式:3.4.1. 流模式数据以字节流的形式传送。使用的表示类型没有限制,允许结构。在结构文件 EOR 和 EOF 表示为双字节控制 码。第一字节全为 0,后一字节为转义字符。当第二位值为 1 时表示 EOR,为
17、 2 时表示 EOF,如果要同时表示 EOR 和 EOF,值为 3。全 1 字节作为数据发送 时必须使字节传送,其中数据保存在第二个字节内。如果是文件结构,通过发送方关闭连接表示 EOF,接收到的所有数据就是文件内容。3.4.2. 块模式文件以块形式传送,块带有自己的头部分。头字节包括计数域和描述子代码。计数域说明了数据块的字节数,描述子代码定义了以下内容:EOF,EOR 重新开始标记或怀疑错误数据。怀疑错误数据不是为了进行差错控制,它是为了站点间交换特定数据,传送时不管本地错误(如硬盘错误)而传送,但是传送时可要,这个数据可能有错。在此模式下可以使用结构,也可以使用相应的数据表示。头字节的结
18、构如下图所示:描述子代码由在描述子字节中的位标记说明,下面是已经指定的四种代码及其意义:以这种编码,对于特定块可能存在多个描述子编码条件,所需要的位必须全部设置。重新开始标记包括在数据流中,它作为 8 位整数代表在控制连接上使用语言的可打印字节,但不得出现在其中。例如要传送 6字节标记,下面就是例子:代码意义128数据块结束是 EOR64数据块结束是 EOF32数据块内有怀疑错误16数据块是重新开始标记描述子 8 位字节计数 16 位3.4.3. 压缩模式有三种信息需要传送:常规数据以字节串传送;压缩数据,包括复本和过滤器;控制信息,以两个转义字符传送。如果有N(0 但小于 127)个常规数据
19、传送,在数据前一位加上一个字节,这个字节最其它位表示的数值等于N。如下图:为 0,若要压缩一个数据位 D 的N 复本字符串,用两个字节传送,如下图,它表示的是压缩的字节:一串N 过虑器字节可以压缩为一个字节,而过滤器字节根据表示法不同而不同。如果类型是ASCII 或EBCDIC,过滤器字节是,如果是图象或本地类型,则是 0。下面就是过滤器字节:转义序列是双字节,头一个全 0,后一个内是定义模式下的描述子代码。描述子代码与块模式中的意义相同,它作用于其后串中的字节。而压缩模式对于增加带宽有好处(因为数据是压缩过的)。3.5. 差错恢复和重新开始位丢失和数据错误是这一层的差错控制由 TCP 负责。
20、而重新开始则是给用户一个处理系统(包括操作系统,网络等)失败的方法。重新开始过程仅适用和压缩模式,它要求发送者在数据流中加入特定标记,标记仅对传送者有意义,但其中的内容是控制连接使用的语言。标记可以代表一个位记数,记数或可以标记数据数目的任何点。如果接收方也支持重新开始,将会在接收系统中保存这一标记。在系统失败重新启动后,用户可以根据原来的标记重新开始数据传送,也就是通常熟悉的断点续传过程。接收方接收到一段数据,然后记下一点,如果发送方失败了,就从这一点以后再传送相应的数据。具体的这里不多说了。文件传输功能从用户 PI 到服务器的信道是建立在用户到标记服务器端口间的。用户协议解释器负责发送命令
21、和解释接收的应答;服务 器 PI 解释命令,发送应答,指导 DTP 建立数据连接并传送数据。如果数据传输的第二方是用户 DTP,通过用户 FTP 主机的内部协议对它进行控制;如果第二 方是服务器 DTP,它由用户 PI 发来令经过自己的PI 控制。FTP 命令控制命令4.1.1.下列命令指定用户名(USER)控制标记(命令码在括号内):参数是标记用户的net 串。用户标记是服务器必须的,此命令通常是控制连接后第一个发出令,有些主 机还会要求口令和帐户。服务器可以在任何时间接收新的 USER 命令以改变信息。这可以重新开始登录过程,所以传输参数不变,在进行中 的文件传输在过去的成。控制和(或)帐
22、户控制参数下完Marker 8 位Marker 8 位Marker 8 位Marker 8 位Marker 8 位Marker 8 位Descrptr code = 16Byte count = 6口令(PASS)参数是标记用户口令的net 串。此命令紧跟 USER 命令,在某些站点它是完成控制不可缺少的一步。因此口令是个重要的东西,因此不能显示出来,服务器方没有办法隐藏口令,所以这一任务得由用户 FTP进程完成。ACCOUNT (ACCT)参数是标记用户帐户的net 串。此命令不需要与 USER 相关,一些站点可能需要帐户用于登录,另一些可以限 制帐户的权限,在后一种情况下,此命令可在任何时
23、候发送。应答的不同可以区别不同的情况:当登录需要帐户信息时,对PASS 命令的响应是 332。另外,如 果不需要帐户信息,对 PASS 的响应是 230,如果需要帐户信息在以后需要,服务器会返回 332 或 532,这要看它是保存此命令还是改变工作目录(CWD)此命令了。此命令使用户可以在不同的目录或数据集下工作而不用改变它的登录或帐户信息。传输参数也不变。参数一般是目录名或与系统相关的文件集合。回到上一层目录(CDUP)此命令要求系统实现目录树结构,它的响应和 CWD 的相同。结构加载(SMNT)此命令使用户在不改变登录或帐户信息的情况下加载另一个文件系统数据结构。传输参数也不变。参数是文件
24、目录或与系统相关的文件集合。重新初始化(REIN)此命令终止USER,将所有 I/O 和帐户信息写入,但不许进行中的数据传输完成。重置所有参数,控制连接打开,可以再次开始USER 命令。退出登录(QUIT)此命令终止USER,如果没有数据传输,服务器关闭控制连接;如果有数据传输,在得到传输响应后服务器关闭控制连 接。如果用户进程正在向不同的 USER 传输数据,不希望对每个 USER 关闭然后再打开,可以使用REIN。对控制连接的意外关闭,可以导致服务器运行中止 (ABOR)和退出登录(QUIT)。4.1.2. 传输参数命令所有数据传输参数有默认值。服务器必须命令传送参数:数据端口(PORT)
25、下默认值,在 FTP 服务请求后,可以以任何顺序发送。下面参数是要使用的数据连接端口,通常情况下对此不需令响应。如果使用此命令时,要发送 32 位的 IP地址和 16 位的 TCP 端PORT h1,h2,h3,h4,p1,p2。上面的信息以 8 位为一组,逗号间隔十进制传输,如下例:其中 h1 是 IP 地址的最高 8 位。(PASV)此命令要求服务器DTP 在指定的数据端口侦听,进入表示类型(TYPE)接收请求的状态,参数是主机和端口地址。参数指定表示类型。有些类型需要第二个参数,第一个参数由单个整数指定字节大小,参数间以分隔。下面是格式:net 字符定义,第二个参数是十进制默认表示类型是
26、ASCII 非打印字符,如果参数未改变,以后只改变了第一个参数,则使用默认值。文件结构(STRU)参数是一个net 字符代码指定文件结构。下面是代码及其意义:F - 文件(非结构),它是默认值结构R -P - 页结构传输模式(MODE)参数是一个net 字符代码指定传输模式。下面是代码及其意义:S - 流(默认值)B - 块C - 压缩4.1.3. FTP 服务命令FTP 服务命令定义用户请求的文件传输或文件系统功 能。此命令的参数通常是路径名,其语法要和服务器的规范一致。的默认值是最近指定的设备目录或目录。命令顺序通常没有限制,只有rename from命令后面必须是rename to,重新
27、启动命令后面必须是中断服务命令。服务命令的响应通常在数据连接上传输。下面是具体获得文件(RETR)令:此命令使服务器DTP 传送指定路径内的文件复本到服务器或用户 DTP。这边服务器上文件的状态和内容不受影响。保存(STOR)此命令使服务器DTP 接收数据连接上传送过来的数据,并将数据保存在服务器的文件中。如果文件已存在,原文件将被覆盖。如果文件不存在,则新建文件。唯一保存(STOU)此命令和 STOR 差不多,此命令要求在此目录下的文件名是唯一的,对此命令的响应必须包括产生的用户名。附加(APPE)它和 STOR 的功能差不多,但是如果文件在指定路径内已存在,则把数据附加到原文件尾部,如果不
28、存在则新建文件。分配(ALLO)此命令用于在一些主机上为新传送的文件分配足够的空间。参数是十进制的逻辑字节数。如果是或页结构,页或的最大大小也需要,这在第二个参数内以十进制指定。第二个参数是可选的,如果有它,它和第一个参数以net 字符 R 分隔。此命令在 STOR 或 APPE 命令后,对于不需要分配空间的机器,它的作用等于NOOP。重新开始(REST)参数域代表服务器要重新开始的那一点,此命令并不传送文件,而是略过指定点后的数据,此命令后应该跟其它要求文件传输的FTP 命令。重命名(RNFR)这个命令和重命名为(RNTO)此命令和上面放弃(ABOR)在其它操作系统中使用的一样,只不过后面要
29、跟rename to指定新的文件名。令共同完成对文件的重命名。此命令通知服务中止以前的 FTP 命令和与之相关的数据传送。如果先前的操作已经完成,则没有动作,返回 226。如果没有完成,返回 426,然后再返回 226。关闭控制连接,数据连接不关闭。删除(DELE)此命令删除指定路径下的文件。用户进程负责对删除的提示。删除目录(RMD)此命令删除目录。创建目录(MKD)此命令在指定路径下创建新目录。打印工作目录(PWD)在响应是返回当前工作目录。列表(LIST)服务器传送列表到DTP,如果路径指定一个目录或许多文件,返回指定路径下的文件列表。如果路径名指定一个文件,服务器返回文件的当前信息,参
30、数为空表示用户当前的工作目录或默认目录。数据传输在 ASCII 或 EBCDIC 下进行,用户必须确认这一点。因为文件信息因系统不同而不同,所以不可能被程序自动利用,但是人类用户却很需要。名字列表(NLST)服务器传送目录表名到用户,路径名应指定目录或其它系统指定的文件群描述子;空参数指当前目录。服务器返回文件名数据流,以 ASCII 或 EBCDIC 形式传送,并以或分隔。这里返回的信息有时可以供程序进行进一步处理。站点参数(SITE)服务器用来提供服务器系统信息,信息因系统不同而不同,格式在 HELP SITE 命令应答中给出。系统(SYST)用于确定服务器上运行的操作系统。状态(S)此命
31、令返回控制连接状态,它可以在文件传送过程中发送,服务器返回操作进行的状态。也可以在文件传送之间发送,这 时命令有参数,参数是路径名,此命令的功能除了数据在控制连接上传送以外和列表命令相似。如果指定部分路径,服务器以文件名或与说明相关的属性返回;如没 有参数,服务器返回服务器 FTP进程的状态信息,包括传输参数的当前值和连接状态。帮助(HELP)这条命令 在平常系统中得到的帮助没有什么区别,响应类型是 211 或 214。建议在使用 USER 命令前使用此命令。等待(NOOP)此命令不产生什么实际动作,它仅使服务器返回 OK。FTP 在控制连接上使用net 通信,因此有机会大家相关的协议说明。对
32、下文的理解会很有好处。下面内容将 对命令的应答和关于命令的详细信息作以说明。FTP 命令可分为控制标记,数据传输参数或 FTP 服务请求,特定令(如 ABOR,S)可以在数 据传输过程中在控制连接上传输。有些服务器不能同时监视数据和控制链路,那就要另外采取措施了。请注意下面的几点建议:用户系统将用户系统发送net 的errupt Pros(IP)信息 net 的Synch信号;net 流;用户系统将命令(如 ABOR)服务器 PI 在接收到 IP 后,在4.2. FTP 应答net 流;net 流中寻找仅有一个的 FTP 命令。FTP 命令的响应是为了对数据传输请求和过程进行同步,也是为了让用
33、户了解服务器的状态。每个命令必须有最少一个 响应,如果是多个,它们要易于区别。有些命令是有顺序性的,因此其中任何一个命令的失败会导致从头开始。FTP 响应由三个数字,后面是一些文本。数字 带有足够的信息命名用户 PI 不用检查文本就知道。文本信息与服务器相关,用户可能得到不同的文本信息。文本和数字以间隔,文本后以net 行结束符结束。文本可能多于一行,这时文本必须在括号内,第一行内要有信息表示文本多于一行,最后一行也要有所标记。如果是多行,可以在数字代码后加上-,最后一行以数字开始,后面是,再加上net 的行结束符就可以了。下面是一个例子:123-第一行第二行234 以数字开始的一行123 最
34、后一行三位数字每位都有一定的意义,第一位确定响应是好的,坏的还是不完全的,通过检查第一位,用户进程通常就能够知道大致要采取什么行动了。如果用户程序希望了解出了什么问题,可以检查第二位,第三位留表示其它信息。第一位有五个值:1yz 确定预备应答请求的操作正在被初始化;在进入下一个命令前等待另外的应答。这类响应用于说明命令被接受,在实现中如何同步监视有响应。2yz 确定完成应答,用户进程现在可以关注数据连接了。服务器 FTP 进程对第个命令几乎都返回 1yz要求的操作已经完成,可以执行新命令。3yz 确定中间应答命令已接受,但要求的操作被停止,停止接收更新的信息。4yz 暂时完成应答未接受命令,要
35、求的操作未执行,但错误是临时的,过一会儿可以再次发送消息。用户应该返回命令序列的开始。这个暂时不好确定,此命令的意思就是让用户进程再次尝试使用此命令。5yz 永远它与暂时完成应答完成应答的区别就在于错误条件是一时半会不会。下面来看看第二位所代表的意义:x0z 格式错误;x1z 此类应答是为了请求信息的;x2z 此类应答是关于控制和数据连接的;x3z 关于认证和帐户登录过程;x4z 未使用;x5z 此类应答是关于文件系统的;第三个数字是在第二个数字的基础上对应答内容的进一步细化。一般来说,数字代码后要有文本信息。实现时应该尽量使用现有的代码,而不要随便添加新的意义不大的代码。有些命令如 TYPE
36、 或 ALLO,它们的成功不为用户进程提供任务新信息,所以不会有 200 应答返回。如果有些命令对于服务器来说不支持,也要返回确定完成应答,这样用户进程才有可能进行下面令。如果要求的不是可选实现令,而这个命令确实没有实现,那就要返回代码 502。下面根据数字顺序列出各个应答码及其意义:110重新启动标记应答。在这种情况下文本是确定的,它必须是:MARK yyyy=mmmm,其中 yyyy 是用户进程数据流标记,mmmm 是服务器标记。120服务在 nnn 分钟内准备好125数据连接已打开,准备传送150文件状态良好,打开数据连接200命令成功202命令未实现211系统状态或系统帮助响应212目
37、录状态213文件状态214帮助信息,信息仅对人类用户有用215名字系统类型220对新用户服务准备好221服务关闭控制连接,可以退出登录225数据连接打开,无传输正在进行226关闭数据连接,请求的文件操作成功227进入模式230用户登录250请求的文件操作完成257创建PATHNAME331用户名正确,需要口令332登录时需要帐户信息350请求的文件操作需要进一步命令421不能提供服务,关闭控制连接425不能打开数据连接426关闭连接,中止传输450请求的文件操作未执行451中止请求的操作:有本地错误452未执行请求的操作:系统空间不足500格式错误,命令不可识别说明最小实现下面是 FTP 服务
38、器的最小实现:类型模式结构命令ASCII-prStreamFile, RecordUSER, QUIT, PORT,TYPE, MODE, STRU,RETR, STOR,NOOP.传输的默认参数为:类型模式结构ASCII-prStreamFile所有主机都将上面的值作为默认值。5.2. 连接服务器协议解释器会在端口 L 侦听,用户或用户协议解释器初始化全双工控制连接,服务器和用户进程应该遵守net 协议的说明进行。服务器不提供对命令行的编辑功能,应该由用户负责这一切。在全部传送和应答结束后,在用户的请求下服务器关闭控制连接。用户 DTP 必须在指定的数据端口上侦听,它可以是默认端口 U 或由
39、 PORT 命令指定的端口。服务器的默认数据端口为 L-1。传输方向和端口均可由 FTP 命令决定。只有用户 PI 可以改变默认端口。当数据在服务器 A 和 B 之间传送时,用户 PI,C,在两个服务器 PI 之间建立控制连接。其中一个服务器 A,在接收到传输 服务命令时接收 PASV 命令初始化连接,用户 PI 接收到 PASV 命令的确认时(确认内包括主机标识和端口),将端口以 PORT 命令发送到 B。在接收到确认 后,用户 PI 可以发送相应注意时差:令给A 和B 了,B 初始连接和传输进程,命令应答序列如下面所示,请根据位置在任何时间,服务器和用户只要有一方关闭连接,另一方就要赶快连
40、接。缓冲中的数据,然后也关闭本方的501参数语法错误502命令未实现503命令顺序错误504此参数下令功能未实现530未登录532文件需要帐户信息550未执行请求的操作551请求操作中止:页类型未知552请求的文件操作中止,分配溢出553未执行请求的操作:文件名不合法5.3. 命令本节主要命令格式。命令对大小写不敏感。命令通常由命令码和相应的参数组成。中间由一个或几个空格分开。参数域由结束,服务器在未接收到行结束符时不会采取任何动作。下面描述的格式是以 NVT- ASCII 以准的,方括号代表可选的参数域,如果未选择可选的参数域则采用默认值。5.3.1. FTP 命令下面是 FTP 命令,其中
41、 username 代表用户名,password 代表口令,pathname 代表路径名,host-port 代表主机端口,account-information 代表帐户信息,typecode 代表类型代码,decimal- marker 代表标记,string 代表字符串:USER PASS ACCT CWD CDUP SMNT QUIT REIN PORT PASV TYPE STRU MODE RETR STOR STOU APPE ALLO R REST RNFR RNTO ABOR DELE RMD MKD PWD LIST NLST SITESYSTeger 代表十进制整数,S
42、HELP NOOP5.3.2. FTP 命令参数下面是用 BNF 范式表示的参数格式::=:=:=:= |:= 除和外的所有ASCII 字符:=:= |:= 可打印ASCII 字符,从 33 到 126:=:= ,:= ,:= ,:= 从 1 到 255 的十进制整数:= N | T | C:= A | E | I| L:= F | R | P:= S | B | C:=:= 任何十进制整数5.4. 命令和响应序列服务器和用户之间的通信是据响应再发送新命令。的过程,用户发送FTP 命令,然后等待服务器的一个(或多个)响应,根连接时的响应带有许多信息,通常情况下,服务器会返回 220 应答,等待
43、输入,用户在接收到此响应后才发送新命令, 如果服务器不能立即接收输入,会在 220 后面返回 120。有些信息如服务器将在 15 分钟后停止工作是要服务器发向用户的,但是服务器却不能直接发向用户, 处理的方法是将消息缓冲,在下一个响应中返回给用户。下面列出命令的应答,第一个是预备应答,第二个是确定完成,第三个是完成,最后是中间应答。这些 应答是建立连接120220220421登录 USER 230530500, 501, 421331, 332PASS 230202530500, 501, 503, 421332状态图的基础,状态图会在下节中给出:ACCT230202530500, 501,
44、503, 421CWD 250500, 501, 502, 421, 530, 550CDUP 200500, 501, 502, 421, 530, 550SMNT 202, 250500, 501, 502, 421, 530, 550退出登录REIN 120220220421500, 502QUIT 221500传输参数PORT 200500, 501, 421, 530PASV 227500, 501, 502, 421, 530MODE 200500, 501, 504, 421, 530TYPE 200500, 501, 504, 421, 530STRU 200500, 501,
45、 504, 421, 530文件操作命令ALLO 200202500, 501, 504, 421, 530REST500, 501, 502, 421, 530350STOR 125, 150(110)226, 250425, 426, 451, 551, 552532, 450, 452, 553500, 501, 421, 530STOU 125, 150(110)226, 250425, 426, 451, 551, 552532, 450, 452, 553500, 501, 421, 530RETR 125, 150(110)226, 250425, 426, 451450, 55
46、0500, 501, 421, 530LIST 125, 150226, 250425, 426, 451450500, 501, 502, 421, 530NLST 125, 150226, 250425, 426, 451450500, 501, 502, 421, 530APPE 125, 150(110)226, 250425, 426, 451, 551, 552532, 450, 550, 452, 553500, 501, 502, 421, 530RNFR450, 550500, 501, 502, 421, 530350RNTO 250532, 553500, 501, 502, 503, 421, 530DELE 250450, 550500, 501, 502, 421, 530RMD 250500, 501, 502, 421, 530, 550MKD 257500, 501, 502, 421, 530, 550PWD 257500, 501, 502, 421, 550ABOR 225, 226500, 501, 502, 421获得信息命令SYST 215500, 501, 502, 421S211, 212, 213450500, 501, 502, 421, 530HELP 211, 214500, 501, 502,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中介招工合同范本
- 借款服务合同范本
- 低价药店转让合同范本
- 丽江租车合同范本
- 北京商铺投资合同范本
- 公司木材采购合同范本
- 劳动合同继签合同范本
- 包工防水合同范本
- 公寓精装修服务合同范本
- 2024年新疆医科大学引进考试真题
- 爆破工程师培训
- 2024年云南省公务员考试《行测》真题及答案解析
- 教科版初中物理八年级下册知识梳理
- 《飞科电器公司盈利能力存在的问题及完善对策(7800字论文)》
- 零星维修工程项目施工方案1
- 楚辞离骚的原文全文完整注音版、拼音版标准翻译译文及注释
- 湖北省荆州市2024年七年级上学期期中数学试题【附答案】
- 刑事诉讼法课件
- 肩袖损伤病例讨论
- 《ISO 41001-2018 设施管理- 管理体系 要求及使用指南》专业读与应用指导材料之2:“4 组织环境-4.2 理解相关方的需要和期望”
- 2024年中国冻虾仁市场调查研究报告
评论
0/150
提交评论