Ftp主动模式和被动模式以及java连接ftp模式设置
https://www.cnblogs.com/huhaoshida/p/5412615.html
(1) PORT(主动模式)
PORT中文称为主动模式,工作的原理: FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上),发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据,原理如下图。
(2) PASV(被动模式)
PASV是Passive的缩写,中文成为被动模式,工作原理:FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地随机开放一个端口(1024以上),然后把开放的端口告诉客户端, 客户端再连接到服务器开放的端口进行数据传输,原理如下图:
2.两种模式的比较
从上面的运行原来看到,主动模式和被动模式的不同简单概述为: 主动模式传送数据时是“服务器”连接到“客户端”的端口;被动模式传送数据是“客户端”连接到“服务器”的端口。
主动模式需要客户端必须开放端口给服务器,很多客户端都是在防火墙内,开放端口给FTP服务器访问比较困难。
被动模式只需要服务器端开放端口给客户端连接就行了。
参考文献 http://www.cnblogs.com/mawanglin2008/articles/3607767.html
3.java中,内网用被动模式 ,外网连接时用主动模式,服务器相应改动(只用上线功能用被动模式去连接ftp报错连接不上)
FTPClient ftpClient = new FTPClient();
ftpClient.connect(url, port);
ftpClient.enterLocalActiveMode();    //主动模式
// ftpClient.enterLocalPassiveMode(); 被动模式
ftpClient.setControlEncoding("UTF-8");
ftpClient.changeWorkingDirectory(path);
https://www.cnblogs.com/guangshan/p/4386308.html
FTP主动模式与被动模式,及java FTPClient模式设置
FTP的主动模式与被动模式
FTP服务器使用20和21两个网络端口与FTP客户端进行通信。 
FTP服务器的21端口用于传输FTP的控制命令,20端口用于传输文件数据。
FTP主动模式: 
  FTP客户端向服务器的FTP控制端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路;当需要传送数据时,客户端在命令链路上用PORT的命令告诉服务器我开放了某端口,你过来连接我。于是服务器从20端口向客户端的该端口发送连接请求,建立一条数据链路来传送数据。在数据链路建立过程中是服务器主动请求,所以称为主动模式。
当客户端向服务端连接后,使用的是PORT模式,那么客户端B会发送一
条命令告诉服务端(客户端B在本地打开了一个端口N在等着你进行数据连接),当服务端收到这个Port命令后 就会向客户端打开的那个端口N进行连接,这种数据连接就生成。
FTP被动模式: 
  FTP客户端向服务器的FTP控制端口(默认21)发送连接请求,服务器接受连接,建立一条命令链路;当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端,我打开了某端口,你过来连我。于是客户端向服务器的该端口发送连接请求,建立一条数据链路来传送数据。在数据链路建立的过程中是服务器被动等待客户机的请求,所以称被动模式。
  由上面几点可以看出,FTP服务器的主动与被动模式是以FTP服务器进行数据传送连接的主动或被动为依据的。
  对于FTP服务器与客户机之间存在的网络防火墙,不论是服务器侧还是客户机侧的网 络防火墙设置策略都要保证FTP服务器和客户端之间能够正常建立命令链路和数据链路。
当客户端B向服务端连接后,使用的是PASV模式,服务端会发信息给客户端,这个信息是(服务端在本地打开了一个端口M,你现在去连接我吧),当客户端收到这个信息后,就可以向服务端的M端口进行连接,连接成功后,数据连接也建立了。
主动模式下: 
  客户机 与 服务器之间建立连接时,客户机是大于1024的端口上,服务器是 20 端口。
  客户机的端口是大于1024的,而服务器的端口是 21 端口接收请求,而是 20 端口给客户机回应。
  允许FTP客户机从大于1024的端口连接服务器的21端口.
  允许FTP服务器从21端口回应FTP客户机中大于1024端口的网络连接.
  允许FTP服务器从20端口主动连接FTP客户机中大于1024的端口
  允许FTP客户机从大于1024的端口回应来自FTP服务器的20端口的网络连接.
