FTP工作原理

FTP是一种文件传输协议:用来上传和下载,实现远程共享文件,和统一管理文件。

工作原理 : 用于互联网上的控制文件的双向传输 是一个应用程序。工作在TCP/IP协议簇的,其传输协议是TCP协议提高文件传输的共享性和可靠性,使用C/S模式的工作方式。连接时同时处理服务器和客户端的连接命令和数据传输,FTp将命令和数据分开传输,提高传输效率。

两种传输模式:

文本模式:ASCII模式美国信息交换信息标准码 这种模式传输文件使用ASCII标准字符序列,一般只用于传输文件文件的传输。

二进制模式:又称为Binary这种模式不会转换文件中的字符序列,跟适合传输程序图片等非文本文件。

Vsftpd可支持最大15000并发连接数

FTP有两种模式:

主动模式:客户端使用随即端口与服务器的21号端口建立控制连接,服务器端主动的使用20号端口向客户端的随机端口建立据连接,经过三次握手后完成。

FTP文件传输服务_端口号

被动模式:客户端使用随即端口向服务器的21号端口建立管理连接,服务器使用建立好的管理通道向客户端发送一个随机的端口号,然后客户端随机的向服务器端发过来的端口经过三次握手后建立好这个数据连接。

使用两个端口:分别时控制端口和数据端口,控制端口使用21,数据端口主动模式先是20,被动模式下是一个随机的端口号。

FTP文件传输服务_端口号_02

一、FTP服务

(1)、安装

在主机101上安装vsftpd服务,并启用该服务。

FTP文件传输服务_端口号_03

(2)、打开一个客户端,安装ftp客户端软件,并访问测试。

FTP文件传输服务_客户端_04

查看vsftpd的配置文件,vsftpd的配置文件在/etc/vsftpd/vsftpd.conf中

FTP文件传输服务_服务器_05

以下命令可以将#号开头的行删掉

FTP文件传输服务_客户端_06

二、匿名访问FTP服务

1、准备匿名FTP访问目录

进入到目录pub中,然后再pub中创建测试文件“aaa”

FTP文件传输服务_服务器_07

2、开放匿名用户

编辑/etc/vsftpd/vsftpd.conf,添加以下内容,并重启该服务:

FTP文件传输服务_客户端_08

anonymous_enable=YES;  是否启用匿名用户

anon_upload_enable=(yes/no); 控制匿名用户对文件(非目录)上传权限

anon_mkdir_write_enable=(yes/no); 控制匿名用户对文件夹的创建权限

anon_other_write_enable=(yes/no); 控制匿名用户对文件和文件夹的删除和重命名

3、修改权限

FTP文件传输服务_客户端_09

将目录pub属主改为ftp,操作权限改为755。

4、测试匿名FTP服务器

用102客户端测试访问:

FTP文件传输服务_服务器_10


在Name后输入“ftp”,然后回车,在password处直接点回车,无需输入密码。

FTP文件传输服务_端口号_11

首先进入到pub中,执行“get aaa”将文件“aaa”下载到客户端。

FTP文件传输服务_客户端_12

使用"bye"或者“quit”都可以退出。在客户端创建文件"bbb"

FTP文件传输服务_客户端_13

再次进入登录服务器中,同样进入pub中,然后将“bbb”文件上传到服务器,使用“put bbb”命令即可:

FTP文件传输服务_端口号_14

三、用户验证的FTP服务

1、本地用户验证配置

同样先编辑/etc/vsftpd/vsftpd.conf,先将添加的匿名用户注释掉,然后添加用户验证的相关配置,并重启该服务。

FTP文件传输服务_服务器_15

创建名为zhangsan的用户,并为张三设置密码。

FTP文件传输服务_端口号_16

2、客户端测试

在客户端创建文件“ccc”,接着以zhangsan的身份登录。

FTP文件传输服务_服务器_17

将创建的"ccc"文件上传到服务器端

FTP文件传输服务_客户端_18

在服务器端,进入张三的家目录,查看文件“ccc”是否在张三的家目录:

FTP文件传输服务_客户端_19

3、开启root访问权限

默认root等内置的账户不允许访问FTP服务

需要进入/etc/vsftpd中,更改文件user_list和ftpusers,在root账号前加一个注释符#。

FTP文件传输服务_服务器_20

FTP文件传输服务_端口号_21

接着客户端用root账号测试登录:

FTP文件传输服务_端口号_22

四、其他配置

1、修改监听地址与端口

同样编辑/etc/vsftpd/vsftpd.conf,如下图:

FTP文件传输服务_服务器_23

只需添加监听地址和监听端口,并将listen原来的no改为yes,将listen_ipv6后的yes改为no,然后重启该服务。

2、客户端测试

在登陆时,更改过ftp的端口号后,在后面需要跟上更改后的端口号才可以进行登录。

FTP文件传输服务_客户端_24

3、使用FTP的被动模式

同样修改vsftpd的配置文件,添加端口号的范围,以及开启被动模式。然后重启该服务;

FTP文件传输服务_端口号_25

如果用被动模式,是客户端向服务器发起数据连接,要保证服务器的防火墙是关闭的

如果用主动模式,是服务器向客户端发起数据连接,要保证客户端的防火墙是关闭的

在客户端进行验证,将服务器的文件下载到客户端,如下图:

FTP文件传输服务_客户端_26


在服务器使用“netstat -anpt | grep vsftpd”命令,查看使用的端口是否在20000~20020之间:

FTP文件传输服务_服务器_27

4、修改系统用户的ftp根目录

在匿名用户添加“anon_root=/opt/ftp”,接着创建“/opt/ftp”:

FTP文件传输服务_端口号_28

FTP文件传输服务_客户端_29

然后进入新创建的目录中,创建一个文件“qqq”:

FTP文件传输服务_服务器_30

在客户端登录101服务器,并查询“qqq”文件:

FTP文件传输服务_客户端_31