FTP(File Transfer Protocol)是TCP/IP协议组中的协议之一,该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。假设有两台不同的主机,运行在不同的操作系统下、使用不同的文件结构和字符集。如果需要将一个完整的文件从一台主机复制到另一个主机上去,则可以采用FTP的传输方式。Telnet协议也可以完成不同操作系统之间的文件传输。但与Telnet不同的是:FTP采用2个TCP连接来传输文件,而不需要强制两端都采用同一个标准。
FTP采用2个TCP连接来传输文件:
1、控制连接
以客户端/服务器方式建立。服务器以被动方式打开用于FTP的公共端口21,等待客户端来连接;客户端则以主动方式打开公共端口21,发起连接的建立请求。
控制连接始终等待客户端和服务器之间的通信,并且将相关命令从客户端传送给服务器,同时将服务器的应答传送给客户端。
2、数据连接
服务器的数据连接端使用端口20。服务器执行主动打开数据连接,通常也执行主动关闭数据连接,但是,当客户端向服务器发送流形式的文件时,则需要客户端关闭数据连接。
FTP中传输方式是流方式,并且文件结尾以关闭数据连接为标志,所以对每一个文件传输或目录列表来说,都要建立一个全新的数据连接。因此,当一个文件在客户端与服务器之间传输时,一个数据连接就建立起来了。
建立FTP数据连接的过程如下:
如下图所示,假设FTP客户端用于控制连接的临时端口号为2345,用户数据连接的临时端口号是2346。
![FTP数据连接建立过程详解_FTP](http://u.jimdo.com/www24/o/s0999f62654d374da/img/i625365d9f4362b88/1291905823/std/p_w_picpath.jpg)
1、服务器以被动方式打开端口21,等待连接。
2、客户端发起控制连接的主动打开,建立连接。
3、客户端用于控制连接的临时端口,与服务器21号端口之间的控制连接建立完毕。
4、客户端发起建立数据连接的命令。
5、客户端为该数据连接选择一个临时端口号,并且使用PORT命令通过控制连接把端口号发送给服务器。
6、服务器通过控制连接的接收端口号,向客户端发布一个主动的数据连接的打开。
7、客户端用于数据连接的临时端口,与服务器的20号端口之间的数据连接建立完毕。
注意:客户端也有可能不发出PORT命令,而由服务器向正被客户端使用的同一个端口号发出主动打开消息,用当前建立控制连接的临时端口来进行数据连接,这样控制连接被迫关闭。通过此方式来结束控制连接。