⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 198.htm

📁 unix高级编程原吗
💻 HTM
📖 第 1 页 / 共 4 页
字号:
  <br>

  <br>

一串n过虑器字节可以压缩为一个字节,而过滤器字节根据表示法不同而不同。如 <br>

果类型是ascii或ebcdic,过滤器字节是<sp>,如果是图象或本地类型,则是0。下 <br>

面就是过滤器字节: <br>

  <br>

  <br>

  <br>

转义序列是双字节,头一个全0,后一个内是定义于块模式下的描述子代码。描述 <br>

子代码与块模式中的意义相同,它作用于其后串中的字节。而压缩模式对于增加带 <br>

宽有好处(因为数据是压缩过的)。 <br>



  <br>

3.5. 差错恢复和重新开始 <br>

  <br>

位丢失和数据错误是这一层的差错控制由tcp负责。而重新开始则是给用户一个处 <br>

理系统(包括操作系统,网络等)失败的方法。重新开始过程仅适用于块和压缩模 <br>

式,它要求发送者在数据流中加入特定标记,标记仅对传送者有意义,但其中的内 <br>

容是控制连接使用的语言。标记可以代表一个位记数,记录记数或可以标记数据数 <br>

目的任何点。如果接收方也支持重新开始,将会在接收系统中保存这一标记。在系 <br>

统失败重新启动后,用户可以根据原来的标记重新开始数据传送,也就是我们通常 <br>

熟悉的断点续传过程。接收方接收到一段数据,然后记下一点,如果发送方失败了 <br>

,就从这一点以后再传送相应的数据。具体的这里不多说了。 <br>

  <br>

4. 文件传输功能 <br>

  <br>

从用户pi到服务器的信道是建立在用户到标记服务器端口间的。用户协议解释器负 <br>

责发送命令和解释接收的应答;服务器pi解释命令,发送应答,指导dtp建立数据 <br>

连接并传送数据。如果数据传输的第二方是用户dtp,通过用户ftp主机的内部协议 <br>

对它进行控制;如果第二方是服务器dtp,它由用户pi发来的命令经过自己的pi控 <br>

制。 <br>

  <br>

4.1. ftp命令 <br>

  <br>

  <br>

4.1.1. 访问控制命令 <br>

  <br>

下列命令指定访问控制标记(命令码在括号内): <br>

  <br>

用户名(user) <br>

  <br>

参数是标记用户的telnet串。用户标记是访问服务器必须的,此命令通常是控制连 <br>

接后第一个发出的命令,有些主机还会要求口令和帐户。服务器可以在任何时间接 <br>

收新的user命令以改变访问控制和(或)帐户信息。这可以重新开始登录过程,所 <br>

以传输参数不变,在进行中的文件传输在过去的访问控制参数下完成。 <br>

  <br>

口令(pass) <br>

  <br>

参数是标记用户口令的telnet串。此命令紧跟user命令,在某些站点它是完成访问 <br>

控制不可缺少的一步。因此口令是个重要的东西,因此不能显示出来,服务器方没 <br>

有办法隐藏口令,所以这一任务得由用户ftp进程完成。 <br>

  <br>

account (acct) <br>

  <br>

  <br>

  <br>

参数是标记用户帐户的telnet串。此命令不需要与user相关,一些站点可能需要帐 <br>



户用于登录,另一些可以限制帐户的权限,在后一种情况下,此命令可在任何时候 <br>

发送。应答的不同可以区别不同的情况:当登录需要帐户信息时,对pass命令的响 <br>

应是332。另外,如果不需要帐户信息,对pass的响应是230,如果需要帐户信息在 <br>

以后需要,服务器会返回332或532,这要看它是保存此命令还是拒绝此命令了。 <br>

  <br>

改变工作目录(cwd) <br>

  <br>

此命令使用户可以在不同的目录或数据集下工作而不用改变它的登录或帐户信息。 <br>

传输参数也不变。参数一般是目录名或与系统相关的文件集合。 <br>

  <br>

回到上一层目录(cdup) <br>

  <br>

此命令要求系统实现目录树结构,它的响应和cwd的相同。 <br>

  <br>