被动模式下: 
  客户机 与 服务器之间建立连接都是在大于1024的端口上的。
  客户机的端口是大于1024的,而服务器的端口是 21 端口接收请求,而是 从大于1024 端口给客户机回应。
  允许FTP客户机从大于1024的端口连接服务器的21端口.
  允许FTP服务器从21端口回应FTP客户机中大于1024端口的网络连接.
  允计FTP客户机从大于1024的端口连接FTP服务器的大于1024端口.
  允许FTP服务器从大于1024的端口回应来自FTP客户机大于1024端口的网络连接
client开启大于1024(21吧)的X端口连接服务器的21(命令端口),同时开启X+1端口 
当21号端口连接成功后,client会发送PASV命令,通知服务器自己处于被动模式,服务器收到这个消息后,就会开放一个大于1024的端口Y通知client,client接到通知后就会用X+1来连接服务器的Y端口,简单的说就是client主动连接服务器 。
主动与被动FTP优缺点的简要总结:  
  主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。 
  被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
   幸运的是,有折衷的办法。既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危险。
FTP主动与被动的好处和坏处: 
  在ISA(工业标准架构体系Industry Standard Architecture是IBM PC兼容机上的一种总线 )的情况,如果采用被动模式,由于IIS是完全随机的选择一个端口,并告知客户,然后客户进行主动连接,这就意味着在ISA上,你要让所有的端口都允许动态入站连接才行,这样肯定不行,因为太危险了,等于打开了所有的端口连。   
  如果采用主动模式(PORT Mode),IIS选择好端口后,主动与客户进行连接,这时候不需要像PASV模式那样打开所有的动态入站连接,而且正好相反,我们需要打开所有的动态出站连接即可,安全性增加很多。而且由ISA的IP PACKET FILTER只对ISA本机起作用,不会造成局域网内的客户“放了羊”。
FTPclient在被动模式下,传送文件使用的是0端口,可以调用setActivePortRange设置主动模式时的端口范围。
在windows下使用ftpclient时,需要处理windows下一个FTP主被动模式的缺陷,需要运行如下命令:
netsh advfirewall firewall add rule name=”FTP Service” action=allow service=ftpsvc protocol=TCP dir=in
netsh advfirewall set global StatefulFTP disable
Ftp主动模式和被动模式以及java连接ftp模式设置的更多相关文章
- FTP基础知识 FTP port(主动模式) pasv(被动模式) 及如何映射FTP
		
您是否正准备搭建自己的FTP网站?您知道FTP协议的工作机制吗?您知道什么是PORT方式?什么是PASV方式吗?如果您不知道,或没有完全掌握,请您坐下来,花一点点时间,细心读完这篇文章.所谓磨刀不误砍 ...
 - Java连接FTP成功,但是上传是失败,报错:Connected time out
		
