现在的位置: 首页 > 综合 > 正文

TCP/IP-16-FTP

2013年10月09日 ⁄ 综合 ⁄ 共 3396字 ⁄ 字号 评论关闭
第27章FTP:文件传送协议
27.1 引言
FTP是另一个常见的应用程序。它是用于文件传输的I n t e r n e t标准。
我们必须分清文件传送( file transfer )和文件存取(file access) 之间的区别,
前者是FTP提供的,后者是如NFS(S u n的网络文件系统等)应用系统提供的。
由FTP提供的文件传送是将一个完整的文件从一个系统复制到另一个系统中。
要使用FTP,就需要有登录服务器的注册帐号,或者通过允许匿名FTP的服务器来使用。
与Telnet类似,FTP最早的设计是用于两台不同的主机,
这两个主机可能运行在不同的操作系统下、使用不同的文件结构、并可能使用不同字符集。
但不同的是,Telnet获得异构性是强制两端都采用同一个标准:使用7比特ASCII码的N V T。
而FTP是采用另一种方法来处理不同系统间的差异。FTP支持有限数量的文件类型(ASCII,二进制,等等)
和文件结构(面向字节流或记录)。参考文献959 [Postel 和Reynolds 1985] 是FTP的正式规范。
该文献叙述了近年来文件传输的历史演变。

27.2 FTP协议
FTP与我们已描述的另一种应用不同,它采用两个T C P连接来传输一个文件。
1) 控制连接以通常的客户服务器方式建立。
服务器以被动方式打开众所周知的用于FTP的端口( 2 1),等待客户的连接。
客户则以主动方式打开T C P端口2 1,来建立连接。控制连接始终等待客户与服务器之间的通信。
该连接将命令从客户传给服务器,并传回服务器的应答。
由于命令通常是由用户键入的,所以I P对控制连接的服务类型就是“最大限度地减小迟延”。
2) 每当一个文件在客户与服务器之间传输时,就创建一个数据连接。。
由于该连接用于传输目的,所以I P对数据连接的服务特点就是“最大限度提高吞吐量”。
27.2.1 数据表示
FTP协议规范提供了控制文件传送与存储的多种选择。
在以下四个方面中每一个方面都必须作出一个选择。
1. 文件类型
(a) ASCII码文件类型(默认选择)文本文件以NVT ASCII码形式在数据连接中传输。
这要求发方将本地文本文件转换成NVT ASCII码形式,而收方则将NVT ASCII码再还原成本地文本文件。
(b) EBCDIC文件类型该文本文件传输方式要求两端都是E B C D I C系统。
(c) 图像文件类型(也称为二进制文件类型) 数据发送呈现为一个连续的比特流。
通常用于传输二进制文件。
(d) 本地文件类型该方式在具有不同字节大小的主机间传输二进制文件。每一字节的比特数由发方规定。
对使用8 bit字节的系统来说,本地文件以8 bit字节传输就等同于图像文件传输。
2. 格式控制
该选项只对ASCII和E B C D I C文件类型有效。
(a) 非打印(默认选择)文件中不含有垂直格式信息。
(b) 远程登录格式控制文件含有向打印机解释的远程登录垂直格式控制。
(c) Fortran 回车控制每行首字符是F o r t r a n格式控制符。
3. 结构
(a) 文件结构(默认选择)文件被认为是一个连续的字节流。不存在内部的文件结构。
(b) 记录结构该结构只用于文本文件( ASCII或E B C D I C)。
(c) 页结构每页都带有页号发送,以便收方能随机地存储各页。
该结构由TO P S - 2 0操作系统提供(主机需求R F C不提倡采用该结构)。
4. 传输方式
它规定文件在数据连接中如何传输。
(a) 流方式(默认选择)文件以字节流的形式传输。对于文件结构,发方在文件尾提
示关闭数据连接。对于记录结构,有专用的两字节序列码标志记录结束和文件结束。
(b) 块方式文件以一系列块来传输,每块前面都带有一个或多个首部字节。
(c) 压缩方式一个简单的全长编码压缩方法,压缩连续出现的相同字节。
• 类型:ASCII或图像。
• 格式控制:只允许非打印。
• 结构:只允许文件结构。
• 传输方式:只允许流方式。
这就限制我们只能取一、两种方式: ASCII或图像(二进制)。
该实现满足主机需求R F C的最小需求(该R F C也要求能支持记录结构,但只有操作系统支持它才行,而U n i x不行)。
很多非U n i x的实现提供了处理它们自己文件格式的FTP功能。
主机需求R F C指出“FTP协议有很多特征,虽然其中一些通常不实现,
但对FTP中的每一个特征来说,都存在着至少一种实现”。
27.2.2 FTP命令
命令和应答在客户和服务器的控制连接上以NVT ASCII码形式传送。
这就要求在每行结尾都要返回C R、L F对(也就是每个命令或每个应答)。
从客户发向服务器的Telnet命令只有中断进程( < I A C , I P >)和Telnet的同步信号。
我们将看到这两条Telnet命令被用来中止正在进行的文件传输,或在传输过程中查询服务器。
另外,如果服务器接受了客户端的一个带选项的Telnet命令(W I L L,W O N T,D O或D O N T),
它将以DONT 或WONT响应。这些命令都是3或4个字节的大写ASCII字符,其中一些带选项参数。
从客户向服务器发送的FTP命令超过3 0种。
给出了一些常用命令,其中大部分将在本章再次遇到。
ABOR --->放弃先前的FTP命令和数据传输
LIST filelist --->列表显示文件或目录
PASS password --->服务器上的口令
PORT n1,n2,n3,n4,n5,n6 --->客户端I P地址(n1 .n2 .n3 .n4)和端口
QUIT --->从服务器注销
RETR filename --->检索(取)一个文件
STOR filename --->存储(放)一个文件
SYST --->服务器返回系统类型
TYPE type --->说明文件类型:A表示ASCII码,I表示图像
USER username --->服务器上用户名

