文件传输协议FTP
文件传输协议 FTP
文件传送协议(File Transfer Protocol):提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力。FTP 是基于客户/服务器(C/S)的协议,使用TCP可靠的传输服务。用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。依照FTP协议提供服务,进行文件传送的计算机就是 FTP服务器。连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端。
FTP工作原理
FTP服务器进程由两大部分组成:一个主进程,负责接收新的请求;另外有若干从属进程,负责处理单个请求。
工作步骤如下:
-
打开熟知端口 21 (控制端口),使客户进程能够连接上。
-
等待客户进程发连接请求。
-
启动从属进程来处理客户进程发来的请求。主进程与从属进程并发执行,从属进程对客户进程的请求处理完毕后即终止。
-
回到等待状态,继续接收其他客户进程的请求。
控制连接和数据连接
FTP在工作时使用两个并行的TCP连接:一个是控制连接(端口号21),一个是数据连接(端口号20)。
控制进程和数据传送进程都属于从属进程。
FTP的局限性
FTP并非对所有的数据传输都是最佳的,例如计算机A上运行的应用程序要在远地计算机B的一个很大的文件末尾添加一行信息,若要使用FTP,则要先将此文件从计算机B传送到计算机A,添加这一行信息后,再用FTP将文件传输回计算机B.来回传送很花时间,实际上这种传送是不必要的,因为计算机A并没有使用该文件的内容。
网络文件系统NFS采用的则是另一种思路,NFS允许应用进程打开一个远地文件,并能在该文件的某一个特定位置开始读写数据。这样,如果要像上面那样添加数据,在网络上传送的只是少量的修改数据。
FTP的数据连接
数据连接有两种传输模式:主动模式 PORT和被动模式 PASV。PORT模式的工作原理:客户端连接到服务器的 21 端口登录成功后要读取数据时,客户端随机开放一个端口,并发送命令告知服务器,服务器收到PORT 命令和端口号后,通过 20端口和客户端开放的端口连接,发送数据。PASV模式的不同点是,客户端要读取数据时,发送PASV命令到服务器,服务器在本地随机开放一个端口,并告知客户端,客户端再连接到服务器开放的端口进行数据传输。可见,是用 PORT模式还是PASV模式,选择权在客户端。简单概括为,主动模式传送数据是“服务器”连接到“客户端”的端口;被动模式传送数据是“客户端”连接到“服务器”的端口。
很多教材并未介绍这两种模式,如无特别说明可默认为采用主动模式。