主动模式FTP与被动模式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服务器部署的时候,其默认采用的是主动操作模式。如果企业FTP服务器的用户都是在内部网络中的,即不用像外部网络的用户提供FTP连接的需求,那 么采用这个默认操作方式就可以了。但是如果一些出差在外的员工或者员工在家庭办公时也需要访问企业内部的FTP服务器,而此时出于安全的考虑或者公网IP 地址数量的限制,企业往往会把FTP服务器部署在防火墙或者NAT服务器的后面,此时这个主动操作模式就不行了。如果企业中通过互联网来访问企业内部 FTP服务器的员工比较多的时候,那么最好能够一劳永逸的解决这个问题,即在FTP服务器上进行设置,强制客户端在连接的时候采用被动操作模式。相反如果 用户比较少的话,而且用户又具有一定的计算机知识,那么可以不在服务器上进行设置。而是在连接的过程中,通过FTP客户端来设置。如在某些FTP客户端 上,会有一个Passive Transfers等类似的选项。选中这个选项就表示以被动操作方式进行传输。而没有选中这个选项的客户端则仍然采用主动操作模式来进行连接。

  总 之,在FTP服务器部署的时候考虑是要采用主动操作模式还是被动操作模式,只需要记住一个原则,即如果把FTP服务器部署在防火墙或者NAT服务器的背 后,则采用主动操作模式的客户端只能够建立命令连接而无法进行文件传输。如果部署完FTP服务器后,系统管理员发现用户可以连接上FTP服务器,可以查看 目录下的文件,但是却无法下载或者上传文件,如果排除权限方面的限制外,那么很有可能就是这个操作模式选择错误。系统管理员告诉用户选择合适的操作模式, 基本上就可以解决文件传输的问题了。

主动模式FTP与被动模式FTP该如何选择相关推荐

  1. 转!!ftp的主动模式(port)与被动模式(PASV)

    转自 http://www.phpweblog.net/killjin/archive/2008/01/06/2653.html ftp中主动模式(port)与被动模式(PASV) 目录 开场白 基础 ...

  2. linux ftp主动模式和被动模式切换,FTP应该使用主动模式还是被动模式?

    FTP主要用于在两个端点之间传输数据.FTP不同于HTTP(超文本传输​​协议,用于通过Web浏览器提供网站),因为它是由两个不同的TCP连接组成的应用程序: FTP应该使用主动模式还是被动模式? 控 ...

  3. FTP主动模式(passive)和被动模式(port)的区别

    FTP协议会在客户端和服务端创建两个连接,一个用于命令传输,一个用于数据传输. 主动模式和被动模式是面向服务端和数据传输来讲的.对于命令传输,都是客户端主动连接服务端. 主动模式:客户端创建一个lis ...

  4. ftp的主动模式(port)与被动模式(PASV)

    转自:http://www.phpweblog.net/killjin/archive/2008/01/06/2653.html 目录 开场白  基础  主动FTP  主动FTP的例子  被动FTP ...

  5. 华为防火墙ftp_常用的FTP两种模式,主动模式和被动模式,一分钟了解下

    FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive(也就是PASV,被动方式). 一.FTP服务器工作两种模式 1.主动模式 2.被动模式 针 ...

  6. java ftp主动模式和被动模式_什么是ftp主动模式和被动模式

    FTP是文件传输协议的简称,ftp传输协议有着众多的优点所以传输文件时使用ftp协议的软件很多,ftp协议使用的端口是21(也称为控制端口),其实还有一个数据端口20,根据FTP工作方式的不同,数据端 ...

  7. FTP主动模式和被动模式讲解

    主动模式FTP与被动模式FTP该如何选择 无论是主动模式还是被动模式,其要进行文件传输都必须依次建立两个连接,分别为命令连接与数据连结.而主动模式与被动模式的差异主要体现在数据连结通道上.为了说明两者 ...

  8. FTP主动模式和被动模式的区别(转) 以及 Linux vsftp 相关配置

    转:https://www.cnblogs.com/ajianbeyourself/p/7655464.html 阅读目录 基础知识: 主动模式FTP: 被动模式FTP 备注: 总结 参考资料 dd ...

  9. aspf ftp_FTP主动模式和被动模式

    原标题:FTP主动模式和被动模式 FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive(也就是PASV,被动方式). 一.FTP服务器工作两种模 ...

最新文章

  1. 封装DateTimePicker并使用绑定时遇到的问题
  2. css实现左侧宽度自适应,右侧固定宽度
  3. Java多线程(1)
  4. mysql快速随机_MySQL随机取数据最高效的方法
  5. 使用fastjson 获取json字符串中的数组,再转化为java集合对象
  6. golang 的枚举
  7. 【Linux】很实用的 Linux 高级命令,老码农一定要懂
  8. 兰光bl2000_蓝光BL2000情况处理.pdf
  9. 同济线性代数教材(第五版)-第2章 矩阵及其运算
  10. video 标签 autoplay 实现自动播放
  11. Dubbo,入门Demo案列使用,框架原理,Zookeeper的使用,安装监控中心和管理控制台,service,provider,comsumer三个项目的Demo
  12. 学员故事|老男孩网络安全学习感悟,结果让我意外!
  13. 图像处理技术:图像切割、标签、贴纸花字,超细开发详解
  14. 为什么别人在微信卖东西不会被人拉黑
  15. UML-封神之路的开始
  16. Android引入Ijkplayer
  17. python假设产品列表如下_Python.习题五 列表与元组(上)
  18. Volo - Rust gRPC 框架入门
  19. .dll、.lib、.a的转换
  20. MySQL日历表-报表常用

热门文章

  1. java 多线程经典例子——生产者与消费者的问题
  2. Java异常处理及异常机制介绍
  3. oracle解析失败事件,ORACLE诊断事件及深入解析10053事件
  4. mysql5.5多实例配置_mysql-5.5.32多实例配置
  5. php链接页面时加..,怎么给一个PHP密码访问页面加超链接
  6. js把word转html在线预览,js实现word转换为html
  7. 一周一论文(翻译)——[IEEE 14] Elastic scaling for data stream processing
  8. java 注解学习_java注解的学习
  9. mysql syncbinlog_Mysql之sync-binlog参数
  10. Python爬虫==【openurl】