ftp-主动模式(PORT)和被动模式(PASV)

简介

FTP协议要用到两个TCP连接,
一个是命令连接,用来在FTP客户端与服务器之间传递命令;
另一个是数据连接,用来上传或下载数据。
无论是主动模式还是被动模式,其要进行文件传输都必须依次建立两个连接,分别为命令连接与数据连接。而主动模式与被动模式的差异主要体现在数据连结通道上

命令连接

当FTP客户端需要登陆到FTP服务器上的时候,服务器与客户端需要进行一系列的身份验证过程,这个过程就叫做命令连接

 当FTP客户端需要登陆到FTP服务器上的时候,服务器与客户端需要进行一系列的身份验证过程,这个过程就叫做命令连接。如在客户端向服务器发起连接请 求的时候,客户端会随即的选择某个TCP端口来跟FTP服务器的21号端口进行连接,这主要是通过TCP三方握手来实现的。当三方握手完成之后,客户端与 服务器之间便建立了命令连接通道。不过这个通道的用途是非常有限的,其主要用来传输FTP的相关指令。如查看文件列表、删除文件等等,而不能够用来在客户 端与服务端进行文件传输。为此这个通道就被称之为命令通道。到客户端与服务器建立了连接之后,可能客户端暂时不需要进行数据传输。如只是需要查看目录下的文件或则其他相关的动作。此时之需要命令连接通道就可以完 成了。

数据连接

 如果此时客户端需要往FTP服务器上上传或者下载文件的话,就需要在客户端与服务器端再建立一条额外的数据传输连接。

主动模式

主动模式

主动模式的FTP是指服务器主动连接客户端的数据端口

Standard、Active
主动模式是指服务器主动连接客户端的数据端口
在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。

PORT(主动)这个方式需要在接上TCP 21端口后,服务器通过自己的TCP 20来发出数据。并且需要建立一个新的连接来传送档案。而PORT的命令包含一些客户端没用的资料,所以有了PASv的出现。

当客户端发出数据传输的指令之后(如上传数据或者下载文件),客户端会启用另外一个端口监听等待连接,并利用先前建立的命令连接通道告诉FTP服务器其监 听的端口号。然后FTP服务器会利用端口20和刚才的FTP客户端所告知的端口再次进行三方握手。三次握手成功后便建立了一条数据传输通道。注意此时数据 连结通道建立的过程中,是FTP服务器的20号端口主动连接FTP客户端的,为此这种连接方式就叫做主动模式。
在主动操作模式下,FTP服务器的20号端口是主动同客户端联系,建立数据传输通道的
PASV运行方式就是当服务器接收到客户端连接请求时,就会自动从端口1024到5000中随机选择一个和客户端建立连接传递数据。由于被动且自动建立连接,容易受到攻击,所以安全性差。

工作过程:

  1. 客户端以随机非特权端口N,就是大于1024的端口,对server端21端口发起连接

  2. 客户端开始监听 N+1端口;

  3. 服务端会主动以20端口连接到客户端的N+1端口。

优点:

服务端配置简单,利于服务器安全管理,服务器只需要开放21端口

缺点:

如果客户端开启了防火墙,或客户端处于内网(NAT网关之后), 那么服务器对客户端端口发起的连接可能会失败

被动模式

被动模式

被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。

在被动操作模式下,则FTP服务器是被动的等待,等待 客户段与其的20号端口建立连接
被动模式是指服务器被动地等待客户端连接自己的数据端口
在被动模式下,FTP库户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORTP命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
(在vsftpd.conf中指定被动端口范围为4000-4500)

被动模式通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。

PASV运行方式就是当服务器接收到客户端连接请求时,就会自动从端口1024到5000中随机选择一个和客户端建立连接传递数据。由于被动且自动建立连接,容易受到攻击,所以安全性差。
被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。

   被动操作模式在建立命令连接通道的时候,跟主动操作模式是相同的。

用户需要进行数据传输的时候, 则FTP客户端会通过命令通道告诉FTP服务器,如会向服务器发出一个PASV指令。

服务期会选择自身的一个端口来进行监听连接(而在主动操作模式下是利用客户端的一个端口来进行监听连接),并再次利用命令连接通道告诉客户端“我为 你开启了哪个端口,你要建立数据连接的话就跟我的哪个端口联系”

客户端在接到这个信息后,就会在自己操作系统上选择一个数据连接的通信端口,与服务器提供的端口进行三方握手,并最终建立起可以进行数据传输的通道。

