RFC959阅读笔记

一.几个术语

1.权限控制:定义用户在系统中可使用的权限和对系统中文件的操作权限。

2.FTP有两种字节大小:文件的逻辑字节大小和数据传输字节大小。传输字节大小通常是8位,实验室不必与系统中存储数据的字节大小有联系。

3.PI:协议解释器,用户和服务器各有一个,即user-PI与server-PI。
user-PI:发起控制连接,初始化FTP指令,管理user-FTP
server-PI:在服务端端口监听,以期来自user-PI的控制连接,接收来自user-PI的标准FTP指令并发出回应。

4.回应:回应是服务端对客户端发出的指令作出的应答。

5.DTP,数据传输过程,建立和管理数据连接,可以是主动也可以是被动的。和PI一样,客户端和服务端各一个

6.控制连接:建立在user-PI和server-PI间用来交换指令和应答的通信链路。该连接遵从Telnet协议。

7.数据连接:特定模式下,建立在user-DTP和server-DTP间用于传输数据的通信链路。

8.ftp工作模式:
主动模式:也称Port模式,先由客户端选择一个端口向服务端21端口发出控制连接请求,与服务器建立控制连接,并通过这个通道发送命令。传输数据时客户端要通过这条连接通道发出PORT指令,告诉服务器客户端用什么端口收发数据。服务端用自己的20端口与该端口连接,建立一条数据传输通道。
 被动模式:又称Passive模式,建立控制通道时与主动模式一样,但客户端口发出的不是PORT命令而是PASV,服务器收到这个命令后随机打开一个大于1024的端口并通知客户端在这个端口上收发数据。
 这两种模式的主要区别是由谁确定服务端数据端口。


9.网络虚拟终端(NVT):网络虚拟终端(NVT)是一种虚拟的终端设备,它被客户和服务器所采用,用来建立数据表示和解释的一致性。 包括两个部分:输出设备:输出远程数据,一般为显示器输入设备:本地数据输入在NVT上传输的数据格式,在网络虚拟终端NVT上传输的数据采用8bit字节数据,其中最高位为0的字节:一般数据; 最高位为1的字节:用于NVT命令 。
10.NVT ASCII:用来替代ASCII码在客户和服务器间传输的编码形式。

11.FTP执行(FTP实现):FTP是文件传输标准,要具体实现文件传输功能需要用各种编程语言编写服务端和客户端程序。

二.两个模型
1.客户端与服务端传输数据:

注:数据连接是双向的,且无需总是存在。


2.客户端控制两台主机,在两台主机间传输数据:


注:完成服务后,用户的责任是请求关闭控制连接,而实际的关闭动作由两服务器进行。


三.数据传输功能
文件通过数据连接传输,控制连接用来交换指令和回应,指令由user发出,服务端执行并回应。
1.数据的表示和存储
通常不同主机的数据表示不同,所以有时需要对数据进行转换。另外因为主机字长不同,32位机传送数据给36们机时,也需要转换。
1.1 数据表示类型
 ASCII类型:这是所有FTP执行都必须承认的默认类型。它主要用于传输文本文件,除非两台主机间用EBCDIC类型更方便。
 EBCDIC类型:这种类型在使用EBCDIC作为内部字符的主机间能够提供高效地传输。
 IMAGE类型,其中IMAGE格式用于有效地传送和存储文件与二进制数据,推荐所有的FTP在执行时支持此类型。
 数据类型由TYPE指令指定,默认是IMAGE。

【RFC959阅读笔记】1.2 格式控制:一个字符文件传输到目标主机是为了三种目的,打印、存储和以后信息的检索、处理。如果是为打印而传送,那就要知道纵向格式如何表示;第二种目的需要能够在主机存储,并在检索时格式正确;第三种要求这个文件能够移动到其他主机,且在以后的处理中不会出错。这三种目的需要三种格式来区分
 非打印:这种格式用来存储和处理文件,必须被所有的FTP实现所支持。
 TELNET格式控制:没看懂。
 走纸控制:应该是和打印有关的,具体没看懂。
1.3 文件的结构
 文件结构:没有内部结构,文件由连续的数据字节组成。
 记录结构:文件由连续有序的记录组成。
 页结构:文件由独立的索引页组成,页与页之间无序。

 文件的结构由STRU指令指定,默认是文件结构。

