FTP协议有两种工作方式:PORT(主动)方式和PASV(被动)方式。连接是采用哪种模式是由客户端采用哪种方式连接服务端来决定的。 目前,我们使用较为广泛的是PASV(被动为出于对服务器安全方面的考虑,我们一般会更改默认的FTP21端口,并提供几个被动模式端口用于FTP传输。
ftp的主动模式
主动模式的工作原理:
- 客户端发起请求,从非特殊端口(N>=1024)连接服务端的21号端口。
- 客户端开始监听N+1端口,并发送PORT命令告知服务端。
- 服务器会数据端口20连接到客户端在第二步中监控的N+1端口。
ftp的被动模式
被动模式的工作原理:
- 客户端发起请求时,会打开两个非特殊端口(N>=1024,N+1)。
- 第一个端口N连接服务端的21端口,发送PAST命令,这样服务端会开启一个非特殊端口(P>=1024)。
- 服务端发送POST命令给客户端,客户端会从N+1端口去连接服务端的P端口。