MST

星途 面试题库

面试题:网络编程:FTP协议中数据连接建立的过程是怎样的

请详细阐述FTP协议里控制连接建立后,数据连接是如何建立的,包括主动模式和被动模式下数据连接建立流程的区别。
18.1万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试

1. 控制连接建立后数据连接建立概述

在FTP协议中,控制连接主要用于客户端与服务器之间传输命令和响应,而数据连接则专门用于传输文件数据等实际内容。在控制连接建立成功后,才会进行数据连接的建立,且存在主动模式(PORT模式)和被动模式(PASV模式)两种方式。

2. 主动模式(PORT模式)下数据连接建立流程

  1. 客户端准备:客户端在控制连接建立后,随机开启一个端口(大于1023),假设为Cport,并通过控制连接向服务器发送PORT命令,告知服务器自己用于接收数据的IP地址和端口号(Cport)。
  2. 服务器响应:服务器收到PORT命令后,使用其固定的20端口(FTP数据端口)向客户端指定的Cport发起连接请求。
  3. 连接建立:客户端在Cport端口上监听,接收到服务器的连接请求后,完成数据连接的建立。此时,数据传输就可以通过这个数据连接进行,如上传或下载文件。

3. 被动模式(PASV模式)下数据连接建立流程

  1. 客户端请求:客户端通过控制连接向服务器发送PASV命令,请求进入被动模式。
  2. 服务器准备:服务器收到PASV命令后,随机开启一个端口(大于1023),假设为Sport,并通过控制连接将服务器用于传输数据的IP地址和该随机端口号(Sport)返回给客户端。
  3. 客户端连接:客户端收到服务器返回的信息后,使用自己随机开启的一个端口(大于1023),假设为Cport,向服务器的Sport发起连接请求。
  4. 连接建立:服务器在Sport端口上监听,接收到客户端的连接请求后,完成数据连接的建立。之后,数据传输通过此数据连接进行。

4. 主动模式和被动模式数据连接建立流程的区别

  • 发起连接的一方不同:主动模式下是服务器主动发起数据连接到客户端指定端口;而被动模式下是客户端主动发起数据连接到服务器指定端口。
  • 端口使用不同:主动模式中服务器使用固定的20端口发起连接,客户端指定自己的一个随机端口;被动模式下服务器随机开启一个端口,客户端同样使用自己的一个随机端口去连接服务器的随机端口。
  • 网络环境适应性不同:主动模式在客户端处于防火墙之后时,可能会因为防火墙阻止服务器发起的连接而导致数据连接建立失败;被动模式则更适用于客户端在防火墙之后的场景,因为是客户端主动发起连接,一般防火墙对出站连接限制较少。