结构加载(smnt) <br>

  <br>

此命令使用户在不改变登录或帐户信息的情况下加载另一个文件系统数据结构。传 <br>

输参数也不变。参数是文件目录或与系统相关的文件集合。 <br>

  <br>

重新初始化(rein) <br>

  <br>

此命令终止user,将所有i/o和帐户信息写入,但不许进行中的数据传输完成。重 <br>



置所有参数,控制连接打开,可以再次开始user命令。 <br>

  <br>

退出登录(quit) <br>

  <br>

此命令终止user,如果没有数据传输,服务器关闭控制连接;如果有数据传输,在 <br>

得到传输响应后服务器关闭控制连接。如果用户进程正在向不同的user传输数据, <br>

不希望对每个user关闭然后再打开,可以使用rein。对控制连接的意外关闭,可以 <br>

导致服务器运行中止(abor)和退出登录(quit)。 <br>

  <br>

4.1.2. 传输参数命令 <br>

  <br>

所有数据传输参数有默认值。服务器必须记录下默认值,在ftp服务请求后,可以 <br>

以任何顺序发送。下面命令传送参数: <br>

  <br>

数据端口(port) <br>

  <br>

  <br>

  <br>

参数是要使用的数据连接端口,通常情况下对此不需要命令响应。如果使用此命令 <br>

时,要发送32位的ip地址和16位的tcp端口号。上面的信息以8位为一组,逗号间隔 <br>

十进制传输,如下例: <br>

  <br>

  <br>

port h1,h2,h3,h4,p1,p2 <br>

  <br>

其中h1是ip地址的最高8位。 <br>

  <br>

被动(pasv) <br>

  <br>

此命令要求服务器dtp在指定的数据端口侦听,进入被动接收请求的状态,参数是 <br>

主机和端口地址。 <br>

  <br>

表示类型(type) <br>

  <br>

参数指定表示类型。有些类型需要第二个参数,第一个参数由单个telnet字符定义 <br>

,第二个参数是十进制整数指定字节大小,参数间以<sp>分隔。下面是格式: <br>

  <br>

  <br>

  <br>

默认表示类型是ascii非打印字符,如果参数未改变,以后只改变了第一个参数, <br>

则使用默认值。 <br>

  <br>

文件结构(stru) <br>

  <br>

参数是一个telnet字符代码指定文件结构。下面是代码及其意义: <br>



  <br>

f - 文件(非记录结构),它是默认值 <br>

  <br>

r - 记录结构 <br>

  <br>

p - 页结构 <br>

  <br>

传输模式(mode) <br>

  <br>

参数是一个telnet字符代码指定传输模式。下面是代码及其意义: <br>

  <br>

s - 流(默认值) <br>

  <br>

b - 块 <br>

  <br>

c - 压缩 <br>

  <br>

4.1.3. ftp服务命令 <br>

  <br>

ftp服务命令定义用户请求的文件传输或文件系统功能。此命令的参数通常是路径 <br>

名,其语法要和服务器的规范一致。推荐的默认值是最近指定的设备目录或目录。 <br>

命令顺序通常没有限制,只有"rename from"命令后面必须是"rename to",重新启 <br>



动命令后面必须是中断服务命令。服务命令的响应通常在数据连接上传输。下面是 <br>

具体的命令: <br>

  <br>

获得文件(retr) <br>

  <br>

此命令使服务器dtp传送指定路径内的文件复本到服务器或用户dtp。这边服务器上 <br>

文件的状态和内容不受影响。 <br>

  <br>

保存(stor) <br>

  <br>

此命令使服务器dtp接收数据连接上传送过来的数据,并将数据保存在服务器的文 <br>

件中。如果文件已存在,原文件将被覆盖。如果文件不存在,则新建文件。 <br>

  <br>

唯一保存(stou) <br>

  <br>

此命令和stor差不多,此命令要求在此目录下的文件名是唯一的,对此命令的响应 <br>

必须包括产生的用户名。 <br>

  <br>

附加(appe) <br>

  <br>

它和stor的功能差不多,但是如果文件在指定路径内已存在,则把数据附加到原文 <br>