工作过程:

  1. 客户端以随机非特权端口连接服务端的21端口

  2. 服务端开启一个非特权端口为被动端口,并返回给客户端

  3. 客户端以非特权端口+1的端口主动连接服务端的被动端口

缺点:

服务器配置管理稍显复杂,不利于安全,服务器需要开放随机高位端口以便客户端可以连接,因此大多数FTP服务软件都可以手动配置被动端口的范围

优点:

对客户端网络环境没有要求

选择策略

在数据通道建立的过程中,客户端会在另一个端口上监听等待连接,并利用命令连接通道告诉服务器其监听的端口号。然后企业的边界路由器会将FTP的IP地址转换为合法的公网IP地址(假设企业由于公网IP地址有限,在边界路由 器上通过NAT服务向外部用户提供FTP连接)。

采用的是主动操作模式的话,则在连接这个数据通道的过程中FTP服务器会主动跟边界路由器的端口 进行通信(因为FTP服务器认为这台边界路由器,其实就是NAT服务器,就是FTP客户段)。
但是实际上不是,而且也有可能没有启用这个端口。为此客户端 与FTP服务器之间的连接最终没有建立起来。
所以说,如果采用主动操作模式的话,当FTP服务器部署在NAT等服务器后面的时候,则FTP服务器与客户端 之间只能够建立命令连接通道,而无法建立起数据传输通道。
如果FTP服务器与客户端之间还有防火墙的话,在连接的过程中也会出现以上类似的情况。

  被动操作模式的话,是客户端主动跟服务期的20号端口进行连接的。为此在数据传输通道建立的过程中,即使中间有NAT服务器或者防火墙,也 会准确无误的连接到FTP服务器的数据传输接口。
所以说,如果在客户端与FTP服务器之间存在防火墙或者NAT服务器等类似设备的话,那么在FTP服务器 部署的时候,最好采用被动操作模式。否则的话,很可能只能够建立命令连接通道,而无法进行数据传输。

如果一些出差在外的员工或者员工在家庭办公时也需要访问企业内部的FTP服务器,而此时出于安全的考虑或者公网IP 地址数量的限制,企业往往会把FTP服务器部署在防火墙或者NAT服务器的后面,此时这个主动操作模式就不行了。
如果企业中通过互联网来访问企业内部FTP服务器的员工比较多的时候,那么最好能够一劳永逸的解决这个问题,即在FTP服务器上进行设置,强制客户端在连接的时候采用被动操作模式。

用户比较少的话,而且用户又具有一定的计算机知识,那么可以不在服务器上进行设置。而是在连接的过程中,通过FTP客户端来设置。如在某些FTP客户端 上,会有一个Passive Transfers等类似的选项。选中这个选项就表示以被动操作方式进行传输。而没有选中这个选项的客户端则仍然采用主动操作模式来进行连接。

如果把FTP服务器部署在防火墙或者NAT服务器的背后,则采用主动操作模式的客户端只能够建立命令连接而无法进行文件传输。如果部署完FTP服务器后,系统管理员发现用户可以连接上FTP服务器,可以查看 目录下的文件,但是却无法下载或者上传文件,如果排除权限方面的限制外,那么很有可能就是这个操作模式选择错误

常见客户端设置

FTP服务器部署的时候,其默认采用的是主动操作模式。如果企业FTP服务器的用户都是在内部网络中的,即不用像外部网络的用户提供FTP连接的需求,那 么采用这个默认操作方式就可以了。

 大部分FTP客户端默认使用PASV方式。IE默认使用PORT方式。在大部分FTP客户端的设置里,常见到的字眼都是“PASV”或“被动模式”,极少见到“PORT”或“主动模式”等字眼。因为FTP的登录方式只有两种:PORT和PASV,取消PASV方式,就意味着使用PORT方式。

1)IE:工具 -> Internet选项 -> 高级 -> “使用被动FTP”(需要IE6.0以上才支持)。

(2)CuteFTP:Edit -> Setting -> Connection -> Firewall -> “PASV Mode” 或File -> Site Manager,在左边选中站点 -> Edit -> “Use PASV mode” 。

(3)FlashGet:工具 -> 选项 -> 代理服务器 -> 直接连接 -> 编辑 -> “PASV模式”。

(4)FlashFXP:选项 -> 参数选择 -> 代理/防火墙/标识 -> “使用被动模式” 或站点管理 -> 对应站点 -> 选项 -> “使用被动模式”或快速连接 -> 切换 -> “使用被动模式”。
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值