Skip to content

408

计算机网络

CN-06-03 FTP文件传输协议


一、定位信息

  • 圈层:核心层
  • 前置知识:需要了解C/S模型、TCP协议、端口号的基本概念
  • 知识网络位置:FTP是互联网最早的应用层协议之一,是理解"控制连接与数据连接分离"这一重要设计思想的典型案例
  • 考点热度等级M级(中频常考)——主要考查FTP的工作原理,特别是控制连接与数据连接的区别(主动/被动模式)

二、知识点讲解

2.1 FTP概述

FTP(File Transfer Protocol,文件传输协议)是互联网上最早使用的协议之一(RFC 959),用于在客户端和服务器之间传输文件。FTP采用C/S模型,运行在TCP之上。

FTP的主要功能:

  1. 文件的上传(PUT)和下载(GET)
  2. 目录的浏览和管理
  3. 文件的重命名和删除
  4. 不同类型文件的传输(ASCII模式、二进制模式)

2.2 FTP的双连接架构

FTP最显著的特点是使用两条TCP连接

连接类型端口号用途生命周期
控制连接服务器端口21传输FTP命令和响应整个会话期间保持
数据连接服务器端口20(主动模式)传输文件数据每次传输时建立,传输完释放

为什么要分离控制和数据连接?

  1. 协议简单化:控制命令和数据传输互不干扰
  2. 灵活性:控制连接始终保持,数据连接按需建立
  3. 错误隔离:数据传输失败不影响控制连接

2.3 FTP工作过程

FTP的工作过程分为两个阶段:

阶段一:建立控制连接

  1. 客户端打开一个随机端口,向服务器的21号端口发起TCP连接
  2. 连接建立后,客户端可以发送FTP命令(USER、PASS、LIST、RETR、STOR等)
  3. 服务器对每个命令返回响应码(如220表示服务就绪,331需要密码,230登录成功)

阶段二:建立数据连接传输文件

  1. 当需要传输文件或目录列表时,建立数据连接
  2. 数据连接的建立方式取决于主动模式或被动模式(见下文)
  3. 文件传输完成后,数据连接释放
  4. 控制连接继续保持,等待下一个命令

2.4 主动模式(PORT模式)与被动模式(PASV模式)

这是FTP最重要的考点之一。

主动模式(Active Mode)

  1. 客户端向服务器的21号端口建立控制连接
  2. 客户端发送PORT命令,告知服务器自己的数据端口号N
  3. 服务器用20号端口主动向客户端的N端口建立数据连接
客户端(端口N)              服务器
     |                         |
     |--- 控制连接(→21) ------>|  控制连接
     |                         |
     |--- PORT N ------------>|  告知客户端数据端口
     |                         |
     |<-- 数据连接(20→N) ----|  服务器主动连接客户端
     |                         |

被动模式(Passive Mode)

  1. 客户端向服务器的21号端口建立控制连接
  2. 客户端发送PASV命令
  3. 服务器开启一个随机端口P,告知客户端
  4. 客户端主动向服务器的P端口建立数据连接
客户端(端口M)              服务器(端口P)
     |                         |
     |--- 控制连接(→21) ------>|  控制连接
     |                         |
     |--- PASV --------------->|  请求被动模式
     |<-- 227 端口P -----------|  告知服务器数据端口
     |                         |
     |--- 数据连接(M→P) ----->|  客户端主动连接服务器
     |                         |

主动模式与被动模式的对比

对比项主动模式(PORT)被动模式(PASV)
数据连接发起方服务器主动连接客户端客户端主动连接服务器
服务器数据端口固定为20随机端口
客户端防火墙需要开放入站端口不需要开放入站端口
服务器防火墙不需要额外配置需要开放随机端口范围
NAT穿越客户端在NAT后会有问题服务器在NAT后会有问题
适用场景客户端有公网IP客户端在防火墙/NAT后

2.5 FTP响应码

FTP响应码为三位数字,第一位表示含义类别:

首位含义示例
1xx正确的初步响应125 数据连接已打开
2xx正确完成200 命令成功,230 登录成功
3xx需要进一步信息331 用户名正确,需要密码
4xx暂时错误425 无法打开数据连接
5xx永久错误530 登录失败

三、记忆与理解辅助

  1. 口诀:"FTP双连接,21管控制,20管数据;主动服务器连你,被动你连服务器"——记住FTP的核心架构和两种模式。

  2. 数字记忆:控制连接端口=21,数据连接端口(主动模式)=20。记忆:"21控制(谐音'爱你'控制),20传输(谐音'爱死'传输)"。

  3. 对比记忆:主动vs被动——谁发起数据连接谁就是"主动方"。主动模式=服务器主动连客户端(服务器发起),被动模式=客户端连服务器(客户端发起)。名字看似反直觉,但"主动/被动"指的是服务器的行为——主动模式中服务器主动打开数据连接。


