当前位置: 首页 > news >正文

FTP协议命令和响应码

文章目录

    • 📦 一、什么是 FTP 协议?
    • 🧾 二、FTP 常见命令(客户端发送)
    • 📡 三、FTP 响应码(服务端返回)
      • 📌 响应码分类(第一位)
      • ✅ 常见成功响应码(2xx)
      • 📋 等待/中间状态码(1xx)
      • ❗ 需要继续操作(3xx)
      • ❌ 常见错误响应码(4xx/5xx)
    • 🧪 四、完整登录示例流程(主动模式)
    • 🌐 五、主动(PORT)与被动(PASV)模式区别
    • 🧰 六、调试技巧
    • 📘 七、总结与建议


当然可以!以下是对 FTP 协议中常用命令响应码(状态码) 的全面讲解,适合开发 FTP 客户端程序时理解通信流程与调试细节。


📦 一、什么是 FTP 协议?

FTP(File Transfer Protocol) 是一个基于客户端-服务器架构的应用层协议,主要用于在网络中上传、下载文件

FTP 通信基于:

  • 控制连接:用于传输命令和响应(端口号默认 21)
  • 数据连接:用于传输数据,如文件和目录列表

🧾 二、FTP 常见命令(客户端发送)

命令说明示例
USER提交用户名USER test
PASS提交密码PASS 123456
PASV被动模式传输PASV
PORT主动模式传输PORT 192,168,1,10,14,178
LIST获取文件列表LIST
RETR下载文件RETR filename.txt
STOR上传文件STOR filename.txt
CWD切换目录CWD /upload
PWD显示当前路径PWD
MKD创建目录MKD /upload/images
RMD删除目录RMD /upload/images
DELE删除文件DELE file.txt
QUIT关闭连接QUIT
TYPE设置传输模式TYPE I(二进制)

📡 三、FTP 响应码(服务端返回)

FTP 使用 三位数的状态码 表示操作状态,第一位是类别,后两位是细节。

📌 响应码分类(第一位)

第一位含义
1xx初始状态,继续操作(如 150 等待传输)
2xx成功响应
3xx需要进一步操作(如提供密码)
4xx临时失败(可重试)
5xx永久失败(请求错误)

✅ 常见成功响应码(2xx)

响应码含义
200命令成功
220服务准备好,等待用户登录(登录欢迎语)
221退出成功(QUIT 后)
226数据连接关闭,传输成功
230用户登录成功
250请求的文件操作成功
257创建目录成功(返回路径)

📋 等待/中间状态码(1xx)

响应码含义
150文件状态正常,准备打开数据连接
125数据连接已打开,开始传输
227进入被动模式,返回数据连接 IP/端口
例:
227 Entering Passive Mode (192,168,1,2,19,200) → 端口 = 19*256 + 200 = 5064

❗ 需要继续操作(3xx)

响应码含义
331用户名正确,等待密码
332登录需要账号

❌ 常见错误响应码(4xx/5xx)

响应码含义
421服务不可用,连接被关闭
425无法打开数据连接
426连接关闭,传输失败
450请求的文件操作未完成
500命令语法错误
530未登录(用户名/密码错误)
550请求的操作失败,例如文件不存在或没有权限
553文件名非法(STOR、RETR 错误)

🧪 四、完整登录示例流程(主动模式)

Client → Server: USER test
Server → Client: 331 Password required
Client → Server: PASS 123456
Server → Client: 230 User logged inClient → Server: TYPE I
Server → Client: 200 Type set to IClient → Server: PORT 192,168,1,100,14,178
Server → Client: 200 PORT command successfulClient → Server: STOR file.txt
Server → Client: 150 Opening data connection
Server → Client: 226 Transfer complete

🌐 五、主动(PORT)与被动(PASV)模式区别

模式客户端行为服务器行为
主动模式使用 PORT 命令,开放端口等待服务器连接主动连接客户端的数据端口
被动模式使用 PASV 命令,请求服务器开放端口服务器返回 IP 和端口,客户端主动连接

🔹 在 NAT/防火墙 后面建议使用 PASV 模式,因为客户端主动连接数据端口更易通过网络。


🧰 六、调试技巧

  • 如果连接成功但无法上传/下载,大概率是数据连接(PASV)失败,可抓包分析
  • 响应码 530 常见于用户名或密码错误
  • 响应码 550 多见于目录或文件不存在,或权限问题
  • 使用 telnetnc 模拟 FTP 客户端手动发送命令调试

📘 七、总结与建议

要素建议
命令发送加上 \r\n 结尾,例如 USER test\r\n
数据读取使用 recv 后需检查返回码,并处理多行响应
编码FTP 协议是基于纯文本的,使用 ASCII 传输命令和响应
模式选择推荐使用 PASV 模式进行数据传输(更稳定)

http://www.xdnf.cn/news/49393.html

相关文章:

  • LabVIEW发电机励磁系统远程诊断
  • XSS学习2
  • Spring源码中关于抽象方法且是个空实现这样设计的思考
  • MySQL入门实战篇(零基础学习MySQL指南)
  • 智能座舱所有功能测试
  • 基于Springboot的网上拍卖系统
  • 文献阅读——KAG:通过知识增强生成提升专业领域的大型语言模型
  • 精益数据分析(9/126):如何筛选创业路上的关键数据指标
  • 【nginx】服务的信号控制
  • Java(自用查看版)
  • C++项目 —— 基于多设计模式下的同步异步日志系统(5)(单例模式)
  • css3新特性第四章(渐变)
  • 集合框架(重点)
  • Jsp技术入门指南【八】利用EL表达式开发无脚本的JSP页面
  • HttpClient
  • 网络基础与 HTTP 协议
  • JavaScript forEach介绍(JS forEach、JS for循环)
  • 精益数据分析(7/126):打破创业幻想,拥抱数据驱动
  • 在 Node.js 中设置响应的 MIME 类型
  • Tailwindcss 入门 v4.1
  • rag搭建,是如何进行向量匹配检索的?
  • jsch(shell终端Java版)
  • LeRobot 项目部署运行逻辑(二)—— Mobile Aloha 真机部署
  • Vue3 打印网页内容
  • 通过Dify快速搭建本地AI智能体开发平台
  • 高边开关和低边开关的区别
  • 前端工程化之自动化部署
  • MVCC介绍
  • 《AI大模型应知应会100篇》第28篇:大模型在文本创作中的应用技巧
  • Matlab FCM模糊聚类