27.2.4 连接管理
数据连接有以下三大用途:
1) 从客户向服务器发送一个文件。
2) 从服务器向客户发送一个文件。
3) 从服务器向客户发送文件或目录列表。
FTP服务器把文件列表从数据连接上发回,而不是控制连接上的多行应答。
这就避免了行的有限性对目录大小的限制,
而且更易于客户将目录列表以文件形式保存,而不是把列表显示在终端上。
我们已说过,控制连接一直保持到客户-服务器连接的全过程,但数据连接可以根据需要随时来,随时走。
那么需要怎样为数据连接选端口号,以及谁来负责主动打开和被动打开?
首先,我们前面说过通用传输方式是流方式,并且文件结尾是以关闭数据连接为标志。
这意味着对每一个文件传输或目录列表来说都要建立一个全新的数据连接。
其一般过程如下:
1) 正由于是客户发出命令要求建立数据连接,所以数据连接是在客户的控制下建立的。
2) 客户通常在客户端主机上为所在数据连接端选择一个临时端口号。客户从该端口发布一个被动的打开。
3) 客户使用PORT命令从控制连接上把端口号发向服务器。
4) 服务器在控制连接上接收端口号,并向客户端主机上的端口发布一个主动的打开。
服务器的数据连接端一直使用端口20。服务器总是执行数据连接的主动打开。
通常服务器也执行数据连接的主动关闭,除非当客户向服务器发送流形式的文件时,需要客户来关闭连接.
客户也有可能不发出P O RT命令,而由服务器向正被客户使用的同一个端口号发出主动打开,来结束控制连接。
这是可行的,因为服务器面向这两个连接的端口号是不同的:一个是2 0,另一个是2 1。

27.4 小结
FTP是文件传输的I n t e r n e t标准。
与多数其他T C P应用不同,它在客户进程和服务器进程之间使用两个T C P连接—一个控制连接,
它一直持续到客户进程与服务器进程之间的会话完成为止;
另一个按需可以随时创建和撤消的数据连接。
FTP使用的关于数据连接的连接管理让我们更详细地了解T C P连接管理需求。
我们看到T C P在不发出P O RT命令的客户进程上对2 M S L等待状态的作用。
FTP使用NVT ASCII码做跨越控制连接的所有远程登录命令和应答。
数据传输的默认方式通常也是NVT ASCII码。
我们看到较新的U n i x客户进程会自动发送命令来查看服务器是否是8b i t字节的U n i x主机,
并且如果是,那么就使用二进制方式来传输所有文件,那将带来更高的效率。
我们也展示了匿名FTP的一个例子,它是在I n t e r n e t上分发软件的常用形式。

习题
27.1 如果客户对第2个数据连接做一次主动打开,而不是由服务器来做,那将发生什么变化?
27.2 在本章FTP客户例子中,我们加入诸如由客户输出行的行注释。
如果不看源代码,我们如何确定这些不是来自服务器?

抱歉!评论已关闭.