件尾部,如果不存在则新建文件。 <br>



  <br>

分配(allo) <br>

  <br>

此命令用于在一些主机上为新传送的文件分配足够的存储空间。参数是十进制的逻 <br>

辑字节数。如果是记录或页结构,页或记录的最大大小也需要,这在第二个参数内 <br>

以十进制指定。第二个参数是可选的,如果有它,它和第一个参数以telnet字符 <br>

<sp> r <sp>分隔。此命令在stor或appe命令后,对于不需要分配存储空间的机器 <br>

,它的作用等于noop。 <br>

  <br>

重新开始(rest) <br>

  <br>

参数域代表服务器要重新开始的那一点,此命令并不传送文件,而是略过指定点后 <br>

的数据,此命令后应该跟其它要求文件传输的ftp命令。 <br>

  <br>

重命名(rnfr) <br>

  <br>

这个命令和我们在其它操作系统中使用的一样,只不过后面要跟"rename to"指定 <br>

新的文件名。 <br>

  <br>

重命名为(rnto) <br>

  <br>

此命令和上面的命令共同完成对文件的重命名。 <br>



  <br>

放弃(abor) <br>

  <br>

此命令通知服务中止以前的ftp命令和与之相关的数据传送。如果先前的操作已经 <br>

完成,则没有动作,返回226。如果没有完成,返回426,然后再返回226。关闭控 <br>

制连接,数据连接不关闭。 <br>

  <br>

删除(dele) <br>

  <br>

此命令删除指定路径下的文件。用户进程负责对删除的提示。 <br>

  <br>

删除目录(rmd) <br>

  <br>

此命令删除目录。 <br>

  <br>

创建目录(mkd) <br>

  <br>

此命令在指定路径下创建新目录。 <br>

  <br>

打印工作目录(pwd) <br>

  <br>

在响应是返回当前工作目录。 <br>



  <br>

列表(list) <br>

  <br>

服务器传送列表到被动dtp,如果路径指定一个目录或许多文件,返回指定路径下 <br>

的文件列表。如果路径名指定一个文件,服务器返回文件的当前信息,参数为空表 <br>

示用户当前的工作目录或默认目录。数据传输在ascii或ebcdic下进行,用户必须 <br>

确认这一点。因为文件信息因系统不同而不同,所以不可能被程序自动利用,但是 <br>

人类用户却很需要。 <br>

  <br>

名字列表(nlst) <br>

  <br>

服务器传送目录表名到用户,路径名应指定目录或其它系统指定的文件群描述子; <br>

空参数指当前目录。服务器返回文件名数据流,以ascii或ebcdic形式传送,并以 <br>

<crlf>或<nl>分隔。这里返回的信息有时可以供程序进行进一步处理。 <br>

  <br>

站点参数(site) <br>

  <br>

服务器用来提供服务器系统信息,信息因系统不同而不同,格式在help site命令 <br>

应答中给出。 <br>

  <br>

系统(syst) <br>

  <br>

  <br>

用于确定服务器上运行的操作系统。 <br>

  <br>

状态(stat) <br>

  <br>

此命令返回控制连接状态,它可以在文件传送过程中发送,服务器返回操作进行的 <br>

状态。也可以在文件传送之间发送,这时命令有参数,参数是路径名,此命令的功 <br>

能除了数据在控制连接上传送以外和列表命令相似。如果指定部分路径,服务器以 <br>

文件名或与说明相关的属性返回;如没有参数,服务器返回服务器ftp进程的状态 <br>

信息,包括传输参数的当前值和连接状态。 <br>

  <br>

帮助(help) <br>

  <br>

这条命令我们在平常系统中得到的帮助没有什么区别,响应类型是211或214。建议 <br>

在使用user命令前使用此命令。 <br>

  <br>

等待(noop) <br>

  <br>

此命令不产生什么实际动作,它仅使服务器返回ok。 <br>

  <br>

ftp在控制连接上使用telnet通信,因此有机会大家可以看看相关的协议说明。对 <br>

下文的理解会很有好处。下面内容将对命令的应答和关于命令的详细信息作以说明 <br>

