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

【FTP 协议】FTP主动模式

一、测试工具

服务器:FileZilla_Server-cn-0_9_60_2.exe 中文版本

客户端:FileZilla_3.66.5_win64

客户端IP: 192.168.9.186

服务端 IP: 192.168.9.161

在客户端请求PORT之前,抓包测试的结果跟被动模式流程相同。

二、客户端主动模式命令连接服务器

2.1、客户端请求(PORT)

 192.168.9.186:55427->192.168.9.161:21

 PORT 192,168,9,186,216,142

客户端端口=216*256+142=55438

当 FTP 客户端发送 PORT 请求给 FTP 服务器时,它是在请求进入主动模式(Active Mode)。在主动模式下,客户端告知服务器其数据端口的地址和端口号,以便服务器可以直接连接到这个端口来传输数据。

客户端向服务器发送 PORT 命令,并附带一个由六个逗号分隔的数字组成的字符串,表示客户端的数据 IP 地址和端口号。格式如下:

PORT h1,h2,h3,h4,p1,p2

其中 h1,h2,h3,h4 是客户端的 IP 地址的四个字节,而 p1,p2 是端口号的高字节和低字节。端口号可以通过以下公式计算:port = p1 * 256 + p2。

2.2、服务器响应(200)

192.168.9.161:21  -> 192.168.9.186:55427

如果服务器接受并成功设置了数据连接参数,它将返回一个标准的响应代码(通常是 200),表示命令已成功执行。例如:

200 PORT command successful.

2.3、客户端请求(MLSD)

  192.168.9.186:55427->192.168.9.161:21

MLSD 客户端向服务器发送 MLSD 命令以请求获取当前目录的机器可读目录列表

2.4、服务器响应(150)

 192.168.9.161:21  ->  192.168.9.186:55427

150 Opening data channel for directory listing of "/"

MLSD请求跟被动模式相同,可参考被动模式描述。

2.5、客户端与服务端数据连接三次握手

步骤跟被动模式相同

192.168.9.161:20  ->  192.168.9.186:55428  (第一次握手)

是服务器主动发送数据连接请求,这个跟被动模式不同。服务端端口自动加1,客户端PORT请求给服务器的端口。

192.168.9.186:55428  ->  192.168.9.161:210(第二次握手)

192.168.9.161:20  ->  192.168.9.186:55428  (第三次握手)

2.6、服务器继续应答(MLSD请求)  

192.168.9.161:20 -> 192.168.9.186:55438

type=dir;modify=20250102011711; my2024

type :类型是目录

modify:修改时间20250102011711

服务器存放文件目录:my2024

2.7 服务端发送传输完成(226)

 192.168.9.161:21  ->  192.168.9.186:55427 

 226 Successfully transferred "/"

2.8、服务端与客户端4次挥手断开数据连接

192.168.9.161:20->  192.168.9.186:554278        FIN 服务器主动断开,第一次挥手

192.168.9.186:554278  ->  192.168.9.161:20       ACK 服务器主动断开,第二次挥手

192.168.9.186:554278  ->  192.168.9.161:20       FIN ACK 服务器主动断开,第三次挥手

192.168.9.161:20->  192.168.9.186:554278        ACK 服务器主动断开,第四次挥手

2.8、控制连接完整流程

 三、客户端主动模式数据连接服务器

3.1、客户端发送PORT

 客户端主动模式连接,以上面相同

3.2、客户端发送STOR 

请求发送文件

数据发送过程,与被动模式流程相同

 3.3、数据发送完整过程

抓包测试文件

 https://download.csdn.net/download/u011425939/90234611

http://www.lryc.cn/news/517051.html

相关文章:

  • 十五、Vue 响应接口
  • 至强6搭配美光CZ122,证明CXL可以提高生成式AI的性能表现
  • 一文理解ssh,ssl协议以及应用
  • 电子应用设计方案87:智能AI收纳箱系统设计
  • BloombergGPT: A Large Language Model for Finance——面向金融领域的大语言模型
  • LeetCode - #180 Swift 实现连续数字查询
  • 为什么ip属地一会河南一会江苏
  • 使用最广泛的FastAPI项目结构推荐,命名规范等
  • [大模型开源]SecGPT 网络安全大模型
  • android 启动页倒计时页面编写
  • nuxt3路由及路由拦截
  • git版本管理
  • 382M 雨晨 19045.5247 Win10PE 网络版
  • 在二维数组中列优先存放是怎么进行的
  • Unity【Colliders碰撞器】和【Rigibody刚体】的应用——小球反弹效果
  • CES 2025:ROG打造极致游戏体验
  • 英伟达 RTX 5090 显卡赋能医疗大模型:变革、挑战与展望
  • Windows 11 上配置VSCode 使用 Git 和 SSH 完整步骤
  • [读书日志]从零开始学习Chisel 第二篇:Scala的变量与函数(敏捷硬件开发语言Chisel与数字系统设计)
  • Unity:删除注册表内的项目记录
  • 【记录】东南大学研究生24-25秋季 学位英语考试
  • LabVIEW四边形阻抗继电器
  • 计算机网络(第8版)第3章课后习题--透明传输
  • 极限学习机 (Extreme Learning Machine, ELM) 算法详解与PyTorch实现
  • Hbuilder ios 离线打包sdk版本4.36,HbuilderX 4.36生成打包资源 问题记录
  • 实验四 数组和函数
  • 基于安卓14 的ANR dump信息原理
  • C++ volatile(八股总结)
  • SQL从入门到实战
  • Redis源码阅读-源码阅读方式