FTP是仅基于TCP的服务,不支持UDP。与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口)。
     但FTP工作方式的不同,数据端口并不总是20。这就是主动与被动FTP的最大不同之处。 
     (一)主动FTP  
        主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N大于1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
    针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:    
    1. 任何大于1024的端口N 到FTP服务器的21端口。(客户端初始化的连接)  
    2. FTP服务器的21端口 到大于1024的端口N。 (服务器响应客户端的控制端口) 
    3. FTP服务器的20端口 到大于1024的端口。(服务器端初始化数据连接到客户端的数据端口)
    4. 大于1024端口 到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口) 
 
可以简单概括为以下两点:
    1、主动FTP:  
            命令连接:客户端 (大于1024端口) ->  服务器 21端口  
            数据连接:服务器 20端口 ->  客户端(大于1024的端口)
 
(二)被动FTP  
    为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。
   在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。
   当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N 大于 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P大于 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。  
       对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:     
    1. 从任何大于1024的端口N 到服务器的21端口(客户端初始化的连接)  
    2. 服务器的21端口 到任何大于1024的端口N(服务器响应到客户端的控制端口的连接)
       
    3. 从任何大于1024端口N+1 到服务器的大于1024端口X(客户端初始化数据连接到服务器指定的任意端口)
     (X这个端口是个1025--5000的端口)
    4. 服务器的大于1024端口X 到远程的大于1024的端口N+1(服务器发送ACK响应和数据到客户端的数据端口)
 
2、被动FTP: 
            命令连接:客户端大于1024端口 -> 服务器 21端口 
            数据连接:客户端大于1024端口 -> 服务器大于1024端口
(通过21端口告诉客户机自己打开哪个端口传数据(这个端口是个1025--5000的端口)最后客户机连接服务器的所告知的端口。这个过程中服务器除了要开放21端口外,还要开放1025--5000的所有端口才行,如果这样开放就不是防火墙了。)
        有些ftp客户端默认就是使用PASV被动模式来连接ftp服务器的,如果我们的ftp服务器只支持主动模式,就会造成客户端可以进行用户验证,但无法列目录,也无法进行数据传送,并提示“你没有权限”这样的550返回错误。

  这里探讨一些解决方法,旧版本的IIS要修改注册表才可以实现指定少部分端口用于被动传输,新版的IIS则可以在IIS FTP内部直接设置哪些端口可以用于被动传输。

          如果无法升级,可以考虑使用serv-u软件架设ftp,这个FTP服务器提供了PASV的端口范围设置,这样一来就可以做一个相对简单又相对稳定的设置。
            最后在外部物理防火墙也要进行设置,
                方案:

静态端口地址映射,可以让用户通过外网地址+端口21来访问内网中特定的FTP服务;
                 在防火墙中设置ACL,充许用户可以通过TCP访问FTP服务器的6800-6900端口;

(三)主动与被动FTP优缺点:       
    主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。

(四)
在因特网上找到许多FTP服务器,有的要么只支持PORT,有的要么只支持PASV,有的是因为考虑安全因素,有的是因为条件限制等等。
        最好把你的FTP做成PORT和PASV方式都能支持的,这样不会使客户端在连接上受到困扰,特别是一些新手。
        比较容易理解的解释是针对FTP服务端而言的
PORT是主动模式,在建立数据通道时,服务端去连接别人
PASV是被动模式,在建立数据通道时,服务端被别人连接

建立数据通道时,用PORT模式还是PASV模式,选择权在于FTP客户端
但是是否支持还要看服务端
具体点说是这样
Port模式:
当客户端向服务端连接后,使用的是PORT模式,那么客户端B会发送一条命令告诉服务端(客户端B在本地打开了一个端口N在等着你进行数据连接),当服务端收到这个Port命令后 就会向客户端打开的那个端口N进行连接,这种数据连接就生成
Pasv模式:
当客户端B向服务端连接后,使用的是PASV模式,服务端会发信息给客户端,这个信息是(服务端在本地打开了一个端口M,你现在去连接我吧),当客户端收到这个信息后,就可以向服务端的M端口进行连接,连接成功后,数据连接也建立了
(五)
IE浏览器默认连接ftp为 被动模式连接
IE取消被动模式的方法:点浏览器的【工具】【Internet选项】【高级】使用被动ftp去掉该选项前的对勾,确定即可.
其他ftp软件的设置方法
A:Flashfxp取消被动模式的方法:
第一步:点选项>参数选择。
第二步,在跳出的窗口中,选择“代理/防火墙标识”
第三步,设置好用户名和密码,可以连上去了。
B:Cuteftp取消被动模式的方法:
第一步,点编辑>设置。
第二步:点防火墙,Pasv模式那里不要打勾
C、Leapftp取消被动模式的方法:
我手里的leapftp是英文版的。有兴趣的可以试一下:
FLASHGET设置:
flashget里的数据类型的设置:工具菜单-->选项-->代理服务器-->编辑“直接连接”-->去掉PASV前的勾,确定
(六)
在IIS中的FTP服务器默认是主动模式,如果要修改为被动模式
参考微软文档 
http://technet.microsoft.com/zh-cn/library/dd421710
在新版的IIS7中,可以再FTP设置中,添加FTP被动模式,和被动连接时服务端开放的端口

转载于:https://www.cnblogs.com/centos2017/p/7896824.html

FTP的连接方式(防火墙的配置)相关推荐

  1. vmware 网络连接方式的说明

    VMware网络连接方式(Host-only.NAT.Bridged)介绍及NAT环境下静态IP配置 我们在浏览器中输入www.baidu.com,会转到百度一下,你就知道的百度首页,是因为我们的操作 ...

  2. 防火墙的三种连接方式

    防火墙的三种连接方式 1.Telnet连接 1.在防火墙的Gigabitethernet0/0/0接口下进行配置. interface GigabitEthernet0/0/0  undo shutd ...

  3. 解决开启服务器防火墙导致ftp不能连接的问题

    解决开启服务器防火墙导致ftp不能连接的问题 参考文章: (1)解决开启服务器防火墙导致ftp不能连接的问题 (2)https://www.cnblogs.com/cuozhixu/p/6094393 ...

  4. VMware网络连接方式(Host-only、NAT、Bridged)介绍及NAT环境下静态IP配置

    常识 三大网络连接方式简介 一个实例 操作 设置vmware 虚拟网络编辑器 静态ip配置 VMware网络连接方式的选择及静态IP的配置是hadoop集群搭建的一个必不可少的环节. 常识 VMwar ...

  5. linux ftp服务器防火墙设置,【许望】linux(RHEL) 下 FTP(vsftpd) 服务器的防火墙配置...

    linux(RHEL) 下 FTP(vsftpd) 服务器的防火墙配置 FTP服务器在与客户端通讯的过程中会用到两个端口,一个是控制端口,通常是21/tcp,一个是数据端口,运行在主动模式下的FTP服 ...

  6. 华为防火墙ftp_华为防火墙如何配置ftp服务器映射到外网

    华为防火墙如何配置ftp服务器映射到外网 一. 要求: 公司搭建一台ftp服务器,需要映射到外网,供供应商上传文件. 但公司出口线路只有一条ADSL,IP地址是自动获取,随时会变化. 因此,需要申请一 ...

  7. 华为(huawei)USG6000的CLI命令行综合配置之Ensp真机连接 USG6000防火墙

    文章目录 前言 一.拓扑图及拓扑说明 二.配置步骤及验证 1.配置真机连接USG6000 前言 华为的USG系列防火墙一般部署在园区网出口中,很多朋友对USG系列如何进行配置不是太了解.本案例将用en ...

  8. Linux下CenterOS 7之网络连接方式及NAT网络配置

    在VM虚拟机中网络的连接方式,主要包括:桥连接.NAT模式.仅主机模式等,如下图所示: 下面简单介绍下桥连接.NAT模式.仅主机模式3种方式: 桥连接 使用此网络连接方式,虚拟机中的Linux是可以和 ...

  9. postgres远程连接方式配置

    连接远端postgres时需要指定IP地址,默认安装的postgres数据库配置只监控本地地址(localhost),其他主机是无法访问的, 这里通过一个简单的例介绍远程主机连接方式. 环境如下: 主 ...

最新文章

  1. 我的KT库之-----扩展方法
  2. ASP.NET Compilation and Deployment
  3. Openbox-桌面图标设置
  4. PTA 7-2 深入虎穴 (30 分)
  5. python跳出if_python跳出if
  6. java实现modbus rtu协议与 modscan等工具(4)rtu转tcp
  7. 无线WIFI I/O控制器技术分享
  8. 时空图卷积网络:一种用于交通预测的深度学习框架
  9. 混血网站诞生 公司相互嫁接成就新商业模式
  10. javaSE探赜索隐之三--<类与对象的爱恨情仇下>
  11. 用计算机刻录光盘,教你怎么用电脑刻录数据光盘
  12. SpringBoot实现CRUD
  13. STM32外部中断总结
  14. Python全国就业分布
  15. 每日一道leetcode(python)876. 链表的中间结点
  16. mysql之设置字段分隔符_mysql字段中使用逗号分隔符
  17. 输出1-100之间的素数
  18. 智能传播中的人机融合智能
  19. 轻轻松松搞懂神经网络
  20. android 仿课程格子,课程格子对比超级课程表 实用性大比拼

热门文章

  1. 【例8】合唱队形(《信息学奥赛一本通第五版》)
  2. 软著申请时的软件说明书如何制作
  3. vue部署到服务器_利用Gulp实现代码自动化部署
  4. STM32H743+CubeMX-ADC(16bit分辨率)+DMA采样三路模拟量(并行),没过采样。
  5. Python学习之Python安装
  6. 前端中什么是中台开发环境_Web前端开发中需要学习什么?会使用到哪些开发工具?...
  7. vs2015-OpenGL绘制三角形
  8. java 内存调优_JVM内存模型以及性能调优
  9. java时间差的百分之二十,Java对日期Date类进行加减运算、年份加减月份加减、时间差等等...
  10. qt 串口发送char 数组乱码_串口的波特相差多大会误码