FTP协议原理及应用精解

FTP协议原理及应用精解

FTP 协议原理及应用精解

本文介绍 FTP(File Transfer Protocol,文件传输协议) 的发展简史、双连接模型、Port 与 Passive 模式、匿名 FTP 及安全问题,内容以 IETF RFC 959(STD 9) 为主,并兼顾常见实现与防火墙场景。适合需要理解文件传输协议或做 FTP 客户端/服务端开发的读者。

目录

[FTP 概述](#FTP 概述)

发展简史

[FTP 模型:双连接](#FTP 模型:双连接)

常用命令与响应码

[Port 模式与 Passive 模式](#Port 模式与 Passive 模式)

[匿名 FTP](#匿名 FTP)

安全问题与替代方案

[术语与 RFC 速查](#术语与 RFC 速查)

一、FTP 概述

FTP 是用于在网络上传输文件 的应用层协议,基于 TCP ,采用客户端-服务器模型。RFC 959 定义其功能与消息格式,至今仍是互联网上文件传输的经典标准之一。

项目

说明

标准

RFC 959(STD 9),1985

传输

TCP,控制连接通常 21,数据连接见下文

特点

双连接(控制 + 数据)、支持多种数据类型与传输模式

认证

用户名/口令(RFC 959 中为明文)

二、发展简史

(据《网络协议本质论》第 11 章及 RFC 历史整理。)

年份

事件

1971

首个 FTP 相关 RFC(RFC 114),A.K. Bhushan,MIT 与 Harvard 实验实现

1972

RFC 172,主机间文件传输的用户级协议

1973.2

经多份 RFC 讨论后,RFC 454 成为官方文档

1973.8

RFC 542 修订版,确立 FTP 功能、目标与基本模型;当时采用 NCP 作为数据传输协议

1980

底层由 NCP 改为 TCP,RFC 765 定义基于 TCP 的 FTP

1985

RFC 959(STD 9) 发布,沿用至今

三、FTP 模型:双连接

FTP 使用两条独立的 TCP 连接(RFC 959):

控制连接 :客户端连到服务器 21 端口,用于发送命令(USER、PASS、PORT/PASV、RETR、STOR 等)和接收响应码。在整个会话期间保持。

数据连接 :用于实际传输文件或目录列表;建立方式 由 Port 模式 或 Passive 模式 决定,见第五节。

PORT 或 PASV 协商

数据连接

Client 数据端口

Server 数据端口

控制连接

21

Client 随机端口

Server 21

要点:控制连接始终由客户端主动连接服务器 21 端口;数据连接在 Port 模式下由服务器主动连回客户端,在 Passive 模式下由客户端连接服务器给出的端口。

四、常用命令与响应码

4.1 常用命令(RFC 959)

命令

含义

USER

用户名

PASS

口令

QUIT

退出

PORT

告知服务器「客户端在何地址/端口等待数据连接」(Port 模式)

PASV

请求 Passive 模式,服务器返回自己监听的地址与端口

RETR

下载文件

STOR

上传文件

LIST path

列出目录(经数据连接返回)

TYPE I / A

二进制(Image)或 ASCII 传输类型

CWD

切换目录

PWD

当前目录

4.2 响应码(三位数字,RFC 959)

首位

含义

示例

1xx

初步肯定,需继续

150 Opening data connection

2xx

成功完成

200 OK,220 Service ready,226 Transfer complete

3xx

需进一步动作

331 User name OK, need password

4xx

暂时性错误

425 Can't open data connection

5xx

永久性错误

530 Not logged in,550 Requested action not taken

五、Port 模式与 Passive 模式

数据连接的建立方式有两种,对应防火墙/ NAT 下的不同表现。

5.1 Port 模式(Active FTP)

客户端先连服务器 21 建立控制连接。

客户端在本机监听 一个端口(如 1026),通过 PORT 命令把「客户端 IP + 该端口」发给服务器。

服务器 从本机 20 (或其它端口)主动发起一条 TCP 连接到客户端的该端口,作为数据连接。

问题 :对客户端而言,数据连接是由外向内的,若客户端在 NAT 或防火墙后,往往会被拦截,导致 LIST/RETR/STOR 失败。

Server Client Server Client 连接 21(控制) PORT 192.168.1.1,1026 200 OK RETR file.txt 服务器从 20 连到 192.168.1.1:1026(数据) 150 / 226,数据经数据连接传输

5.2 Passive 模式(PASV)

客户端连服务器 21 建立控制连接。

客户端发 PASV ,服务器在某一端口监听 ,并在响应(如 227 Entering Passive Mode )中返回 服务器 IP 与端口。

客户端 再主动连接该 IP:端口,建立数据连接。

优点 :两条连接都是客户端主动发起,对客户端防火墙/NAT 更友好,因此公网环境常推荐使用 PASV。

Server Client Server Client 数据经数据连接传输 连接 21(控制) PASV 227 Entering Passive Mode (h1,h2,h3,h4,p1,p2) 客户端连 h1.h2.h3.h4:(p1*256+p2)(数据) RETR file.txt

5.3 对比小结

项目

Port 模式

Passive 模式

数据连接由谁发起

服务器 → 客户端

客户端 → 服务器

服务器数据端口

通常 20

由服务器指定(常为高端口)

客户端侧防火墙

易阻挡入站,常失败

出站为主,通常更易通过

RFC 959 命令

PORT

PASV

六、匿名 FTP

匿名 FTP 是一种机制:用户无需在服务器上拥有账号,即可连接并下载(有时也可上传)文件。管理员在服务器上创建一个特殊账号,用户名为 anonymous (或 ftp),密码常要求填邮箱或任意字符串。RFC 959 未直接规定匿名语义,但实践中已成为通用约定。

用途:软件镜像、文档、公共数据集等公开分发。

安全注意:匿名账户权限应严格限制(只读或限定目录),避免被滥用为跳板或存储非法内容。

七、安全问题与替代方案

7.1 明文传输

FTP 一个广为人知的问题是:用户名与口令在控制连接上以明文传输(RFC 959 时代无内置加密)。若控制连接被窃听,账号即可被获取。数据连接上的文件内容同样不加密。

7.2 安全扩展与替代

方案

说明

FTPS

FTP over TLS/SSL(RFC 4217),对控制连接及可选对数据连接加密;显式(如 21 先协商 TLS)或隐式(如 990 端口直接 SSL)。

SFTP

通常指 SSH File Transfer Protocol(与 FTP 不同协议),基于 SSH,加密且常用单端口 22,避免双连接与 PORT/PASV 的防火墙问题。

HTTPS / 网盘

对公网文件分发,常用 HTTPS 下载或 Web 上传替代 FTP。

术语与 RFC 速查

术语

英文

含义

FTP

File Transfer Protocol

文件传输协议,RFC 959

Port 模式

Active FTP

数据连接由服务器连回客户端

Passive 模式

PASV

数据连接由客户端连到服务器指定端口

匿名 FTP

Anonymous FTP

使用用户名 anonymous 的公开访问

RFC 与规范

文档

内容

RFC 959

File Transfer Protocol (FTP),STD 9

RFC 4217

Securing FTP with TLS(FTPS)

RFC 2228

FTP Security Extensions(已部分被 RFC 4217 取代)

本文内容依据 IETF RFC 959、RFC 4217 及《网络协议本质论》第 11 章整理。

相关推荐

顺丰快递运费查询
365be体育平台

顺丰快递运费查询

📅 07-21 👁️ 5991
光驱系统教程(一步一步教你如何正确安装和使用光驱,让你的电脑操作更便捷)
WORD中如何将页面整体(带内容)旋转
365be体育平台

WORD中如何将页面整体(带内容)旋转

📅 07-01 👁️ 235