计算机网络基础:文件传输协议 FTP

计算机网络基础:文件传输协议 FTP(File Transfer Protocol)

FTP 是互联网上最古老且最经典的文件传输协议之一,主要用于在网络上客户端服务器之间上传下载删除重命名文件或目录。它属于应用层协议,基于 TCP(可靠传输),标准定义在 RFC 959(1985 年)。

1. FTP 的核心特点

  • 两个通道(非常重要!)
  • 控制连接(Control Connection):用于传输命令和响应
  • 数据连接(Data Connection):用于真正传输文件内容或目录列表
  • 明文传输(默认无加密)
  • 用户名、密码、文件内容都以明文传输(极不安全)
  • 现代替代:FTPS(FTP over SSL/TLS)、SFTP(SSH File Transfer Protocol)
  • 面向会话:控制连接通常保持到整个会话结束
  • 支持断点续传(部分实现支持)
  • 跨平台:几乎所有操作系统都支持 FTP 客户端

2. FTP 默认端口

连接类型端口号说明
控制连接21客户端 → 服务器(命令、响应)
数据连接(主动模式)20服务器 → 客户端(文件数据)
数据连接(被动模式)>1024服务器随机端口,客户端连接

注意:被动模式下服务器不一定使用 20 端口。

3. FTP 的两种工作模式(最常考点)

FTP 的数据连接建立方式分为 主动模式(Active / PORT)被动模式(Passive / PASV)

3.1 主动模式(Active Mode / PORT mode)

流程

  1. 客户端随机开一个高端口(>1024,例如 50000)用于数据
  2. 客户端向服务器 21 端口发起控制连接
  3. 客户端发送 PORT 命令,告诉服务器:“我的 IP 是 X.X.X.X,数据端口是 50000”
  • 格式:PORT h1,h2,h3,h4,p1,p2(IP 和端口的十进制表示)
  1. 当需要传输数据时(如 LIST、RETR、STOR),服务器主动从自己的 20 端口连接客户端的 高端口
  2. 数据传输完成,数据连接关闭(控制连接继续保持)

优点:服务器端配置简单(固定 20 端口)
缺点:客户端必须开放高端口入站 → 大多数客户端防火墙/NAT会阻断 → 几乎无法穿越 NAT 和防火墙

3.2 被动模式(Passive Mode / PASV mode)—— 现代默认

流程

  1. 客户端向服务器 21 端口发起控制连接
  2. 客户端发送 PASV 命令(“请进入被动模式”)
  3. 服务器随机开一个高端口(>1024,例如 30021),并回复:
  • 227 Entering Passive Mode (h1,h2,h3,h4,p1,p2)
  • 告诉客户端:我的 IP 是 X.X.X.X,数据端口是 30021
  1. 客户端主动向服务器的这个高端口发起数据连接
  2. 数据传输完成,数据连接关闭

优点:客户端只发起出站连接 → 能很好穿越客户端防火墙和 NAT
缺点:服务器必须开放大量高端口(通常 30000–31000 或更大范围),服务器防火墙需放行

现代结论
几乎所有 FTP 客户端(FileZilla、WinSCP、浏览器等)默认使用被动模式

4. 常见 FTP 命令(控制连接上发送)

命令含义示例常见响应码
USER发送用户名USER admin331
PASS发送密码PASS 123456230
PWD显示当前工作目录PWD257
CWD改变工作目录CWD /pub250
LIST列出目录内容(长格式)LIST150 → 226
NLST列出目录内容(短格式)NLST150 → 226
RETR下载文件(get)RETR file.txt150 → 226
STOR上传文件(put)STOR file.txt150 → 226
DELE删除文件DELE old.txt250
MKD创建目录MKD newdir257
RMD删除目录RMD olddir250
TYPE设置传输模式(A=ASCII, I=Binary)TYPE I200
PASV进入被动模式PASV227
PORT指定主动模式数据端口PORT 192,168,1,100,195,136200
QUIT退出QUIT221

常见响应码(前三位):

  • 1xx:初步应答(数据连接建立中)
  • 2xx:成功
  • 3xx:需要进一步命令(如登录过程)
  • 5xx:错误

5. FTP 的优缺点总结

优点

  • 简单、历史悠久、兼容性极好
  • 支持大文件传输、断点续传(部分客户端)
  • 很多老系统、嵌入式设备仍然使用

缺点(非常明显):

  • 明文传输 → 密码和数据极易被嗅探
  • 两个连接设计 → 防火墙/NAT 穿透困难
  • 没有统一的安全机制
  • 目录列表效率低(LIST 命令慢)
  • 不支持压缩、加密、完整性校验

6. 现代替代方案(强烈推荐)

协议端口加密推荐场景备注
FTPS21(显式)/990(隐式)TLS/SSL需要兼容老 FTP 系统FTP + TLS
SFTP22SSH安全性要求高最常用替代,基于 SSH
SCP22SSH简单文件拷贝不支持交互式目录浏览
WebDAV80/443HTTP/HTTPS通过浏览器或挂载盘访问企业常用
rsync873可选 SSH增量同步、大规模传输适合备份

7. 小结口诀

  • FTP = 控制 21 + 数据(20 或 随机端口)
  • 主动模式:服务器主动连客户端(防火墙难过)
  • 被动模式:客户端主动连服务器(现代默认)
  • PORT 命令 → 主动模式
  • PASV 命令 → 被动模式
  • 安全第一:生产环境不要用普通 FTP,优先 SFTP / FTPS

如果你想深入某个部分(比如 FTP 主动/被动模式抓包分析、常见错误码排查、vsftpd 配置、SFTP 与 FTP 对比),可以告诉我,我继续展开讲解!

文章已创建 4631

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部