面试题答案
一键面试主动模式(Active Mode)数据传输过程
- 建立控制连接:客户端向服务器的21端口发起TCP连接,用于传输FTP命令和响应。
- 客户端发送PORT命令:客户端通过控制连接向服务器发送PORT命令,告知服务器自己用于接收数据的端口号。
- 服务器发起数据连接:服务器收到PORT命令后,使用20端口主动向客户端指定的端口发起TCP连接,建立数据连接用于传输文件数据。
被动模式(Passive Mode)数据传输过程
- 建立控制连接:同主动模式,客户端向服务器的21端口发起TCP连接,用于传输FTP命令和响应。
- 服务器发送PASV命令:客户端通过控制连接向服务器发送PASV命令,请求进入被动模式。服务器收到命令后,会开启一个临时端口(通常是1024以上的端口),并通过控制连接将这个端口号和服务器IP返回给客户端。
- 客户端发起数据连接:客户端收到服务器返回的信息后,使用自己的一个随机端口向服务器指定的临时端口发起TCP连接,建立数据连接用于传输文件数据。
两者区别
- 连接发起方:
- 主动模式:数据连接由服务器主动发起,连接到客户端指定的端口。
- 被动模式:数据连接由客户端主动发起,连接到服务器指定的临时端口。
- 防火墙穿越:
- 主动模式:在存在防火墙的环境下,可能会遇到问题。因为防火墙通常配置为只允许外部连接进入特定端口,而主动模式下服务器需要主动连接客户端,防火墙可能阻止该连接。
- 被动模式:更适合在有防火墙的环境中使用。因为是客户端主动发起数据连接,只要防火墙允许客户端向外发起连接,就可以顺利建立数据连接。
- 网络环境适应性:
- 主动模式:适用于客户端处于公网,且没有复杂网络限制的环境。
- 被动模式:在各种复杂网络环境(如NAT环境)下都能较好地工作,因为数据连接始终由客户端发起,对网络环境的适应性更强。