6.5 文件传送协议FTP
# 6.5 文件传送协议FTP
本节课我们介绍文件传送协议FTP。
将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中,是一项基本的网络应用,即文件传送
文件传送协议FTP是因特网上使用的最广泛的文件传送协议
- FTP提供交互式的访问,允许客户指明文件的类型与格式,例如指明是否使用ASCII,并允许文件具有存取权限。比如访问文件的用户必须经过授权并输入有效的口令
- FTP屏蔽了各计算机系统的细节,因而适用于在异构网络中任意计算机之间的传送文件
在因特网发展的早期阶段,用FTP传送文件,约占整个因特网的通信量的1/3,而由电子邮件和域名系统所产生的通信量还要小于FTP所产生的通信量,只是到了1995年万维网的通信量才首次超过了FTP。
接下来我们举例说明FTP的应用。如图所示FTP采用客户服务器方式,因特网上的FTP客户计算机可将各种类型的文件上传到FTP服务器计算机,FTP客户计算机也可以从FTP服务器计算机下载文件,根据应用需求的不同,FTP服务器可能需要一台高性能高可靠性的服务器计算机,也可能只需要一台普通的个人计算机即可。
例如本例也可以采用普通的个人计算机作为FTP服务器计算机,为了简单起见,我们假设FTP客户计算机与FTP服务器计算机处于同一个局域网中,我们在FTP服务器计算机中创建FTP服务器,可以使用第三方的FTP服务器软件,也可以使用操作系统自带的FTP服务器软件,例如我们可以在Windows系统中使用其自带的FTP服务器功能,创建一个FTP服务器站点,具体方法比较简单,请同学们在网上自行查阅。
假设这是我所创建的FTP服务器的IP地址,我们可以在FTP客户计算机中需要浏览器软件,通过该地址来访问FTP服务器,需要注意的是这里使用的是文件传送协议FTP,而不是浏览器最常用的超文本传送协议HTTP
我们也可以在FTP客户计算机中需要Windows系统自带的命令行工具,通过该地址来访问FTP服务器,例如这是连接FTP服务器,采用匿名登录,因此无需输入密码,登录成功后可以列出FTP服务器当前目录下的所有文件和文件夹,可从FTP服务器下载文件,也可向FTP服务器上传文件,命令行方式需要用户记住相关命令,这对普通用户而言并不友好,因此大多数用户在FTP客户计算机上使用第三方的FTP客户工具软件,通过友好的用户界面来完成FTP服务器的登录以及文件的上传和下载。
FTP的常见用途是在计算机之间传输文件,尤其是用于批量传输文件,FTP的另一个常见用途是让网站设计者将构成网站内容的大量文件,批量上传到他们的web服务器。
接下来我们介绍FTP的基本工作原理,如图所示FTP服务器监听熟知端口号21,FTP客户随机选择一个临时端口号,与其建立TCP连接,这条TCP连接用于FTP客户与服务器之间传送FTP的相关控制命令,也就是说这条TCP连接是FTP客户与服务器之间的命令通道,当有数据要传输时,FTP客户通过命令通道告知FTP服务器来与自己的另一个临时端口号建立TCP连接,即建立数据通道,这是FTP客户随机选择的另一个端口号,FTP服务器使用自己的熟知端口号20与其建立TCP连接,这条TCP连接用于FTP客户与服务器之间传送文件,也就是说这条TCP连接是FTP客户与服务器之间的数据通道,
由于在建立数据通道时,FTP服务器主动连接FTP客户,因此称为主动模式,需要注意的是控制连接在整个会话期间一直保持打开,用于传送FTP相关的控制命令,而数据连接用于文件传输,在每次文件传输时才建立,传输结束就关闭。
再来看被动模式,对于FTP客户与服务器之间命令通道的建立,它与主动模式并没有什么。不同之处,在于当有数据要传输时,FTP客户通过命令通道通知FTP服务器开启某个协商好的临时端口,被动等待来自FTP客户的TCP连接,以建立数据通道,这是FTP服务器使用的与FTP客户协商好的临时端口号,这是FTP客户随机选择的另一个端口号。FTP客户发起与FTP服务器的TCP连接,以建立数据通道,由于在建立数据通道时,FTP服务器被动等待FTP客户的连接,因此称为被动模式。
最后我们来做两个相关的练习题,这是计算机专业考研全国统考计算机网络部分2009年的题40,答案是选项a
FTP客户和服务器之间要建立以下两个并行的TCP连接,
一个是控制连接,在整个会话期间一直保持打开,用于传送FTP相关控制命令,
另一个是数据连接用于文件传输,在每次文件传输时才建立,传输结束就关闭。
这是2017年的题40。答案是选项c FTP客户和服务器之间要建立控制连接和数据连接,这两个并行的TCP连接,控制连接在整个会话期间都保持打开状态,而数据连接在每次文件传输时才建立,传输结束就关闭。默认情况下,FTP使用TCP21号端口进行控制连接,TCP20号端口进行数据连接,但是是否使用TCP20号端口建立数据连接与传输模式有关,主动方式使用TCP20号端口,而被动方式由服务器和客户端自行协商决定
本节课的内容小结如下