2. 传输模式,有三种可选择的传输模式:一是格式化数据并允许重新开始程序;二是为有效地传输而压缩数据;三是对数据进行少量的处理或不进行处理。所有的数据传输必须以一个文件结束符EOF结束,它可以显式地给出,也可以通过关闭连接隐式地给出。FTP定义了以下传输模式:
 流模式:数据以字节流方式传送,使用的数据表示类型没有限制,允许记录结构。在记录结构中以EOR和EOF表示双字节控制码。控制码第一个字节全是0,第二个字节是1时表示EOR,2表示EOF,3表示同时传输了EOR和EOF。在文件结构中,关闭连接表示EOF。
 块模式:文件以一系列数据块的方式传送,有一个或多个头字节,头字节包括一个计数域的描述符代码。计数域指出数据块的总长度,以此标记下一个块的开始。描述符定义了文件的最后块(EOF),记录的最后块(EOR),重新开始标记和可疑数据。
 压缩模式:ftp可以传输的数据有三种,常规数据,用字节串方式传送;压缩数据;控制信息,用双字节的escape序列发送。

3. 建立数据连接
 建立连接前需要指定适当的端口和选择传输参数,客户端和服务端有缺省的数据端口。用户进程缺省数据端口与控制连接端口相同,服务进程缺省数据端口与服务端控制连接端口相邻。

4. 关闭数据连接
 数据连接的初始化和关闭都是服务端负责的;在以下情况之一,服务器会关闭数据连接:
 user-DTP发出关闭连接指令ABORT;
 数据传输已传输完全毕;
 用户用一个指令改变了端口;
 控制连接关闭;
 发生了无可挽回的错误。
四.文档定义的FTP指令
指令的格式:指令 空格 参数 结束符,有些指令可能有多个参数

4.1 访问控制指令
 USER<用户名> :指定登录用户名;SP即空格。

PASS<口令> :指定登录密码。

ACCT<账号> :指令账号,用于登录或进行一些特殊访问。
CWD<路径> :改变工作路径。
CDUP :返回上一级目录
SMNT<路径> :允许用户在不改变登录和账户信息状态下加载不同文件系统数据结构。(没明白)
QUIT :退出登录

REIN :重新初始化,退出登录,清除所有IO和账户信息,且允许正在运行的传输工作完成。
4.2 传输参数设置指令
 PORT<主机-端口> :h1,h2,h3,h4,a1,a2 告诉服务端口要初始化的数据连接端口,主动模式。

PASV :要求服务端在一个非缺省数据端口监听以等待来自客户端有数据连接,并返回服务端地址和正在监听的端口,被动模式。

TYPE<类型码-[第二个参数]> :指定传输参数。

STRU<文件的结构码> :F表示文件结构,R表示记录结构,P是页结构。
MODE<传输模式码> :S是流模式,B块模式,C压缩模式。
4.3FTP服务指令
 RETR<路径> :要求服务端将路径指定的文件传送到另一端,通常与STRO指令合用。

STOR<路径> :要求服务端接收数据并存储到路径目录下,替代同名文件或创建新文件。 STOU :唯一保存,要求将文件保存在当前目录,且文件名唯一。
APPE<路径> :将接收到的数据追加到指定文件中。

ALLO<十进制整数> [ OR<十进制整数>] :在有些主机上,要手动为新文件分配空间。
REST :后跟适当的文件重传命令,该命令要求(要求谁?)跳到文件指定的数据检查点,以便从该处重新传送,完成断点传输。
RNFR<路径> :指定一个需要被改名的文件,与RNTO使用。
RNTO<路径> :命名一个文件。

ABOR :告诉服务放弃之前的FTP服务指令,放弃示完成的指令,关闭数据连接。
DELE<路径> :删除文件。
RMD<路径> :删除目录。
MKD<路径> :创建目录。
PWD :返回当前工作目录。
LIST<路径> :返回路径目录下文件列表到被动DTP,如果没有路径,则返回当前目录文件列表。
NLIST<路径> :返回路径目录下文件列表到客户端,如果没有路径,则返回当前目录文件列表。

SYST :查找服务器操作系统类型。

NOOP :要求服务器发回OK回应,没有其他影响。

    推荐阅读