5.1 FTP与VSFTP


文件传输协议File Transfer Protocol,FTP),顾名思义,是在文件传输时使用的通信协议,它出现在TCP/IP网络和Internet上的时间很早,在HTTP尚未广为流行前,FTP便是网络传输不可或缺的工具。
FTP特色
虽然目前WWW已取代了FTP的部分功能,但它至今仍具有独树一帜的特色。
◆交互式访问
FTP允许用户和服务器之间,利用交互的方式来访问服务器资源,例如用户可要求FTP服务器列出某一目录中的文件列表,或是使用二进制文件的模式进行传输。
◆指定下载的文件格式
FTP允许客户端指定文件保存的格式,例如用户在访问FTP服务器的数据时可以指定包含文本文件或二进制文件,同时也可以指定使用ASCII或EBCDIC的文本文件格式。

ftp> binary
# 以二进制模式进行传输
200 Switching to Binary mode.
◆稳定的传输机制
FTP与其他通信协议最大的不同是,它使用两个连接端口来和客户端连接:TCP 20和TCP 21,如图5-1所示。其中连接端口TCP 20用来传递数据,而TCP 21则负责传输过程的控制,这种设计可以支持多个客户端同时连接FTP服务器,并具有稳定的优点。
图5-1   使用两个连接端口与客户端通信

◆身份验证控制
在用户访问服务器资源前,FTP服务器会要求用户输入账户名称及口令以验证身份。如果允许匿名访问,则用户只管输入“anonymous”为账户名称,而口令将不进行验证。
Name (ftp.fc5linux.com:jack): jack
# 输入用户账号名称
331 Please specify the password.
Password:
# 输入用户账号口令
30 Login successful.
◆提供跨平台的数据交换
FTP允许在不同的网络架构或操作系统间传递文件,例如Linux和Windows操作系统之间,因此是极好的跨平台解决方案。
服务器与客户端数据交换
FTP使用TCP为传输时的通信协议,因此它可提供可信度较高的面向连接的传输,FTP服务器和客户端计算机数据交换的过程如下,图5-2给出了服务器和客户端数据交换过程。
1) FTP客户端使用“三次握手”的方式,来与FTP服务器建立TCP会话。
2) FTP服务器利用TCP 21连接端口传送和接收FTP控制信息,它主要是用来监听客户端的连接请求,在建立连接后,这个连接端口将在会话进行时全程打开。
3) FTP服务器另外使用TCP 20连接端口传送和接收文件可能是ASCII或二进制文件),但它会在文件传输后立即关闭。
4) FTP客户端在向FTP服务器提出连接请求时会动态指定一个连接端口号,通常这些客户端指定的连接端口号由1024到65535,因为0到1023已由IANAInternet Assigned Numbers Authority)预先指定给通信协议或其他的服务使用。
5) 在FTP会话建立后,客户端会打开一个连接端口以连接到服务器上的TCP 21连接端口。
6) 当文件开始传输时,客户端会打开另一个连接端口以连接到服务器上的TCP 20连接端口,而且每一次文件传输时,客户端都会打开另一个新的连接端口传送文件。
图5-2   服务器和客户端数据交换过程
FTP架构
FTP是一种客户/服务器架构的通信协议,因此在两台主机间传递文件时,其中一台必须执行FTP服务器软件,例如VSFTP,而另一台则需要执行FTP客户端程序,例如IE 6.0或是ftp命令。一般在文件传递时包含两种形式:
◆下载:文件由FTP服务器传送到客户端。
◆上传:文件由客户端传送到FTP服务器。
VSFTP服务器安装
在Fedora Core 5中,内置的FTP服务器软件为VSFTP,它是Very Secure FTP非常安全的FTP)的缩写,表示它强调的是其安全性控制,可以在操作系统安装时选择安装VSFTP。
由于在默认的情形下,Fedora Core 5并不会安装VSFTP服务器软件包vsftpd),因此必须利用“软件包管理者”来查找名为“vsftpd”的服务器软件包,如图5-3所示。
图5-3   安装VSFTP服务器软件包
在安装VSFTP服务器后,最简单的启动方法如下:
[root@ns1 ~]# /etc/rc.d/init.d/vsftpd start
正在启动 vsftpd 中的 vsftpd:  确定  ]
如果要停止VSFTP服务器,可以使用以下的命令:
[root@ns1 ~]# /etc/rc.d/init.d/vsftpd stop
正在关闭 vsftpd:   确定  ]
可以利用以下的方法来重新启动VSFTP服务器:
[root@ns1 ~]# /etc/rc.d/init.d/vsftpd restart
正在关闭 vsftpd:    确定  ]
正在启动 vsftpd 中的 vsftpd:  确定  ]
因为FTP服务是服务器相当重要的工作,所以一般应该在引导时自动启动,以节省每次手动启动的时间,并且避免因为忘记启动而导致的服务器停止服务。
要在引导时自动启动VSFTP服务器,可以使用以下的chkconfig命令:
[root@ns1 ~]# chkconfig --level 5 vsftpd on
[root@ns1 ~]# chkconfig --list | grep vsftpd
vsftpd  0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:打开 6:关闭
以上命令表示如果系统执行Run Level 5时,就会自动启动VSFTP服务器vsftpd),也可以配合--list参数来显示每个运行级别是否自动执行VSFTP服务器。
注意:有关其他VSFTP在引导时自动启动的方法,请参考之前章节说明。
测试VSFTP服务器
在完成以上安装、启动及设置步骤后,可以通过telnet命令登录到VSFTP服务器上的21连接端口,以测试VSFTP服务器是否正确启动,以下是一个简单的示例:
[root@ns1 root]# telnet ftp.fc5linux.com 21
Trying 192.168.0.1...
Connected to ns1.fc5linux.com (192.168.0.1).
Escape character is '^]'.
220 (vsFTPd 1.2.1)

^]
telnet> q

回书目   上一节   下一节

相关内容