FTP协议的主动模式和被动模式的区别

最近准备作一个《FtpCopy系列教程》,主要讲解Ftp协议主动模式和被动模式的区别、以及FTP服务器的安装部署,而后经过几个经常使用实例演示,详细讲解如何使用FtpCopy进行数据自动备份。html

什么是FTP协议?

FTP的中文名称是“文件传输协议”,是File Transfer Protocol三个英文单词的缩写。FTP协议是TCP/IP协议组中的协议之一,其传输效率很是高,在网络上传输大的文件时,常常采用该协议。windows

一个完整的FTP由FTP服务器FTP客户端组成,客户端能够将服务器上的文件经过FTP协议下载到本地,也能够将本地数据经过FTP协议上传到服务器上。浏览器

(1)服务器端须要安装FTP服务软件,经常使用的有FileZilla Server、IIS、Serv-U、OSSFTP等等。安全

  • 不一样的FTP软件对FTP协议标准支持有所差异,从个人使用经验感受FileZilla Server是对FTP协议支持最好的软件,它具备如下几个特色:体积小(2M左右)、免费开源、操做简单、功能完善(咱们所须要的有功能它基本都支持)。服务器

  • IIS对FTP协议的支持也很不错。网络

  • Serv-U有几个命令支持不是很好,这个软件也是收费软件,没感受比FileZilla Server好多少。并发

  • OSSFTP是阿里云对象存储提供的FTP Server,对FTP标准协议支持就更差了。ide

(2)FTP客户端软件就比较多了,经常使用的有FileZilla、FlashFXP、WinSCP、甚至在浏览器和windows资源管理器中输入FTP地址均可以当作FTP客户端来使用。咱们的FtpCopy也属于FTP客户端。阿里云

FTP协议的两个TCP链接

左侧为客户端,右侧为FTP服务器,不管是上传仍是下载,客户端与服务器之间都会创建2个TCP链接会话,绿色是控制链接,红色的是数据链接。其中,控制链接用于传输FTP命令,如:删除文件、重命名文件、下载文件、列取目录、获取文件信息等。真正的数据传输时经过数据链接来完成的。操作系统

默认状况下,服务器21端口做为命令端口,20端口为数据端口。但被动模式下就有所差异了。

刚接触FTP的朋友,常常搞不清楚FTP的主动模式和被动模式,形成链接被防火墙拦截,下面咱们就详细了解下FTP的这两种模式:

FTP主动模式

首先,来了解下FTP的主动模式,主动模式是FTP的默认模式,也称为PORT模式。

1. 在主动模式下,客户端会开启N和N+1两个端口,N为客户端的命令端口,N+1为客户端的数据端口。

第一步,客户端使用端口N链接FTP服务器的命令端口21,创建控制链接并告诉服务器我这边开启了数据端口N+1。

第二步,在控制链接创建成功后,服务器会使用数据端口20,主动链接客户端的N+1端口以创建数据链接。这就是FTP主动模式的链接过程。

咱们能够看到,在这条红色的数据链接创建的过程当中,服务器是主动的链接客户端的,因此称这种模式为主动模式。

上面这张图是经过netstat命令查看到的ftp主动模式下TCP的链接信息,首先客户端使用49195端口链接服务器21端口创建控制链接,而后服务器使用20端口链接客户端49197端口创建数据链接

这里须要补充下,客户端的命令端口和数据端口实际中并非有些文章写道的N和N+1的关系,两个端口比较接近而已。

2. 主动模式有什么利弊呢?

主动模式对FTP服务器的管理有利,由于FTP服务器只须要开启21端口的“准入”和20端口的“准出”便可。

但这种模式对客户端的管理不利,由于FTP服务器20端口链接客户端的数据端口时,有可能被客户端的防火墙拦截掉。

3. 如何解决客户端防火墙拦截“数据链接”的创建呢?

(1)若是防火墙开启了“拦截通知”,在使用FTP软件链接服务器时,防火墙会弹出下面这个提醒,只须要点击“容许访问”就能够创建链接了。

(2)若是防火墙没有开启“拦截通知”,则须要咱们的应用程序添加到防火墙的“容许的程序”列表中。如图所示,容许FlashFXP.exe和WinSCP以主动模式链接FTP服务器。

FTP被动模式

上面所讲的是FTP主动模式,简单的理解就是服务器的数据端口20主动链接客户端的数据端口,来创建数据链接,用来传输数据,这个数据链接的创建有可能被客户端防火墙拦截掉。为了解决这个问题就衍生出另一种链接模式---被动模式。被动模式也称为passive模式。

