FTP 模型
-
用户接口:提供一个用户接口并使用客户端协议解释器的服务
-
客户端协议解释器:向远程服务器发送命令 并建立客户数据传输过程
-
服务端协议解释器:响应客户协议机发出的命令并驱动服务端数据传输过程
-
客户端数据传输协议:负责完成和服务器数据传输过程及客户端本地文件系统的通信
-
服务端数据传输协议:负责完成和客户数据过程及服务器端文件系统的通信
通信接口
21端口:控制连接
- FTP服务端监听21端口等待建立连接,只有身份验证通过,才可以顺利建立连接
- 在FTP连接期间,控制连接始终保持通常的连接状态。在数据连接存在期间,控制连接必须存 在;一旦控制连接断开,数据连接会自动关闭
20端口:数据连接
- FTP服务端监听20端口来等待数据连接
- 数据连接依赖于控制连接
两种连接方式
FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。
在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放 N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端 口(通常是20)来连接客户端指定的端口N+1,进行数据传输。
在被动模式下,FTP库户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开 启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开 放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到 命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
主动连接
- 通过三次握手,建立控制连接;客户端的源端口是高位随机端口,目标端口是21端口
- 控制连接建立后,客户端进行份验证,协商数据连接采用主动模式;随后客户端会 向FTP服务器发送Port报 文,表明自己监听的IP+端口,并等待FTP服务器(20端 口)向自己监听的IP+端口发起数据连接请求。
- 服务端发起数据连接请求,建立数据连接
被动连接
- 通过三次握手,建立控制连接;客户端的源端口是高位随机端口,目标端口是21端口;
- 控制连接建立后,客户端进行身份验证,协商数据连接采用被动模式;随后客户端 会向服务器发送PASV报文,表示我们用被动模式
- 服务端收到PASV报文,于是向客户端发送Port报文,表明自己监听的IP+端口
- 客户端发起数据连接请求,建立数据连接