四、例题与精解

例题1(基础巩固)

题目:关于FTP协议,下列说法错误的是( )。

A. FTP使用TCP协议传输数据

B. FTP的控制连接在整个会话期间一直保持

C. FTP在主动模式下使用20号端口建立数据连接

D. FTP的控制连接和数据连接使用同一个端口号

命题意图:考查FTP双连接架构的基本特点。

精解

  1. 审题分析:找出错误的说法。

  2. 解题思路:逐一核对FTP的基本特性。

  3. 完整步骤

    • A选项:FTP基于TCP传输。正确
    • B选项:控制连接从登录到退出一直保持。正确
    • C选项:主动模式下服务器用20号端口发起数据连接。正确
    • D选项:FTP的控制连接使用21号端口,数据连接使用20号端口(主动模式)或随机端口(被动模式),不使用同一个端口错误
  4. 方法反思:FTP双连接架构是其最核心的特点,控制连接(21)和数据连接(20/随机端口)必须区分。

答案:D


例题2(中等提升)

题目:主机H(IP地址为192.168.1.100,位于NAT后面)需要从FTP服务器S(IP地址为203.0.113.1)下载文件。如果使用FTP主动模式(PORT模式),可能会遇到什么问题?应如何解决?

命题意图:考查FTP主动模式在NAT环境下的工作原理及其局限性,理解被动模式的必要性。

精解

  1. 审题分析:主机H在NAT后面,使用主动模式,需要分析可能出现的问题。

  2. 解题思路:主动模式下服务器需要主动连接客户端的数据端口,NAT会阻止外部主机主动连接内网主机。

  3. 完整步骤

    • 主动模式下,H向S的21号端口建立控制连接——这个方向没有问题(内网→外网,NAT可以处理)
    • H发送PORT命令,告知S自己的内网IP和数据端口——但这个内网地址(192.168.1.100)对S来说是不可路由的
    • 即使S知道H的真实公网IP和端口,NAT设备也不允许外部主机主动向内网主机发起连接(除非有端口映射)
    • 结果:S无法建立到H的数据连接,文件传输失败

    解决方案

    • 使用被动模式(PASV):被动模式下由H主动向S的数据端口发起连接,NAT可以正常处理内网→外网的连接
    • 或在NAT设备上配置端口映射,允许FTP数据连接通过
  4. 方法反思:这是FTP在现代网络环境中面临的典型问题。理解主动/被动模式的区别不仅是为了考试,也对理解实际网络工程问题有帮助。


五、考情分析

  • 考查频次:近5年408真题中FTP相关题目约出现2~4次
  • 常见题型:选择题(双连接、主动/被动模式、端口号)
  • 分值占比:2~4分
  • 命题趋势:FTP的考查相对稳定,主要围绕双连接架构和主动/被动模式。近年可能会结合网络安全(防火墙/NAT)场景考查
  • 基于大纲与命题规律推测

六、易错点提醒

  1. 错误表现:混淆控制连接和数据连接的端口号

    • 错误原因:两条连接容易搞混
    • 正确理解/做法:控制连接=21号端口(始终使用),数据连接=20号端口(主动模式)或随机端口(被动模式)。记住"21管命令,20管数据"。
  2. 错误表现:认为FTP只使用一个TCP连接

    • 错误原因:大多数应用层协议确实只用一个连接
    • 正确理解/做法:FTP的双连接架构是其独特设计——控制连接在整个会话期间保持,数据连接按需建立和释放。
  3. 错误表现:将主动/被动模式的"主动"理解反了

    • 错误原因:直觉上认为"主动"是客户端主动
    • 正确理解/做法:主动/被动是描述服务器的行为。主动模式=服务器主动向客户端发起数据连接,被动模式=服务器被动等待客户端发起数据连接。
  4. 错误表现:认为FTP是无状态协议

    • 错误原因:与HTTP混淆
    • 正确理解/做法:FTP是有状态协议——服务器需要维护用户的登录状态、当前目录等信息。控制连接释放后状态才丢失。

七、来源标注

  • 依据2026考研统考大纲·计算机网络部分
  • 依据《计算机网络(第8版)》谢希仁版
  • 依据RFC 959 - File Transfer Protocol

考研全科复习资料 - 基于2026考研统考大纲