1. 被动模式是如何运做的呢?来看下这张图

第一步,客户端的命令端口N主动链接服务器命令端口21,并发送PASV命令,告诉服务器用“被动模式”,控制链接创建成功后,服务器开启一个数据端口P,经过PORT命令将P端口告诉客户端。

第二步,客户端的数据端口N+1去链接服务器的数据端口P,创建数据链接

咱们能够看到,在这条红色的数据链接创建的过程当中,服务器是被动的等待客户端来链接的,因此称这种模式为被动模式。

上面这张图是经过netstat命令查看到的“被动模式”下的TCP链接状况,首先客户端49222端口去链接服务器的21端口,创建控制链接。而后客户端的49224端口链接服务器的6008端口去创建数据链接

这里有两点须要补充

  • 第一,客户端的命令端口和数据端口实际中并非有些文章写道的N和N+1的关系,两个端口比较接近而已;
  • 第二,服务器的数据端口P是随机的,这个客户端链接过来用的是6008端口,另一个链接过来可能用的就是7009,不过P端口的范围是能够设置的。

2. 被动模式有什么利弊呢?

被动模式对FTP客户端的管理有利,由于客户端的命令端口和数据端口都是“准出”,windows防火墙对于“准出”通常是不拦截的,因此客户端不须要任何多余的配置就能够链接FTP服务器了。

但对服务器端的管理不利。由于客户端数据端口连到FTP服务器的数据端口P时,颇有可能被服务器端的防火墙阻塞掉。

4. 如何解决服务器端防火墙拦截“数据链接”的创建呢?

为了解决P端口的“准入”不被服务器防火墙拦截,须要在服务器端设定P端口的范围,并在防火墙中开启这个范围端口的“准入”。这张图是在FileZilla Server中指定被动模式的数据端口范围为6000-7000,而后在windows防火墙中配置6000-700端口容许“准入”。

  

FTP服务器安全性设置

通常咱们使用FTP主要用于备份下载服务器上的数据,有时也须要将本地的数据上传至服务器上备份。若是服务器在外网之中,服务器的每一个端口的开放都须要严格控制,如何安全的设置咱们的FTP服务器呢,我我的有如下几个使用经验:

1. 合理的设置FTP帐号和权限

为每一个帐号设置密码和权限,好比说:若是只是下载数据,只要给FTP帐号分配文件的read权限和目录的List列取目录权限便可。

2. 服务器21端口添加21端口限定

不管是主动模式仍是被动模式,第一步都是客户端链接服务器的21端口创建控制链接。所以咱们能够在防火墙的21端口上设置IP限定,仅容许咱们的备份电脑的IP或IP段链接服务器21端口,这样其余人就没法使用FTP暴力破解FTP帐号和密码了。

3. 禁止FTP服务器管理控制台的远程管理功能

FTP服务器管理控制台:主要用于设置FTP帐号、FTP目录、FTP的命令端口和数据端口、下载速度和上传速度等等。

FTP管理控制台并非全部FTP软件都支持远程访问的,好比IIS中设置FTP须要在IIS中设置,它的控制台就是IIS,只有登陆服务器系统才能够设置IIS。

默认状况下FileZilla Server的控制台是只容许本机登陆的,咱们不须要作任何设置,保持默认配置便可。

这里咱们仍是有必要了解下如何开启FileZilla Server控制台的远程访问:

(1)防火墙打开14147端口的“准入”,14147端口为FileZilla Server控制台端口;

(2)配置FTP服务器的IP地址;

(3)配置容许访问FileZilla Server控制台的终端。

这样咱们配置的192.168.25.1就能够远程链接192.168.25.133服务器上的控制台,进行帐号和权限设置等。

防火墙设置总结

1. FTP主动模式下防火墙设置

(1)服务器没有“物理防火墙”的状况下,只须要在服务器操做系统中开启21端口的准入,20端口的准出默认是容许的(Windows系统防火墙默认是不拦截“准出”的)。

(2)服务器有“物理防火墙”的状况下,须要在“物理防火墙”中开启21端口的准入,20端口的准出。

(3)客户端须要设置“容许应用程序经过防火墙”(WinSCP.exe、FlashFXP等)

2. FTP主动模式下防火墙设置

(1)服务器须要开启21端口准入,并设置被动模式数据端口范围P,并在防火墙中开启P的准入。

(2)客户端通常不须要设置任何防火墙,由于N和N+1通常是能够出去的。

相关文章
相关标签/搜索