ftp协议经常被用来传输文件等,该协议有两种模式 1.主动模式 2.被动模式
1.主动模式下 客户端主动与ftp服务端(默认21端口)建立连接,同时开启本地一个端口X,并告诉服务端该端口,之后等待服务端(默认20端口)连接该端口X,进行数据传输操作。
2.被动模式下 客户端主动与ftp服务端(默认21端口)建立连接,同时告诉服务端目前采用被动模式进行数据传输,此时服务端会开启一个端口Y,并告知客户端该端口,此时客户端再使用本地其他端口连接该端口进行数据传输。
有时候,我们对网络的安全性要求很高,由于防火墙的限制,不能随意开启本地端口,此时若是主动模式下可使用代码控制客户端开启本地数据传输端口X的范围。 若是被动模式下,可以在服务端进行配置,控制Y端口的开启范围。这样我们就能控制ftp开启数据传输端口时的范围,进行相关网络防火墙的配置。
但使用k8s等服务编排工具时,由于内部服务的沙箱式设计,导致采用主动模式时,客户端开启本地的端口无法暴露给服务端,即使使用proxy等代理技术,但由于端口并非长期处于监听转态,所以依旧无法暴露给外部服务,此时只能采用被动模式,进行ftp传输。 但有极特殊的情况,服务端由于某些限制,比如网络防火墙策略是端口到端口,此时无法确定客户端的端口范围,则无法采用被动模式。 此种情况建议采用sftp协议进行数据传输,sftp基于ssh协议,数据传输默认使用22端口,由于链路是加密的,效率比ftp低,但它不存开启新的数据传输端口,所以不受网络安全策略的影响,及其适合这种沙箱环境的数据传输。
原文地址:https://www.cnblogs.com/hzx333333/p/12032008.html
时间: 2024-10-08 15:19:46