• 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

    https://technet.microsoft.com/zh-cn/library/dd421710(v=ws.10).aspx

  • 相关阅读:
    pom.xml将jar包导入
    获取当前系统日期的前一天日期
    判断socket连接是否失效
    java读取数据,2,2,1方式读取
    笔记
    回调机制
    吧字符串按逗号分割为数组
    时间格式的转变
    java.net.SocketException四大异常解决方案
    log4j
  • 原文地址:https://www.cnblogs.com/guangshan/p/4386308.html
Copyright © 2020-2023  润新知