首先要知道FTP只支持TCP协议,不支持UDP协调的。
ftp主动模式与被动模式
主动模式(PORT): 客户端向服务端的FTP端口(默认是21)发送请求,服务端ftp守护进程/线程收到请求后,建立一条命令链接。当需要传输数据时,
客户端通过这个命令链接发送命令给服务端PORT命令,告诉服务端:“我建立了一个XX端口,你来链接我吧”,于是服务端就通过20端口
向客户端发送XX端口链接请求,从而建立一条数据链接,然后就可以通过这数据链接进行数据传输了。
被动模式(PASV): 客户端向服务端的FTP端口(默认是21)发送请求,服务端ftp守护进程/线程收到请求后,建立一条命令链接。当需要传输数据时,
服务端发送一条PASV命令,告诉客服端:“我建立了一个XX端口,你过来连接我吧”,于是客户端就向XX端口发送链接请求,从而建立数据
链接,然后就可以传输数据了。
相同点:以相同的方式建立命令链接。
区别点:建立数据链接的方式不同。
主动FTP:
命令连接:客户端 >1023端口 -> 服务器 21端口
数据连接:客户端 >1023端口 <- 服务器20端口
被动FTP:
命令连接:客户端 >1023端口 -> 服务器 21端口
数据连接:客户端 >1023端口 -> 服务器 >1023端口