FTP的主动模式和被动模式

1.1 PORT(主动模式)

在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,发送FTP用户名和密码,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令,告诉服务端客户端采用主动模式并开放了端口。FTP服务器接收到PORT命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。
在这里插入图片描述

1.2 PASV(被动模式)

在被动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,发送用户名和密码进行登陆,同时会开启N+1端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P(端口P的范围是可以设置的,后面会说到这个是很重要的)进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
在这里插入图片描述

1.3 被动模式抓包分析

ftp客户端连接服务器端要做SSL双向认证,所以会看到客户端使用59739端口来连接ftp服务端的2121端口,绿色的框框部分内容应该是服务端把服务端随机起的端口号40006加密发送给客户端,让客户端传输文件时,使用40006端口。

可以发现,客户端发送文件给服务端使用的端口号正是56740(等于59739+1)。发送文件使用的新的端口号,所以不再走TSL加密协议了。因为,登陆认证过程,只要登陆成功,就代表客户端和服务端是相互信任的了。这时候,是允许开启新的端口号来传输文件。

最后,有两行黑色的[Tcp Retransmission]数据包,这是两次重传信息。是因为,ftp服务器是安装在内网的,没有配置服务端传输文件的端口P的范围,而且,在防火墙上没有映射59740这个端口到外网去,所以会导致ftp客户端使用59740端口传输数据包到ftp服务端会失败的。Tcp协议重传三次,不成功就失败。
在这里插入图片描述

1.4 两种模式的比较

主动模式和被动模式的不同简单概述为: 主动模式传送数据时是“服务器”连接到“客户端”的端口(客户端开启数据端口);被动模式传送数据是“客户端”连接到“服务器”的端口(服务端开启数据端口)。

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

被动模式只需要服务器端开放端口给客户端连接就行了,如果服务端在防火墙内,也需要做端口映射才行。

1.5 被动模式入的坑

我们系统里FTP使用的是被动模式,而且服务是安装在小网内的,与大网通信,要做IP和端口映射。当时没收手动配置FTP服务端数据传输的端口范围,在防火墙上只是做了这么一段的30000-30010的端口映射。导致客服端(一种设备)上传的时候只有一次上传成功了,这是因为服务端随机开放的一个端口恰好在30000-30010范围之内。其他任何时候都上传不成功。抓包看,只有客服端连接服务端数据包。

所以,FTP服务安装在小网中(防火墙内部),使用被动模式的话,且客户端位于防火墙外部,要限制FTP服务起的数据传输端口范围,而且要把这些端口要映射出去。

1.6 如何选择

如果工作中一定要使用FTP服务器,在今天的互联网环境里面,使用FTP被动模式进行连接传输就可以了。如果只是想知道答案的朋友,看到这里就可以了。对技术和原理感兴趣的朋友,请继续往下看。

1.6.1 主动模式和被动模式区别

a. 主动模式传送数据时是“服务器”连接到“客户端”的端口;被动模式传送数据是“客户端”连接到“服务器”的端口。

b. 主动模式需要客户端必须开放端口给服务器,很多客户端都是在防火墙内,开放端口给FTP服务器访问比较困难;被动模式只需要服务器端开放端口给客户端连接就行了。

需要注意的是,被动模式和主动模式的登录过程,都是FTP客户端去连接FTP服务器。

1.6.2 为什么绝大部分互联网应用都是被动模式?

因为大部分客户端都是在路由器后面,没有独立的公网IP地址,服务器想要主动连接客户端,难度太大,在现在真实的互联网环境里面几乎是不可能完成的任务。
FTP服务器部署的时候,其默认采用的是主动操作模式。如果企业FTP服务器的用户都是在内部网络中的,即不用像外部网络的用户提供FTP连接的需求,那么采用这个默认操作方式就可以了。但是如果一些出差在外的员工或者员工在家庭办公时也需要访问企业内部的FTP服务器,而此时出于安全的考虑或者公网IP地址数量的限制,企业往往会把FTP服务器部署在防火墙或者NAT服务器的后面,此时这个主动操作模式就不行了。

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

参考:FTP的主动模式和被动模式工作原理及抓包分析

  • 24
    点赞
  • 144
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jerryean99

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值