FTP的中文名称是“文件传输协议”,是File Transfer Protocol三个英文单词的缩写。FTP协议是TCP/IP协议组中的协议之一,其传输效率非常高,在网络上传输大的文件时,经常采用该协议。
FTP由FTP服务器和FTP客户端组成,两个方向可以互传文件。
左侧为客户端,右侧为FTP服务器,无论是上传还是下载,客户端与服务器之间都会建立2个TCP连接会话,绿色是控制连接,红色的是数据连接。其中,控制连接用于传输FTP命令,如:删除文件、重命名文件、下载文件、列取目录、获取文件信息等。真正的数据传输时通过数据连接来完成的。
默认情况下,服务器21端口作为命令端口,20端口为数据端口。但被动模式下就有所差别了。
刚接触FTP的朋友,经常搞不清楚FTP的主动模式和被动模式,造成连接被防火墙拦截,下面我们就详细了解下FTP的这两种模式:
FTP主动模式
首先,来了解下FTP的主动模式,主动模式是FTP的默认模式,也称为PORT模式。
第二步,在控制连接建立成功后,服务器会使用数据端口20,主动连接客户端的N+1端口以建立数据连接。这就是FTP主动模式的连接过程。
我们可以看到,在这条红色的数据连接建立的过程中,服务器是主动的连接客户端的,所以称这种模式为主动模式。
但这种模式对客户端的管理不利,因为FTP服务器20端口连接客户端的数据端口时,有可能被客户端的防火墙拦截掉。
FTP被动模式
上面所讲的是FTP主动模式,简单的理解就是服务器的数据端口20主动连接客户端的数据端口,来建立数据连接,用来传输数据,这个数据连接的建立有可能被客户端防火墙拦截掉。为了解决这个问题就衍生出另外一种连接模式---被动模式。被动模式也称为passive模式。
第二步,客户端的数据端口N+1去连接服务器的数据端口P,建立数据连接。
我们可以看到,在这条红色的数据连接建立的过程中,服务器是被动的等待客户端来连接的,所以称这种模式为被动模式。
但对服务器端的管理不利。因为客户端数据端口连到FTP服务器的数据端口P时,很有可能被服务器端的防火墙阻塞掉。
原文:https://blog.51cto.com/263784/2558220