。ftp命令可分为访问控制标记,数据传输参数或ftp服务请求,特定的命令(如 <br>



abor,stat)可以在数据传输过程中在控制连接上传输。有些服务器不能同时监视 <br>

数据和控制链路,那就要另外采取措施了。请注意下面的几点建议: <br>

  <br>

1. 用户系统将telnet的"interrupt process"(ip)信息插入telnet流; <br>

  <br>

2. 用户系统发送telnet的"synch"信号; <br>

  <br>

3. 用户系统将命令(如abor)插入telnet流; <br>

  <br>

4. 服务器pi在接收到ip后,在telnet流中寻找仅有一个的ftp命令。 <br>

  <br>

4.2. ftp应答 <br>

  <br>

ftp命令的响应是为了对数据传输请求和过程进行同步,也是为了让用户了解服务 <br>

器的状态。每个命令必须有最少一个响应,如果是多个,它们要易于区别。有些命 <br>

令是有顺序性的,因此其中任何一个命令的失败会导致从头开始。ftp响应由三个 <br>

数字构成,后面是一些文本。数字带有足够的信息命名用户pi不用检查文本就知道 <br>

发生了什么。文本信息与服务器相关,用户可能得到不同的文本信息。文本和数字 <br>

以<sp>间隔,文本后以telnet行结束符结束。文本可能多于一行,这时文本必须在 <br>

括号内,第一行内要有信息表示文本多于一行,最后一行也要有所标记。如果是多 <br>

行,可以在数字代码后加上"-",最后一行以数字开始,后面是<sp>,再加上 <br>

telnet的行结束符就可以了。下面是一个例子: <br>



  <br>

123-第一行 <br>

  <br>

第二行 <br>

  <br>

     234 以数字开始的一行 <br>

  <br>

123 最后一行 <br>

  <br>

三位数字每位都有一定的意义,第一位确定响应是好的,坏的还是不完全的,通过 <br>

检查第一位,用户进程通常就能够知道大致要采取什么行动了。如果用户程序希望 <br>

了解出了什么问题,可以检查第二位,第三位留表示其它信息。第一位有五个值: <br>

  <br>

  <br>

1yz 确定预备应答 <br>

  <br>

请求的操作正在被初始化;在进入下一个命令前等待另外的应答。这类响应用于说 <br>

明命令被接受,在实现中如何同步监视有困难,用户进程现在可以关注数据连接了 <br>

。服务器ftp进程对第个命令几乎都返回1yz响应。 <br>

  <br>

2yz 确定完成应答 <br>

  <br>

  <br>

要求的操作已经完成,可以执行新命令。 <br>

  <br>

3yz 确定中间应答 <br>

  <br>

命令已接受,但要求的操作被停止,停止接收更新的信息。 <br>

  <br>

4yz 暂时拒绝完成应答 <br>

  <br>

未接受命令,要求的操作未执行,但错误是临时的,过一会儿可以再次发送消息。 <br>

用户应该返回命令序列的开始。这个暂时可是不好确定,此命令的意思就是让用户 <br>

进程再次尝试使用此命令。 <br>

  <br>

5yz 永远拒绝完成应答 <br>

  <br>

它与暂时拒绝完成应答的区别就在于错误条件是一时半会不会消失。 <br>

  <br>

下面我们来看看第二位所代表的意义: <br>

  <br>

x0z 格式错误; <br>

  <br>

x1z 此类应答是为了请求信息的; <br>

  <br>

  <br>

x2z 此类应答是关于控制和数据连接的; <br>

  <br>

x3z 关于认证和帐户登录过程; <br>

  <br>

x4z 未使用; <br>

  <br>

x5z 此类应答是关于文件系统的; <br>

  <br>

第三个数字是在第二个数字的基础上对应答内容的进一步细化。一般来说,数字代 <br>

码后要有文本信息。实现时应该尽量使用现有的代码,而不要随便添加新的意义不 <br>

大的代码。 <br>

  <br>

有些命令如type或allo,它们的成功不为用户进程提供任务新信息,所以不会有 <br>

200应答返回。如果有些命令对于服务器来说不支持,也要返回确定完成应答,这 <br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -