FTP主被动模式解析及端口映射
  

woshishui 13739

{{ttag.title}}

FTP主动模式和被动模式的比较及端口映射


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的端口到FTP服务器的21端口。(客户端初始化的连接)  
    2. FTP服务器的21端口到大于1024的端口。 (服务器响应客户端的控制端口)
    3. FTP服务器的20端口到大于1024的端口。(服务器端初始化数据连接到客户端的数据端口)
    4. 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)


(二)被动FTP
    为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。

   在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。

   当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。  

       对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:     
    1. 从任何大于1024的端口到服务器的21端口(客户端初始化的连接)  
    2. 服务器的21端口到任何大于1024的端口(服务器响应到客户端的控制端口的连接)
    3. 从任何大于1024端口到服务器的大于1024端口(客户端初始化数据连接到服务器指定的任意端口)
    4. 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)

     以上关于主动和被动FTP的解释,可以简单概括为以下两点:
   1、主动FTP:  
            命令连接:客户端 >1024端口 -> 服务器 21端口  
            数据连接:客户端 >1024端口 <- 服务器 20端口
    2、被动FTP:
            命令连接:客户端 >1024端口 -> 服务器 21端口
            数据连接:客户端 >1024端口 -> 服务器 >1024端口

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


总结:
主动模式下,端口映射:TCP20,TCP21
被动模式下,端口映射:TCP21,及大于1024的TCP随机端口

如有不恰当地方,欢迎大家指正

打赏鼓励作者,期待更多好文!

打赏
4人已打赏

Tassel 发表于 2016-11-7 10:04
  
get了,赞一个
北回归线 发表于 2016-11-7 10:07
  
细致全面,好贴,收藏了
tyjhz 发表于 2016-11-7 10:08
  
好贴,赞一下
陈智强 发表于 2016-11-7 10:12
  
赞一个
Sangfor_闪电回_朱丽 发表于 2016-11-7 10:16
  
看了楼主的分享,对FTP有了更深的了解,对日常工作的帮助很大,感谢!
基业傲腾_饶林瑞 发表于 2016-11-7 10:29
  
先赞完再细看。
JN——M 发表于 2016-11-7 10:36
  
闲游散人 发表于 2016-11-7 14:38
  
主动模式(PORT)和被动模式(PASV)。主动模式是从服务器端向客户端发起连接;被动模式是客户端向服务器端发起连接。两者的共同点是都使用 21端口进行用户验证及管理,差别在于传送数据的方式不同,PORT模式的FTP服务器数据端口固定在20,而PASV模式则在1025-65535之间 随机。
Wayne 发表于 2016-11-10 18:18
  
在NAT和防火墙横行的今天,主动模式基本上就费了,再加上其明文传输的特性,公网除了一些资源站点还在用之外,其它基本上就不用了。虽然也能配置成ftps走ssl/tls加密的,但服务端要搞证书,客户端也要选择特殊的连接,对一般用户而言,又不方便,也很少人用。

基于上述情况,FTP就只能龟缩在内网做文件服务器。即使做文件服务器,由于编码问题,在不同平台或客户端上,可能会遇到乱码问题,再加上便利性和权限控制等,又斗不过CIFS和域控,也用得不多了。还有一些场景就是FXP或者用软件做自动同步之类的,才用ftp了。

回到主动模式和被动模式的本身,无论是放内网,还是外网,从服务器管理本身来说,都会配置成被动模式,以避免反连客户端,被防火墙给干掉。
发表新帖
热门标签
全部标签>
每日一问
功能体验
技术笔记
新版本体验
技术咨询
2023技术争霸赛专题
干货满满
技术盲盒
标准化排查
产品连连看
GIF动图学习
信服课堂视频
安装部署配置
秒懂零信任
自助服务平台操作指引
技术晨报
深信服技术支持平台
答题榜单公布
卧龙计划
畅聊IT
答题自测
云计算知识
通用技术
安全攻防
每日一记
sangfor周刊
资源访问
排障笔记本
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
上网策略
测试报告
日志审计
问题分析处理
流量管理
运维工具
用户认证
原创分享
解决方案
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
迁移
社区帮助指南
地址转换
虚拟机
存储
加速技术
产品预警公告
玩转零信任
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
纪元平台
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选

本版版主

12
185
6

发帖

粉丝

关注

本版达人

LoveTec...

本周分享达人

新手24116...

本周提问达人