首页/计算机网络/06-application/FTP协议 🔗 在 Obsidian 中打开
计算机网络 · 06-application

FTP协议

难度 ★★★重要度 ★★★★★ 考查频率 低 计算机网络/应用层FTP文件传输主动模式被动模式控制连接
速查
FTP 使用 两个 TCP 连接:控制连接(端口 21,全程保持)传输命令,数据连接(端口 20 或随机)传输文件,按需建立。主动模式由服务器发起数据连接,被动模式由客户端发起(更防火墙友好)。

一、核心概念

FTP 概述

  • 文件传输协议(File Transfer Protocol)
  • 用于在客户端和服务器之间传输文件
  • 使用 TCP 协议
  • 采用 C/S 模型

FTP 的特点

- 可靠传输(基于 TCP)
- 支持双向传输(上传和下载)
- 提供交互式访问
- 支持 ASCII 和二进制传输模式

二、双连接机制

控制连接与数据连接

FTP 使用两个 TCP 连接:

1. 控制连接(端口 21):
   - 传输 FTP 命令和响应
   - 保持整个会话期间不断开
   - ASCII 文本传输

2. 数据连接(端口 20 或随机):
   - 传输文件数据
   - 每次传输建立,传输完关闭
   - 可以是 ASCII 或二进制

客户端 ──控制连接(21)──→ 服务器
客户端 ──数据连接(20)──→ 服务器(主动模式)

为什么要两个连接

- 控制连接:传输命令(用户名、密码、LIST、RETR 等)
- 数据连接:传输文件内容
- 分离控制和数据,提高灵活性
- 控制连接保持,数据连接按需建立

三、主动模式与被动模式

主动模式(Active Mode)

1. 客户端连接服务器的 21 端口(控制连接)
2. 客户端发送 PORT 命令,告知自己的数据端口
3. 服务器用 20 端口主动连接客户端的数据端口

问题:客户端如果有防火墙,服务器无法主动连接

被动模式(Passive Mode)

1. 客户端连接服务器的 21 端口(控制连接)
2. 客户端发送 PASV 命令
3. 服务器告知自己的数据端口(随机高端口)
4. 客户端主动连接服务器的数据端口

解决了防火墙问题
特性主动模式被动模式
数据连接发起服务器客户端
服务器数据端口20随机
防火墙友好
NAT 穿越困难容易

四、FTP 命令和响应

常见命令

命令说明
USER用户名
PASS密码
LIST列出目录
RETR下载文件
STOR上传文件
QUIT退出
PASV进入被动模式
PORT指定数据端口

响应格式

三位数字码 + 文本说明

1xx: 正在处理
2xx: 成功
3xx: 需要更多信息
4xx: 客户端错误
5xx: 服务器错误

例:
220 Service ready
331 Password required
230 Login successful
150 Opening data connection
226 Transfer complete

五、常见考法

考点说明
两个连接控制连接(21) 和数据连接(20)
主动 vs 被动数据连接发起方不同
FTP 使用 TCP不是 UDP
控制连接保持整个会话期间不断开

六、易错点

必记
  • FTP 使用 两个 TCP 连接,不是一个。
  • 控制连接用端口 21,数据连接用端口 20(主动模式)。
  • 被动模式中服务器的数据端口是随机的,不是 20。
  • FTP 传输密码是 明文 的(不安全)。
  • 控制连接在整个会话期间保持,数据连接每次传输都建立和释放。

七、核心结论

  1. FTP 使用双连接:控制连接(21) + 数据连接。
  2. 主动模式服务器用 20 端口连接客户端,被动模式客户端连接服务器。
  3. 控制连接保持整个会话,数据连接按需建立。
  4. FTP 密码明文传输,不安全(可用 SFTP/FTPS 替代)。

记忆卡片

FTP 使用几个 TCP 连接?
两个:控制连接(端口 21)数据连接(端口 20 或随机)
主动和被动模式的区别?
主动 = 服务器发起数据连接;被动 = 客户端发起数据连接。
控制连接什么时候断开?
整个会话结束后才断开(全程保持)。
FTP 的安全问题?
密码明文传输,不安全。

交互动画 · 主动 vs 被动模式

控制连接(端口 21)始终由客户端建立并保持 客户端 服务器 控制 21 数据连接
主动模式:服务器用 20 端口主动连客户端(客户端有防火墙时易失败)
示意图:控制连接方向固定,数据连接发起方在主动/被动模式下相反。
手动模式
客户端 服务器 控制连接 21 — 全程保持 数据连接 命令/响应 文件数据
选择模式后点击「下一步」查看完整交互流程
控制连接端口 21;主动模式数据端口 20(服务器连客户端)

相关知识点

http-protocol cs-and-p2p-model tcp-three-way-handshake

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。