首先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.
相关推荐
How to set the ftp sever to passive mode in Solaris 10
ftp服务器如果是主动模式,下载方法与被动模式有很大差异,本案例提供主动模式下载方案
通过 passive 开启和关闭 PASV模式,再ls 也是同样的问题, # 主动模式 $ pftp -v -A -d 211.159.185.xxx Connected to 211.159.185.198 (211.159.185.xxx). 220 (vsFTPd 3.0.2) Name (211.159.185.xxx:...
在防火墙后面工作的 FTP 客户端通常使用被动模式 FTP 连接到服务器,以避免防火墙出现问题。 MATLAB 的 ftp 对象没有被动模式功能。 附加文件修改此 MATLAB 类以允许此功能。 这些文件仅使用 MATLAB 使用的 ...
配置实现ftp自动上传下载,支持突破本地和服务端防火墙的主动模式上传下载。
uvm学习笔记,1. 关于UVM平台搭建的简单介绍省略。 P7 Agent是封装monitor, driver,sequencer的组件,agent包含两种模式。Active和Passive模式,其中Passive的模式只包含monitor,不能驱动DUT
Increasingly, network operators do not directly operate computers on their network, yet are responsible for assessing network vulnerabilities to ensure compliance with policies about information ...
FTP服务程序一般会支持两种不同的模式,一种是Port模式,一种是Passive模式(Pasv Mode),我先说说这两种不同模式连接方式的分别。 先假设客户端为C,服务端为S. Port模式: 当客户端C向服务端S连接后,使用的是Port...
Design and synthesis of Active and Passive Vehicle Suspensions
模拟集成电路原理:ch05eng Passive and Active Current Mirrors.pdf
用edtftpj.jar 实现的ftp client ... 2)具有主动(Active)模式和被动(Passive)模式,支持二进制(Binary)传输和ASCII传输 3)支持中断后恢复传输 4)支持以FTP流的方式灵活地从FTP服务器读取和写入
Passive Event Listeners - 被动事件监听器在写webapp页面的时候,Chrome 提醒 [Violat
此文档描述了,CAN控制器进入主动错误和被动错误的条件,对做网络管理的工程师有帮助
Zabbix-agent的工作模式可以分为主动模式(Active)和被动模式(Passive)。 主动模式是指Agent将采集到的数据主动推送给Server,其行为是Agnet端主动向Server端发起的数据连接过程,Server不必等待Agent的数据采集...
FTP的协议流程,讲述Active以及Passive模式如何工作
FTP是一种文件传输协议,它支持两种模式,一种方式叫做Standard (也就是Active,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 FTP 的客户端发送 PORT 命令到FTP server。Passive模式FTP的客户端...
Monitoring OpenFlow_Active vs. Passive methods
./passive-被动 CSI 收集- 被动侦听给定通道上的 CSI 帧(默认值:通道 3)。 每个项目都会自动将收集到的 CSI 数据发送到串口和 SD 卡(如果有)。可以如下所述配置这些设置。 除了这些 ESP32 特定项目之外,我们...
自己写的一个网络课程设计-FTP客户端程序,实现本地文件浏览和服务器端文件浏览、上传和下载、用户FTP和匿名FTP登陆、ASCII和Binary传输模式、Port和Passive连接模式,包括源程序和设计报告,有详细代码解释
使用被动模式:### // This uses passive mode$ ftp -> passive ();// If you want to disable using passive mode then$ ftp -> passive ( false );使用二进制模式:### // This uses binary mode, required for ...