Java代码在本机上传文件到FTP服务器的时候成功,但是部署到测试服务器的时候出现,连接FTP成功但是上传失败,并且报Connected time out错误: 测试服务器和FTP服务都在阿里云上:( ...
 - 【FTP】C# System.Net.FtpClient库连接ftp服务器(上传文件)
		
如果自己单枪匹马写一个连接ftp服务器代码那是相当恐怖的(socket通信),有一个评价较高的dll库可以供我们使用. 那就是System.Net.FtpClient,链接地址:https://net ...
 - 【FTP】C# System.Net.FtpClient库连接ftp服务器(下载文件)
		
如果自己单枪匹马写一个连接ftp服务器代码那是相当恐怖的(socket通信),有一个评价较高的dll库可以供我们使用. 那就是System.Net.FtpClient,链接地址:https://net ...
 - FTP的主动模式与被动模式
		
FTP服务器使用20和21两个网络端口与FTP客户端进行通信. FTP服务器的21端口用于传输FTP的控制命令,20端口用于传输文件数据. FTP主动模式: FTP客户端向服务器的FTP控制端口(默认 ...
 - FTP协议的主动模式和被动模式的区别
		
最近准备做一个<FtpCopy系列教程>,主要讲解Ftp协议主动模式和被动模式的区别.以及FTP服务器的安装部署,然后通过几个常用实例演示,详细讲解如何使用FtpCopy进行数据自动备份. ...
 - Linux FTP的主动模式与被动模式
		
Linux FTP的主动模式与被动模式 一.FTP主被动模式 FTP是文件传输协议的简称,ftp传输协议有着众多的优点所以传输文件时使用ftp协议的软件很多,ftp协议使用的端口是21( ...
 - ftp主动和被动模式区别
		
转载自:http://www.west999.com/cms/wiki/server/2018-11-16/49417.html FTP是基于TCP的服务的,FTP不同之处在于FTP使用两个端口,一个 ...
 - java 无法连接ftp服务器(500 OOPS: cannot change directory)
		
在使用java连接ftp服务器时可能会出现无法连接的情况,检查代码是没有错误的,这时就应该考虑一下服务器端的情况了: 首先用在本地打开命令窗口,输入:ftp ftp服务器IP,窗口会提示你输入用户名密 ...
 
随机推荐
- 洛谷P3655 差分数组 树状数组
			
题目链接:https://www.luogu.org/problemnew/show/P3655 不一定对,仅供参考,不喜勿喷,不喜勿喷. 先copy洛谷P3368 [模板]树状数组 2 题解里面一位 ...
 - python-django(创建项目、应用、运行)
			
1.创建项目.应用 方法一.命令行创建 <1>.创建项目命令 django-admin startproject 项目名称 <2>.创建应用命令 django-admin s ...
 - IDEA中,将项目加入maven管理。
			
在项目上右键->Add Framework Support Choose Maven 生成pom.xml 在<project>下配置国内仓库 <properties>&l ...
 - 发布后就很丢人的随笔(c++)
			
for循环条件中使用的变量 可以是循环条件中定义的变量 也可以是循环之外的变量 代码: #include <iostream> int main(){ int a = 1; int b = ...
 - mac pfctl / centos iptables 使用
			
mac使用pfctl 为了测试zk client的重连功能,需要模拟zk client与zk server网络连接出现问题的情况,经过查询资料发现可以使用防火墙阻止zk server启动端口上的流量实 ...
 - 把Excel作为数据库,读到DataTable中,Excel科学计数法数字转字符串
			
需要引用:using System.Data.OleDb; /// <summary> /// 获取Excel数据,包含所有sheet /// </summary> /// & ...
 - SQL Server 2008 通过C# CLR 使用正则表达式
			
参考文章 MSSQLSERVER接入c#clr程序集,使c#函数变sql函数 正则表达式30分钟入门教程 SQL中采用Newtonsoft.Json处理json字符串 操作步骤 1.新建项目-> ...
 - Unity 角色移动贴墙行走
			
直接贴上代码,旋转角色角度检测碰撞 Vector2 v2Normal = new Vector2(normal.x, normal.y); float fAngle = Vector2.SignedA ...
 - 面试简单整理之rabbitmq
			
135.rabbitmq 的使用场景有哪些? 单反单收,单发多收,发布订阅,按路由发送,按主题发送 136.rabbitmq 有哪些重要的角色? Server,Consumer,Producer 13 ...
 - 杨其菊201771010134《面向对象程序设计(java)》第十四周学习总结
			
第十四周学习总结 第一部分:理论知识 理论知识:本周学习Swing用户界面 内容:Swing与模型-视图-控制器设计模式:布局管理概述:文本输入 :选择组件:菜单:复杂的布局管理:对话框: 第二部分: ...