你知道FTP的控制连接和数据连接分别是做什么的吗?

你知道FTP的主动模式和被动模式有什么区别吗?

你知道实际工作中,会使用主动FTP还是被动FTP吗?又是为什么呢?

一、 FTP的两种连接

FTP(文件传输协议)是最典型的双连接协议,需要用到控制连接和数据连接。

控制连接,顾名思义,用于传输控制指令,不涉及具体的文件传输。

比如协商ftp的验证方式(是否允许匿名登陆,允许匿名的话用什么来代表身份,不允许的话如何传用户名密码),协商ftp的数据连接要使用主动模式还是被动模式等。

数据连接用于真正的文件传输,包括列出文件列表,上传下载文件等。

二、 主动FTP和被动FTP

FTP有主动和被动两种模式,最关键的区别在于两点

1、数据连接由谁发起

2、数据连接的端口号是什么

下面分别来看二者的工作过程,

主动FTP的工作过程

 

第一步:客户端使用随机端口,向服务器端21号端口发起建立控制连接的请求

第二步:客户端通过控制连接,告诉服务器端,自身开放的数据连接的端口号(随机产生的)。

第三步:服务器使用20号端口,主动向客户端发起建立数据连接的请求,接下来开始上传或下载文件。

第四步:当文件传输完成,关闭TCP连接

被动FTP的工作过程

 

第一步:客户端使用随机端口,向服务器端21号端口发起建立控制连接的请求。

第二步:服务器端通过控制连接,告诉客户端,自身开放的数据连接的端口号(随机产生的)。然后服务器被动等待客户端发起数据连接的建立请求。

第三步:客户端使用随机端口号,向服务器端的数据连接端口号发起TCP连接,然后开始文件传输。此时两边的端口号都是随机的。

第四步:文件传输完成,关闭TCP连接

发现问题了吗?被动FTP的数据连接,客户端和服务器端都是随机端口号,如果做ACL放行FTP流量,没有确定的端口,怎么操作呢?

可以放行所有端口,这样又带来了安全隐患,很多场景下,因信息安全等级要求,也不允许放行所有端口,如何解决这个问题?

可能会想,用主动FTP就行了,数据连接是固定的20,可以方便的做放行策略。

但是问题又来了,主动FTP是服务器主动,客户端那边其实是被动接入,很多客户端的防火墙(包括win10自带的软件防火墙)都是默认放行出站连接,拒绝入站连接。

这时的FTP对客户端来说,是入站连接,仍然会被防火墙禁止掉。

那最终这个问题,在实际工作中如何解决才好呢,欢迎在评论区讨论。

当然,如果你需要更多“网工”资料,可以私信问我要~

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