关于ftp的主动模式(Active Mode)和被动模式(Passive Mode)

首先FTP协议是建立在TCP协议基础上的,所以client与server的每次交互都要经过三次握手(「TCP Three-Way Handshake)

通过两张图进行解释

1、主动模式(也叫做PORT模式、standard模式,需要利用服务器的21端口进行资料传输)

 


说明:client端利用>1024的任意端口发起于server的21端口建立连接,建立“命令联系通道”,如果要发生资料传输,通过21告知server数据联系通道端口(也是一个>1024的端口例如1333),并进行listen,server利用20端口向client的1333端口发起连接,并建立“资料联系通道”。

“资料联系通道”是由server主动建立的(步骤6),所以叫做“祖东模式”。

 

局限性:client端在防火墙或IP分享服务器后面是,其“命令联系通道”可以顺利建立,但“资料联系通道”无法顺利建立。

2、被动模式


 说明:建立“命令联系通道”的方式和主动模式基本一样,也是连接server的21端口。但是如果需要传输资料,client会送出PASV指令,告诉server要利用被动模式建立“资料联系通道”,然后server会打开一个>1024端口,并开始listen,并把这个端口好通过“命令联系通道”告知client,client再打开一个>1024的端口,与server建立“资料连接通道”。

“资料连接通道”是由server被动建立的,所以称作“被动模式”。

 

3、VSFTP关于主动模式被动模式的配置

 

 pasv_enable=YES    //开启被动模式,默认是YES

 pasv_min_port=3000  

 pasv_max_port=4000 //设置建立“资料联系通道”的端口范围,指定是为了利于server端防火墙设置

 pasv_promiscuous=YES(默认是N,设置为Y时,将关闭PASV模式的安全检查,该检查确保数据连接和控制连接是来自同一个IP地址,小心打开此选项,此选项唯一合理的用法是存在于由安全隧道方案构成的组织中)

 

 

4、FTP命令行连接设置主动和被动模式

windows的ftp命令默认是使用的主动方式连接FTP serer。

linux默认是PASV模式,并通过passive on  | off  来进行切换

 

5、实际中遇到的一个问题

关于pasv_promiscuous=YES。

没有设置此项时客户端连接服务器正常,但是执行“list”等命令时报

425 Security: Bad IP connecting

说明“资料联系通道”建立时发现与“命令联系通道”的IP不同,倒是连接诶失败。

 

 

14:15:27.563 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 返回结果: 220 (vsFTPd 2.0.5)

14:15:27.564 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 发送命令: ---> USER ws

14:15:27.566 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 返回结果: 331 Please specify the password.

14:15:27.566 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 发送命令: ---> PASS ********

14:15:27.570 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 返回结果: 230 Login successful.

14:15:27.570 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 发送命令: ---> TYPE I

14:15:27.571 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 返回结果: 200 Switching to Binary mode.

14:15:27.571 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 发送命令: ---> TYPE I

14:15:27.571 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 返回结果: 200 Switching to Binary mode.

14:15:27.578 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 发送命令: ---> SYST

14:15:27.578 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 返回结果: 215 UNIX Type: L8

14:15:27.583 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 发送命令: ---> PWD

14:15:27.583 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 返回结果: 257 "/"

14:15:27.583 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 发送命令: ---> PASV

14:15:27.584 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 返回结果: 227 Entering Passive Mode (200,200,200,8,119,147)

14:15:27.586 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 发送命令: ---> LIST

14:15:27.587 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 返回结果: 425 Security: Bad IP connecting.

 

 

参考资料:http://www.phys.nthu.edu.tw/~cc/QA/vsftpd.pdf

       http://vsftpd.beasts.org/vsftpd_conf.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FTP(File Transfer Protocol)是一种用于文件传输的协议。在FTP中,主动模式Active Mode)和被动模式Passive Mode)是两种不同的数据传输方式。 1. 主动模式: 在主动模式下,客户端(FTP客户端)向服务器FTP服务器)发起控制连接,并指定一个端口号(通常是20)用于数据连接。当需要传输数据时,服务器主动连接客户端指定的数据端口,并将数据发送给客户端。在主动模式中,服务器主动地与客户端建立数据连接。 2. 被动模式: 在被动模式下,客户端向服务器发起控制连接,并发送PASV命令告知服务器进入被动模式服务器会在一个范围内随机选择一个可用端口(通常是1024到65535之间),并将该端口号回应给客户端。客户端随后通过该端口与服务器建立数据连接,然后进行数据传输。在被动模式中,客户端主动地与服务器建立数据连接。 区别: - 主动模式中,服务器主动连接客户端,而被动模式中,客户端主动连接服务器。 - 主动模式下,服务器使用固定的数据端口(通常是20),而被动模式下,服务器会随机选择一个可用的数据端口。 - 主动模式在大多数情况下可以穿透防火墙,但可能会遇到客户端侧的防火墙问题。被动模式则更适合在客户端或服务器都位于防火墙后面的情况下使用。 总的来说,主动模式被动模式是为了解决FTP数据连接中的防火墙和NAT(Network Address Translation)等问题而设计的两种不同的传输方式。选择使用哪种模式应根据网络环境和配置来决定。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值