# 6.3 FTP ## 一、FTP概述 ### 1.1 什么是FTP **FTP(File Transfer Protocol)**: - 文件传输协议 - 用于在网络上进行文件传输 - 应用层协议 - 使用TCP ### 1.2 FTP的特点 - **可靠传输**:使用TCP - **支持认证**:用户名和密码 - **支持权限控制**:读、写、执行 - **支持目录操作**:创建、删除、列出 - **支持断点续传** ### 1.3 FTP的工作模式 **主动模式(Active Mode)**: - 服务器主动连接客户端 - 客户端开放端口等待服务器连接 **被动模式(Passive Mode)**: - 客户端主动连接服务器 - 服务器开放端口等待客户端连接 - 适合客户端在防火墙后 --- ## 二、FTP的工作原理 ### 2.1 FTP的连接 **FTP使用两个TCP连接**: **控制连接(Control Connection)**: - 端口:21 - 传输命令和响应 - 始终打开 - 带外传输 **数据连接(Data Connection)**: - 端口:20(主动模式)或随机端口(被动模式) - 传输文件数据 - 每次传输建立和关闭 - 带内传输 ### 2.2 FTP的工作过程 ``` 客户端 服务器 │ │ │ 1. 建立控制连接(21) │ │<──────────────────────>│ │ │ │ 2. 用户认证 │ │<──────────────────────>│ │ │ │ 3. 建立数据连接 │ │<──────────────────────>│ │ │ │ 4. 传输文件 │ │<──────────────────────>│ │ │ │ 5. 关闭数据连接 │ │ │ │ 6. 关闭控制连接 │ │<──────────────────────>│ ``` ### 2.3 主动模式 **过程**: 1. 客户端连接到服务器的21端口(控制连接) 2. 客户端发送PORT命令,告诉服务器自己的数据端口 3. 服务器从20端口连接到客户端的数据端口 4. 传输数据 **特点**: - 服务器主动连接客户端 - 客户端需要开放端口 - 可能被防火墙阻止 ### 2.4 被动模式 **过程**: 1. 客户端连接到服务器的21端口(控制连接) 2. 客户端发送PASV命令 3. 服务器开放随机端口,告诉客户端 4. 客户端连接到服务器的数据端口 5. 传输数据 **特点**: - 客户端主动连接服务器 - 服务器开放端口 - 适合客户端在防火墙后 --- ## 三、FTP命令 ### 3.1 连接命令 | 命令 | 说明 | |-----|------| | USER | 用户名 | | PASS | 密码 | | QUIT | 退出 | ### 3.2 文件操作命令 | 命令 | 说明 | |-----|------| | RETR | 下载文件 | | STOR | 上传文件 | | DELE | 删除文件 | | RNFR | 重命名从 | | RNTO | 重命名到 | ### 3.3 目录操作命令 | 命令 | 说明 | |-----|------| | CWD | 改变工作目录 | | LIST | 列出目录内容 | | MKD | 创建目录 | | RMD | 删除目录 | | PWD | 显示当前目录 | ### 3.4 传输模式命令 | 命令 | 说明 | |-----|------| | PORT | 主动模式,指定客户端端口 | | PASV | 被动模式 | | TYPE | 传输类型(A=ASCII,I=二进制) | | MODE | 传输模式(S=流,B=块,C=压缩) | | STRU | 文件结构(F=文件,R=记录,P=页) | --- ## 四、FTP响应 ### 4.1 响应格式 **格式**: ``` XXX 文本说明 ``` **第一位数字**: - 1:肯定预备应答 - 2:肯定完成应答 - 3:肯定中间应答 - 4:暂态否定完成应答 - 5:永久性否定完成应答 **第二位数字**: - 0:语法错误 - 1:信息 - 2:连接 - 3:认证和账户 - 4:未指定 - 5:文件系统 ### 4.2 常见响应码 | 响应码 | 说明 | |--------|------| | 220 | 服务就绪 | | 221 | 服务关闭 | | 230 | 登录成功 | | 331 | 用户名正确,需要密码 | | 530 | 登录失败 | | 150 | 文件状态正常,准备打开数据连接 | | 226 | 传输完成 | | 425 | 无法打开数据连接 | | 426 | 连接关闭,传输中止 | | 451 | 处理错误 | --- ## 五、FTP的优缺点 ### 5.1 优点 - **可靠**:使用TCP - **功能丰富**:支持各种文件操作 - **支持认证**:安全性较好 - **支持断点续传** - **广泛支持**:各种操作系统都有FTP客户端 ### 5.2 缺点 - **明文传输**:用户名、密码、数据都明文传输 - **不安全**:容易被窃听 - **防火墙问题**:需要开放多个端口 - **NAT问题**:主动模式在NAT后有问题 --- ## 六、FTP的安全问题 ### 6.1 FTP的安全隐患 **明文传输**: - 用户名和密码明文传输 - 数据明文传输 - 容易被窃听 **中间人攻击**: - 攻击者截获FTP连接 - 窃取用户名和密码 - 篡改数据 ### 6.2 安全解决方案 **FTPS(FTP over SSL/TLS)**: - 使用SSL/TLS加密 - 控制连接和数据连接都加密 - 端口:990(控制)、989(数据) **SFTP(SSH File Transfer Protocol)**: - 基于SSH - 使用SSH加密 - 端口:22 - 不是FTP,是SSH的一部分 **SCP(Secure Copy)**: - 基于SSH - 简单的文件复制 - 端口:22 --- ## 七、FTP与HTTP的比较 | 特性 | FTP | HTTP | |-----|-----|------| | 协议层次 | 应用层 | 应用层 | | 传输层 | TCP | TCP | | 连接数 | 2个(控制和数据) | 1个 | | 端口 | 20/21 | 80/443 | | 状态 | 有状态 | 无状态 | | 认证 | 支持 | 支持(可选) | | 目录操作 | 支持 | 不支持 | | 断点续传 | 支持 | 支持(HTTP/1.1) | | 加密 | FTPS | HTTPS | | 用途 | 文件传输 | Web浏览 | --- ## 八、考研重点 1. **FTP的概念**: - 什么是FTP - FTP的特点 - 工作模式:主动模式、被动模式 2. **FTP的工作原理**: - 控制连接和数据连接 - 工作过程 - 主动模式的过程 - 被动模式的过程 3. **FTP命令**: - 连接命令 - 文件操作命令 - 目录操作命令 - 传输模式命令 4. **FTP响应**: - 响应格式 - 响应码的含义 - 常见响应码 5. **FTP的优缺点** 6. **FTP的安全问题**: - 安全隐患 - 安全解决方案:FTPS、SFTP、SCP 7. **FTP与HTTP的比较** --- *下一节:6.4 电子邮件*