原文链接:FTP的两种传输模式 - 知乎
最近在给学生讲FTP,抽时间总结一下FTP的两种传输模式。大家都知道FTP有两种传输模式,一种是主动模式也叫PORT模式,另外一种是被动模式,也叫PASV模式。
其实,FTP客户端和服务器之间需要建立两条TCP连接,一条是控制连接,用来发送控制指令,另外一条是数据连接,真正的文件传输是通过数据连接来完成的。如图对于两种传输模式来说,控制连接的建立过程都是一样,均为服务器监听21号端口,客户端向服务器的该端口发起TCP连接。两种传输模式的不同之处体现在数据连接的建立,对于数据连接的建立,主被动模式的不同在于数据连接的建立“服务器”是“主动”还是"被动",主动模式服务器通过控制连接知道客户端监听的端口后,使用自己的20号端口作为源端口,“主动”发起TCP数据连接。而被动模式服务器监听1024-65535的一个随机端口,并通过控制连接将该端口告诉客户端,客户端向服务器的该端口发起TCP数据连接,这种情况下数据连接的建立相当于服务器是“被动”的。
根据以上的分析,给大家总结一下。
(1)我们常说的FTP协议默认端口21和20,要注意这个21号端口是必须的,但是,20号端口未必一定用得到。
(2)如果FTP客户端在私网,FTP服务器在公网(云主机的应用场景)应该使用被动模式,因为这种应用场景FTP服务器访问不到在私网的FTP客户端,而FTP客户端可以访问到FTP服务器,但是,FTP服务器的防火墙除了应该放行21号端口的TCP连接,还应放行FTP服务器数据连接的TCP端口。
(3) 在服务器端主被动两种传输模式都支持的前提下,FTP传输的模式由FTP客户端来决定,如果使用软件的话可以在软件中进行配置使用哪种传输模式,如果在windows下使用浏览器或者是我的电脑地址栏输入FTP URL访问FTP服务器的话,可以到浏览器 Internet选项|高级| 中进行配置,如下图