MST

星途 面试题库

面试题:网络编程中FTP协议数据传输模式

在TCP/IP协议栈的FTP文件传输协议里,描述一下主动模式(Active Mode)和被动模式(Passive Mode)的数据传输过程及两者的区别。
24.6万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试

主动模式(Active Mode)数据传输过程

  1. 建立控制连接:客户端向服务器的21端口发起TCP连接,用于传输FTP命令和响应。
  2. 客户端发送PORT命令:客户端通过控制连接向服务器发送PORT命令,告知服务器自己用于接收数据的端口号。
  3. 服务器发起数据连接:服务器收到PORT命令后,使用20端口主动向客户端指定的端口发起TCP连接,建立数据连接用于传输文件数据。

被动模式(Passive Mode)数据传输过程

  1. 建立控制连接:同主动模式,客户端向服务器的21端口发起TCP连接,用于传输FTP命令和响应。
  2. 服务器发送PASV命令:客户端通过控制连接向服务器发送PASV命令,请求进入被动模式。服务器收到命令后,会开启一个临时端口(通常是1024以上的端口),并通过控制连接将这个端口号和服务器IP返回给客户端。
  3. 客户端发起数据连接:客户端收到服务器返回的信息后,使用自己的一个随机端口向服务器指定的临时端口发起TCP连接,建立数据连接用于传输文件数据。

两者区别

  1. 连接发起方
    • 主动模式:数据连接由服务器主动发起,连接到客户端指定的端口。
    • 被动模式:数据连接由客户端主动发起,连接到服务器指定的临时端口。
  2. 防火墙穿越
    • 主动模式:在存在防火墙的环境下,可能会遇到问题。因为防火墙通常配置为只允许外部连接进入特定端口,而主动模式下服务器需要主动连接客户端,防火墙可能阻止该连接。
    • 被动模式:更适合在有防火墙的环境中使用。因为是客户端主动发起数据连接,只要防火墙允许客户端向外发起连接,就可以顺利建立数据连接。
  3. 网络环境适应性
    • 主动模式:适用于客户端处于公网,且没有复杂网络限制的环境。
    • 被动模式:在各种复杂网络环境(如NAT环境)下都能较好地工作,因为数据连接始终由客户端发起,对网络环境的适应性更强。