zoukankan      html  css  js  c++  java
  • FTP的两种主动模式和被动模式

       参考:https://blog.csdn.net/xqhrs232/article/details/54633006

         https://blog.csdn.net/yuanhangq220/article/details/52793892

      一,主动模式

      PORT中文称为主动模式,工作的原理: FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上), 发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端 开放的端口连接,发送数据,原理如下图:

      二,被动模式

      PASV是Passive的缩写,中文成为被动模式,工作原理:FTP 客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地随机开放一个端口(1024以上),然后把开放的端口告诉客户端, 客户端再连接到服务器开放的端口进行数据传输,原理如下图:

      

      三、两种模式的比较

         从上面的运行原来看到,主动模式和被动模式的不同简单概述为: 主动模式传送数据时是“服务器”连接到“客户端”的端口;被动模式传送数据是“客户端”连接到“服务器”的端口。

        主动模式需要客户端必须开放端口给服务器,很多客户端都是在防火墙内,开放端口给FTP服务器访问比较困难。

        被动模式只需要服务器端开放端口给客户端连接就行了。

      vsftp开启主动被动模式

      1.  开启被动模式的配置:
       connect_from_port_20=NO(默认为YES) #设置是否允许主动模式
       pasv_enable=YES(默认为YES) #设置是否允许被动模式
       pasv_min_port=50000(default:0(use any port))
       pasv_max_port=60000(default:0(use any port))
      2.  开启主动模式的配置:
       connect_from_port_20=YES
       pasv_enable=NO

      vsftp默认模式为被动模式,假如vsftp搭建在云服务器需要开启一个范围很大的端口给客户端,不安全,可以修改成强制主动模式然后对外只开放21端口即可

      客户端可以直接修改连接模式为主动模式也可以连接ftp

     

      在vsftp服务器端强制开启为主动模式可能会导致一些程序无法连接ftp还需要保持原有的被动模式,但是被动默认是随机产生端口通讯,服务器端又不可能无限开启端口,可以保持被动模式配置,把被动模式开启的端口范围限制在一定端口范围内,然后服务器只需要对外开启这几个端口则可,修改配置文件添加以下

    pasv_enable=YES                  #强制开启为被动模式,默认也为被动模式
    pasv_min_port=60000           #被动模式开启的最小随机端口
    pasv_max_port=60100           #被动模式开启的最大随机端口
    

      这样设置就可以在服务器至对外开启21 60000-601000端口了

  • 相关阅读:
    键盘事件
    冒泡事件-捕获事件-阻止事件
    Date()常用属性
    dom树节点的增删改插
    boost/c++11 变量类型打印、相等判断以及成员函数指针相关
    c++ std:call_once 与 单例模式实现
    c++11 异步编程 std::async
    c++ STL中一些常用函数/模板
    c++11 std::atomic 原子操作
    C++ std::atomic_flag 实现spinLock
  • 原文地址:https://www.cnblogs.com/minseo/p/9248424.html
Copyright © 2011-2022 走看看