FTP协议小结
# FTP 协议
FTP 协议有两种工作方式:PORT 方式和 PASV 方式,中文意思为主动式和被动式。
相比于 HTTP,FTP 协议要复杂得多。复杂的原因,是因为 FTP 协议要用到两个 TCP 连接,一个是命令链路,用来在 FTP 客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。
PORT(主动)方式的连接过程是:服务器开放一个端口,通知客户端连接,服务端接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用 PORT 命令告诉服务器:“我打开了一个 1024 + 的随机端口,你过来连接我”。于是服务器从 20 端口向客户端的 1024 + 随机端口发送连接请求,建立一条数据链路来传送数据。
PASV(被动)方式的连接过程是:客户端向服务器的 FTP 端口(默认是 21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用 PASV 命令告诉客户端:“我打开了一个 1024 + 的随机端口,你过来连接我”。于是客户端向服务器的 1024 + 端口发送连接请求,建立一条数据链路来传送数据。
从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而 FTP 的复杂性就在于此。