前言
ftp这个简单服务竟然还区分主动和被动。我第一次接触到它,是在一次测试环境联调排查问题时,发现了网络通信异常,最后查资料才发现了ftp的主动和被动模式。
结论
先来上个简单的结论。
主动模式(port):客户端连ftp的默认21端口,先验证用户名密码,然后服务器会开放20端口,再去主动连客户端,连上后进行数据传输。
被动模式(pasv):客户端连ftp的默认21端口,先验证用户名密码,然后服务器会开放一个随机端口(大于1024)告诉客户端,等着客户端来连自己,连上后进行数据传输。
主动模式
ftp客户端使用随机端口n(大于1024)连接到ftp服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端开放n+1端口(如果端口已经被占用,则会再加1),发送 port命令到ftp服务器,告诉服务器客户端采用主动模式并开放端口。
ftp服务器收到port主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据。
被动模式
ftp客户端使用随机端口n(大于1024)连接ftp服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送pasv命令到ftp服务器, 服务器在本地开放一个端口(大于1024),然后把开放的端口告诉客户端, 客户端再通过n+1端口连接到服务器开放的端口进行数据传输。
如何选择
知道了主动模式与被动模式的原理后,我们再来总结一下二者的区别:
二者的区别主要在于建立数据传输连接的时候,主模式的连接发起方为服务器端,使用20号端口连接客户端的n+1端口建立数据连接。
被动模式连接发起方为客户端,客户端使用端口号+1去连接服务器的某一高位端口。
所以,使用哪一种模式,取决于你的防火墙是如何设置的。
我们搭建完ftp服务器后,通常会在防火墙放行21和20端口,只要客户端这边没有特殊的防火墙规则,那么使用主动模式一定没问题。
反过来,如果客户端这边有很严格的防火墙规则,而服务端防火墙规则可控(需要放行21和一个随机端口范围),那么就使用被动模式。
有一种常见问题是:服务器端只开放了21端口, 客户端机器没开放任何端口。
ftp客户端连接采用的被动模式,结果客户端能登录成功,但是无法list列表和读取数据。
很明显,是因为服务端没开放被动模式下的随机端口导致。
由于被动模式下,服务器端开放的端口随机,但是防火墙要不能全部开放,解决的方案是,在ftp服务器配置被动模式下开放部分随机高位端口(范围在ftp服务器软件设置,可以设置任意1024以上的端口段),然后在防火墙设置规则,开放服务器端相应的端口号即可。
华为系统今秋面世_华为鸿蒙系统重要吗
5G-A华彩开局,风流还看北京城
温敏二极管工作原理
Pico W的无线功能
小米华为手机行业里的巨头为何坚持要做笔记本呢?
FTP的主动模式和被动模式
华为轮值董事长胡厚崑表示我们的芯片战略没有做出任何改变
NVIDIA 在 Microsoft Azure 上推出面向全球企业和初创公司的生成式 AI Foundry 服务
MS1100 完美替代ADS1100
芯盾时代中标广州农商银行 如期完成国密改造提升自主可控能力
高效多功能电烙铁的工作原理_高效多功能电烙铁的优点
如何检查和开启Windows防火墙
电容式传感器的应用_电容式传感器测量电路
利安德巴赛尔将在 CHINAPLAS 2023 国际橡塑展上呈现可持续的生活日常
氢能源成为新能源汽车产业新风口
联想Z5 Pro GT骁龙855版被推迟到1月29日开售,引发了很多消费者的不满
网友用了几天红米Note4X之后都不想用iPhone 6s了
Molex推出8极Brad Micro-Change M12圆形混合技术(CHT)连接器
弄懂HTTP缓存机制及原理
如何成功部署人工智能?