大白话解释一下“被动FTP模式”是什么意思?
FTP中的两种工作方式--Standard(PORT)和Passive
FTP是一种文件传输协议,它支持两种模式,一种方式叫做Standard
(也就是
Active,主动方式),一种是
Passive
(也就是PASV,被动方式)。
Standard模式
FTP的客户端发送
PORT
命令到FTP
server。Passive模式FTP的客户端发送
PASV命令到
FTP
Server。
下面介绍一个这两种方式的工作原理:
Standard模式FTP:客户端首先和FTP
Server的TCP
21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。
PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP
20端口发送数据。
FTP
server必须和客户端建立一个新的连接用来传送数据。
Passive模式:在建立控制通道的时候和Standard模式类似,当客户端通过这个通道发送PASV
命令的时候,FTP
server打开一个位于1024和5000之间的随机端口并且通知客户端在这个端口上传送数据的请求,然后FTP
server
将通过这个端口进行数据的传送,这个时候FTP
server不再需要建立一个新的和客户端之间的连接。
FTP是文件传输协议的简称,ftp传输协议有着众多的优点所以传输文件时使用ftp协议的软件很多,ftp协议使用的端口是21(也称为控制端口),其实还有一个数据端口20,根据FTP工作方式的不同,数据端口也不都是20,主动模式的被动模式使用的数据端口是不一样的,下面我就一步一步介绍主动ftp模式和被动ftp模式的区别:
一、什么是主动FTP
主动模式的FTP工作原理:客户端从一个任意的非特权端口N连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:
1、 任何大于1024的端口到FTP服务器的21端口。(客户端初始化的连接)
2、 FTP服务器的21端口到大于1024的端口。 (服务器响应客户端的控制端口)
3、 FTP服务器的20端口到大于1024的端口。(服务器端初始化数据连接到客户端的数据端口)
4、 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)
二、什么是被动FTP
为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。
在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。
当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:
1、 从任何大于1024的端口到服务器的21端口(客户端初始化的连接)
2、 服务器的21端口到任何大于1024的端口(服务器响应到客户端的控制端口的连接)
3、 从任何大于1024端口到服务器的大于1024端口(客户端初始化数据连接到服务器指定的任意端口)
4、 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)
以上关于主动和被动FTP的解释,可以简单概括为以下两点:
1、主动FTP:
命令连接:客户端 >1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 <- 服务器 20端口
2、被动FTP:
命令连接:客户端 >1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 -> 服务器 >1024端口
三、主动模式ftp与被动模式FTP优点和缺点:
主动FTP对FTP服务器的管理和安全很有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
可以简单概括为以下两点: 1、主动FTP: 命令连接:客户端 >1024端口 -> 服务器 21端口 数据连接:客户端 >1024端口 1024端口 -> 服务器 21端口 数据连接:客户端 >1024端口 -> 服务器 >1024端口
主动式有利于服务器端管理
但是可能会被客户端防火墙拦截
被动式由于数据传输由客户端发起出 所有不会被客户端防火墙拦截
但是不利于服务器管理
使用windows
server搭建完毕
双击FTP防火墙
填写端口和IP即可
例如填写5000-5100,即为允许100个被动连接 (此时可能为灰色需要开通防火墙)
如果端口位置为灰色,需执行以下命令添加防火墙策略
允许ftp
netsh
advfirewall
firewall
add
rule
name="FTP
Service"
action=allow
service=ftpsvc
protocol=TCP
dir=in
netsh
advfirewall
firewall
set
global
StatefulFTP
disable
添加完毕再看端口可以输入数值
输入数值
和外部连接的IP地址
点击应用
此时再次使用被动式连接
即可成功连接
按:
测试发现关闭防火墙无效,填写被动式端口依然为灰色
必须添加2条命令
passiv为被动模式
port为主动模式
被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而 只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。
那要看你是从你是从哪个方向访问了
FTP是一种文件传输协议,主要用来在不同的主机之间实现文件的传送。通常情况下完成一个文件的传输需要有命令连接通道与数据连结通道两个通道。而建立这些通道的方法不同,又有主动模式与被动模式的区分。在Linux操作系统上,vsFTPd是最常用的一个FTP软件,其支持这两种模式。为此系统管理员需要了解这两种连接模式的不同点,并在实际工作中根据企业的应用情况来选择合适的模式。 一、主动模式的实现与特点。
无论是主动模式还是被动模式,其要进行文件传输都必须依次建立两个连接,分别为命令连接与数据连结。而主动模式与被动模式的差异主要体现在数据连结通道上。为了说明两者的差异,我将主要对这个数据连结进行比较详细的说明。
当FTP客户端需要登陆到FTP服务器上的时候,服务器与客户端需要进行一系列的身份验证过程,这个过程就叫做命令连接。如在客户端向服务器发起连接请求的时候,客户端会随即的选择某个TCP端口来跟FTP服务器的21号端口进行连接,这主要是通过TCP三方握手来实现的。当三方握手完成之后,客户端与服务器之间便建立了命令连接通道。不过这个通道的用途是非常有限的,其主要用来传输FTP的相关指令。如查看文件列表、删除文件等等,而不能够用来在客户端与服务端进行文件传输。为此这个通道就被称之为命令通道。而跟数据传输相关的为数据通道。
到客户端与服务器建立了连接之后,可能客户端暂时不需要进行数据传输。如只是需要查看目录下的文件或则其他相关的动作。此时之需要命令连接通道就可以完成了。如果此时客户端需要往FTP服务器上上传或者下载文件的话,就需要在客户端与服务器端再建立一条额外的数据传输连接。当客户端发出数据传输的指令之后(如上传数据或者下载文件),客户端会启用另外一个端口监听等待连接,并利用先前建立的命令连接通道告诉FTP服务器其监听的端口号。然后FTP服务器会利用端口20和刚才的FTP客户端所告知的端口再次进行三方握手。三次握手成功后便建立了一条数据传输通道。注意此时数据连结通道建立的过程中,是FTP服务器的20号端口主动连接FTP客户端的,为此这种连接方式就叫做主动模式。
二、被动模式的实现与特点。
被动操作模式在建立命令连接通道的时候,跟主动操作模式是相同的。两者主要的差异就在于数据传输通道的建立上面。但是如果用户需要进行数据传输的时候,则FTP客户端会通过命令通道告诉FTP服务器,如会向服务器发出一个PASV指令。这个指令就是告诉服务期,要采用被动模式建立连接。如果采用被动操作模式,服务期会选择自身的一个端口来进行监听连接(而在主动操作模式下是利用客户端的一个端口来进行监听连接),并再次利用命令连接通道告诉客户端“我为你开启了哪个端口,你要建立数据连接的话就跟我的哪个端口联系”。客户端在接到这个信息后,就会在自己操作系统上选择一个数据连接的通信端口,与服务器提供的端口进行三方握手,并最终建立起可以进行数据传输的通道。
当企业的网络环境不同,两个操作模式的应用效果是不同的。这主要是主动操作模式与被动操作模式在数据的传输通道建立上有一定的差异。从以上的分析中我们可以看出,在主动操作模式下,FTP服务器的20号端口是主动同客户端联系,建立数据传输通道的。而在被动操作模式下,则FTP服务器是被动的等待,等待客户段与其的20号端口建立连接。不要小看这个细小的差异,这个差异却决定了两者应用环境的不同。
一般来说,如果这个FTP服务器只对企业的内部局域网客户提供文件传输的服务,那么基本上两者的应用效果没有很大的差异。但是如果企业网络外部的用户也需要通过互联网与FTP服务器进行文件传输的话,就会有很大的不同。这主要是因为,在数据通道建立的过程中,客户端会在另一个端口上监听等待连接,并利用命令连接通道告诉服务器其监听的端口好。然后企业的边界路由器会将FTP的IP地址转换为合法的公网IP地址(假设企业由于公网IP地址有限,在边界路由器上通过NAT服务向外部用户提供FTP连接)。如果此时采用的是自动操作模式的话,则在连接这个数据通道的过程中FTP服务器会主动跟边界路由器的端口进行通信(因为FTP服务器认为这台边界路由器,其实就是NAT服务器,就是FTP客户段)。但是实际上不是,而且也有可能没有启用这个端口。为此客户端与FTP服务器之间的连接最终没有建立起来。所以说,如果采用主动操作模式的话,当FTP服务器部署在NAT等服务器后面的时候,则FTP服务器与客户端之间只能够建立命令连接通道,而无法建立起数据传输通道。如果FTP服务器与客户端之间还有防火墙的话,在连接的过程中也会出现以上类似的情况。
而如果是采用被动操作模式的话,是客户端主动跟服务期的20号端口进行连接的。为此在数据传输通道建立的过程中,即使中间有NAT服务器或者防火墙,也会准确无误的连接到FTP服务器的数据传输接口。所以说,如果在客户端与FTP服务器之间存在防火墙或者NAT服务器等类似设备的话,那么在FTP服务器部署的时候,最好采用被动操作模式。否则的话,很可能只能够建立命令连接通道,而无法进行数据传输。
FTP是仅基于TCP的服务,不支持UDP。与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口)。但FTP工作方式的不同,数据端口并不总是20。这就是主动与被动FTP的最大不同之处。
(一)主动FTP
主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令“port
N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:
任何大于1024的端口到FTP服务器的21端口。(客户端初始化的连接)
FTP服务器的21端口到大于1024的端口。 (服务器响应客户端的控制端口)
FTP服务器的20端口到大于1024的端口。(服务器端初始化数据连接到客户端的数据端口)
大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)
(二)被动FTP
为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。
当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N >
1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT
P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:
从任何大于1024的端口到服务器的21端口(客户端初始化的连接)
服务器的21端口到任何大于1024的端口(服务器响应到客户端的控制端口的连接)
从任何大于1024端口到服务器的大于1024端口(客户端初始化数据连接到服务器指定的任意端口)
服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)
以上关于主动和被动FTP的解释,可以简单概括为以下两点:
1、主动FTP:
命令连接:客户端 >1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 <- 服务器 20端口
2、被动FTP:
命令连接:客户端 >1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 -> 服务器 >1024端口
(三)主动与被动FTP优缺点:
主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
通过打开到 TCP 端口号 21 的“命令通道”连接,标准模式 FTP 客户端会启动到服务器的会话。客户端通过将 PORT 命令发送到服务器请求文件传输。然后,服务器会尝试启动返回到 TCP 端口号 20 上客户端的“数据通道”连接。客户端上运行的典型防火墙将来自服务器的此数据通道连接请求视为未经请求,并会丢弃数据包,从而导致文件传输失败。 Windows Vista 和 Windows Server 2008 中的 高级安全 Windows 防火墙 支持有状态 FTP ,该 FTP 允许将端口 20 上的入站连接请求与来自客户端的先前出站 PORT 命令相匹配。但是,如果您通过 SSL 使用 FTP 来加密和保护 FTP 通信,则防火墙不再能够检查来自服务器的入站连接请求,并且这些请求会被阻止。 为了避免此问题, FTP 还支持“被动”操作模式,客户端在该模式下启动数据通道连接。客户端未使用 PORT 命令,而是在命令通道上发送 PASV 命令。服务器使用 TCP 端口号进行响应,客户端应连接到该端口号来建立数据通道。默认情况下,服务器使用极短范围( 1025 到 5000 )内的可用端口。为了更好保护服务器的安全,您可以限制 FTP 服务使用的端口范围,然后创建一个防火墙规则:仅在那些允许的端口号上进行 FTP 通信。 本主题将讨论执行以下操作的方法: 1 配置 FTP 服务以便仅将有限数量的端口用于被动模式 FTP 2 配置入站防火墙规则以便仅在允许的端口上进行入站 FTP 连接 以下过程显示在 Internet 信息服务 (IIS) 70 版上配置 FTP 服务的步骤。如果您使用其他 FTP 服务,请查阅产品文档以找到相应的步骤。配置对 SSL 的支持不在本主题的讨论范围之内。有关详细信息,请参阅 IIS 文档。 配置 FTP 服务以便仅将有限数量的端口用于被动模式 FTP 1 在 IIS 70 管理器中的“连接”窗格中,单击服务器的顶部节点。 2 在细节窗格中,双击“FTP 防火墙支持”。 3 输入您希望 FTP 服务使用的端口号的范围。例如,41000-41099 允许服务器同时支持 100 个被动模式数据连接。 4 输入防火墙的外部 IPv4 地址,数据连接通过该地址到达。 5 在“操作”窗格中,单击“应用”保存您的设置。 还必须在 FTP 服务器上创建防火墙规则,以在前一过程中配置的端口上允许入站连接。尽管您可以创建按编号指定端口的规则,但是,创建打开 FTP 服务所侦听的任何端口的规则更为容易。通过按前一过程中的步骤操作,您可限制 FTP 侦听的端口。 配置入站防火墙规则以便仅允许到 FTP 所侦听端口的入站 FTP 连接 1 打开管理员命令提示符。依次单击「开始」、“所有程序”和“附件”,右键单击“命令提示符”,然后单击“以管理员身份运行”。 2 运行下列命令: 复制代码 netsh advfirewall firewall add rule name=”FTP Service” action=allow service=ftpsvc protocol=TCP dir=in 3 最后,禁用有状态 FTP 筛选,以使防火墙不会阻止任何 FTP 通信。 复制代码 netsh advfirewall set global StatefulFTP disable Windows Firewall and non-secure FTP traffic Windows firewall can be configured from command line using netsh command 2 simple steps are required to setup Windows Firewall to allow non-secure FTP traffic 1) Open port 21 on the firewall netsh advfirewall firewall add rule name="FTP (no SSL)" action=allow protocol=TCP dir=in localport=21 2) Activate firewall application filter for FTP (aka Stateful FTP) that will dynamically open ports for data connections netsh advfirewall set global StatefulFtp enable
0条评论