【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
相关文章:
【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之前,抓包测试的结果跟被动模式流程相同。 二、客户端主动模式命令…...
十五、Vue 响应接口
文章目录 一、响应式系统基础什么是响应式系统响应式数据的声明与使用二、响应式原理深入Object.defineProperty () 方法的应用(Vue2)Proxy 对象的应用(Vue3)三、响应式接口之 ref 和 reactive(Vue3)ref 函数的使用reactive 函数的使用四、计算属性(computed)作为响应式…...
至强6搭配美光CZ122,证明CXL可以提高生成式AI的性能表现
最近发现了英特尔官网公布的一项最新测试报告,报告显示,将美光的CZ122 CXL内存模块放到英特尔至强6平台上,显著提升了HPC和AI工作负载的内存带宽,特别是在采用基于软件的交错配置(interleave configuration)…...
一文理解ssh,ssl协议以及应用
在使用基于密钥的认证方式的时候,私钥的位置一定要符合远程服务器规定的位置,否则找不到私钥的位置会导致建立ssh连接失败 SSH 全称是 “Secure Shell”,即安全外壳协议。 它是一种网络协议,用于在不安全的网络中安全地进行远程登…...
电子应用设计方案87:智能AI收纳箱系统设计
智能 AI 收纳箱系统设计 一、引言 智能 AI 收纳箱系统旨在为用户提供更高效、便捷和智能的物品收纳与管理解决方案,通过融合人工智能技术和创新设计,提升用户的生活品质和物品整理效率。 二、系统概述 1. 系统目标 - 实现物品的自动分类和整理…...
BloombergGPT: A Large Language Model for Finance——面向金融领域的大语言模型
这篇文章介绍了BloombergGPT,一个专门为金融领域设计的大语言模型(LLM)。以下是文章的主要内容总结: 背景与动机: 大语言模型(如GPT-3)在多个任务上表现出色,但尚未有针对金融领域的…...
LeetCode - #180 Swift 实现连续数字查询
文章目录 摘要描述SQL 解法Swift 题解代码Swift 题解代码分析核心逻辑关键函数 示例测试及结果测试 1测试 2 时间复杂度空间复杂度总结 摘要 本文将解决如何从日志数据中找出连续出现至少三次的数字。通过 SQL 查询语句结合 Swift 数据库操作,我们将完成这一任务。…...
为什么ip属地一会河南一会江苏
在使用互联网的过程中,许多用户可能会遇到这样一个问题:自己的IP属地一会儿显示为河南,一会儿又变成了江苏。这种现象可能会让人感到困惑,甚至产生疑虑,担心自己的网络活动是否受到了某种影响。为了解答这一疑问&#…...
使用最广泛的FastAPI项目结构推荐,命名规范等
使用最广泛的FastAPI项目结构推荐,命名规范等 一、FastAPI项目结构如下:二、组件管理:使用依赖注入三、命名约定四、建议分层架构的设计五、文档和测试六、版本控制和持续集成七、环境和配置管理工具八、性能优化与权限安全 一、FastAPI项目结…...
[大模型开源]SecGPT 网络安全大模型
模型介绍 SecGPT的愿景是将人工智能技术引入网络安全领域,以提高网络防御的效率和效果。其使命是推动网络安全智能化,为社会提供更安全的数字生活环境。 ① SecGPT开源地址:https://github.com/Clouditera/secgpt② 模型地址:htt…...
android 启动页倒计时页面编写
一、需求和技术 1、实现5,4,3,2,1启动页倒计时 2、倒计时实现使用CountDownTimer 二、activity代码 public class OpenActivity extends AppCompatActivity {private Button in;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanc…...
nuxt3路由及路由拦截
配置 nuxt3没有专门的路由配置文件,是由文件目录自动生成路由 ssr nuxt3会默认所有页面都是服务端渲染,如果需要设置某个页面不走服务端渲染,可以在nuxt.config.js中单独配置 routeRules: {/home: { ssr: false },/spa/**: { ssr: false …...
git版本管理
安装 打开 使用codeup 连接本地仓库和云仓库 找到本地存放代码的位置 单击右键打开git bash 初始化本地库 设置用户签名 显示隐藏文件夹之后才能看到,git文件夹 把这个复制下来 粘贴到bash中 拉取远程仓库的master分支: git pull origin master master分支提交和 dev 分支开…...
382M 雨晨 19045.5247 Win10PE 网络版
文件: YC10PE2025.iso(全内置网络版) 大小: 401473536 字节 修改时间: 2025年1月7日, 星期二, 18 : 40 : 50 MD5: 49E923DCEF86183A908F2D2C9BF07A23 SHA1: 56DF40393DEA9F73733B2A5693658A01F7A2F6C5 CRC32: 3A87F179 https://www.123684.com/s/zEbRVv-…...
在二维数组中列优先存放是怎么进行的
在二维数组中,列优先存放(Column-major order)是一种存储方式,其中数组的列元素在内存中是连续存放的。这意味着,对于一个二维数组 A[m][n],其中 m 是行数,n 是列数,数组的第一列的所…...
Unity【Colliders碰撞器】和【Rigibody刚体】的应用——小球反弹效果
目录 Collider 2D 定义: 类型: Rigidbody 2D 定义: 属性和行为: 运动控制: 碰撞检测: 结合使用 实用检测 延伸拓展 1、在Unity中优化Collider 2D和Rigidbody 2D的性能 2、Unity中Collider 2D…...
CES 2025:ROG打造极致游戏体验
2025年1月7日晚,备受瞩目的CES 2025 ROG新品发布会在万众期待中拉开帷幕。 作为全球领先的电竞和游戏设备制造商,ROG在此次发布会上隆重推出了多款旗舰级新品,包括旗舰专业电竞本ROG枪神9超竞系列、专业电竞本ROG枪神9系列、旗舰游戏本ROG魔霸…...
英伟达 RTX 5090 显卡赋能医疗大模型:变革、挑战与展望
一、英伟达 RTX 5090 与 RTX 4090 技术参数对比 1.1 核心架构与制程工艺 在探讨英伟达 RTX 4090 与 RTX 5090 的差异时,核心架构与制程工艺无疑是最为关键的基础要素,它们从根本上决定了两款显卡的性能上限与应用潜力。 1.1.1 核心架构差异 RTX 4090…...
Windows 11 上配置VSCode 使用 Git 和 SSH 完整步骤
在 Windows 11 上,通过 VSCode 使用 Git 和 SSH 克隆 GitHub 仓库的完整优化步骤如下: 1. 安装必备工具 下载并安装 Git: 访问 Git 官网 下载最新版本。安装时,选择以下选项: Default editor for Git: Use Visual Stud…...
[读书日志]从零开始学习Chisel 第二篇:Scala的变量与函数(敏捷硬件开发语言Chisel与数字系统设计)
第一篇https://blog.csdn.net/m0_74021449/article/details/144887921 2.2 Scala的变量及函数 2.2.1变量定义与基本类型 变量声明 变量首次定义必须使用关键字var或者val,二者的区别是val修饰的变量禁止被重新赋值,它是一个只读的变量。首次定义变量时…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
实战设计模式之模板方法模式
概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...
StarRocks 全面向量化执行引擎深度解析
StarRocks 全面向量化执行引擎深度解析 StarRocks 的向量化执行引擎是其高性能的核心设计,相比传统行式处理引擎(如MySQL),性能可提升 5-10倍。以下是分层拆解: 1. 向量化 vs 传统行式处理 维度行式处理向量化处理数…...

