数据连接的重用:在使用流式数据传输模型时,文件结束通过关闭连接指示。如果要传送多个文件时就会出麻烦,解决的方法有两个,一个是确定非默认端口,另一个是使用另一种传输模式。就传输模式而言,流传输模式是不安全的,因此无法确定连接是暂时还是永久关闭。其它传输模式不通过关闭连接表示文件结构,它们可以通过FTP命令决定传送结构。因此使用这些传输模式可以在保持连接的情况下传送多个文件。
3.4. 传输模式
有三种传输模式:一种将数据格式化并考虑重新开始过程;一种压缩数据;一种是不经过处理(少量处理)传送。所有数据传输必须以一个EOF结束,它可以显式给出,也可以通过关闭连接隐式给出。对于记录文件,所有EOR是显式的,包括最后一个记录。对于以页结构传送的文件,使用“最后一页”表示结束。从这里开始,下文中我们提到的字节指的是“传输字节”。
为了进行标准化传送,传送主机必须把行结束或记录结束的内部表示转化为传输模式和文件结构指定的形式传送,接收方则进行相反的工作。IBM大型机的记录计数域可能不能为其它主机识别,所以记录结束标记在流模式下以双字节控制码传送,在块或压缩模式下以标记位传送。而ASCII或EBCDIC的行结束则则<CRLF>或<NL>指示。这样的转换需要时间,所以相同的系统在传送文本文件时采用二进制或流表示比较合适。下面是FTP定义的传输模式:
3.4.1. 流模式
数据以字节流的形式传送。使用的表示类型没有限制,允许记录结构。在记录结构文件EOR和EOF表示为双字节控制码。第一字节全为0,后一字节为转义字符。当第二位值为1时表示EOR,为2时表示EOF,如果要同时表示EOR和EOF,值为3。全1字节作为数据发送时必须使用双字节传送,其中数据保存在第二个字节内。如果是文件结构,通过发送方关闭连接表示EOF,接收到的所有数据就是文件内容。
3.4.2. 块模式
文件以块形式传送,块带有自己的头部分。头字节包括计数域和描述子代码。计数域说明了数据块的字节数,描述子代码定义了以下内容:EOF,EOR重新开始标记或怀疑错误数据。怀疑错误数据不是为了进行差错控制,它是为了站点间交换特定数据,传送时不管本地错误(如硬盘错误)而只管传送,但是传送时可要指出,这个数据可能有错。在此模式下可以使用记录结构,也可以使用相应的数据表示。头字节的结构如下图所示:
|
描述子 8位 |
字节计数 16位 |
描述子代码由在描述子字节中的位标记说明,下面是已经指定的四种代码及其意义:
|
代码 |
意义 |
|
128 |
数据块结束是EOR |
|
64 |
数据块结束是EOF |
|
32 |
数据块内有怀疑错误 |
|
16 |
数据块是重新开始标记 |
以这种编码,对于特定块可能存在多个描述子编码条件,所需要的位必须全部设置。重新开始标记包括在数据流中,它作为8位整数代表在控制连接上使用语言的可打印字节,但<SP>不得出现在其中。例如要传送6字节标记,下面就是例子:
|
Descrptr code = 16 |
Byte count = 6 |
|
Marker 8位 |
Marker 8位 |
Marker 8位 |




