网工日记:FTP两种工作模式的区别
FTP 的主动模式和被动模式在连接建立的发起方、数据传输端口以及对网络环境的适应性等方面存在明显区别:
1. 连接发起方
- 主动模式:数据连接由服务器主动发起。在控制连接建立后,客户端通过 PORT 命令告知服务器自己用于接收数据的临时端口号,然后服务器从其 20 端口主动向客户端指定的端口发起数据连接。
- 被动模式:数据连接由客户端主动发起。客户端在控制连接建立后向服务器发送 PASV 命令,服务器开启一个随机的数据端口并告知客户端,客户端再主动向服务器指定的数据端口发起数据连接。
2. 数据传输端口
- 主动模式:服务器的数据传输端口固定为 20 端口,客户端在 PORT 命令中指定的是自己用于接收数据的临时端口。这种固定端口的方式便于网络管理和安全策略的设置,网络管理员可以针对服务器的 20 端口进行特定的访问控制和监控。
- 被动模式:服务器的数据传输端口是随机分配的,通常是大于 1024 的端口。每次客户端发起 PASV 命令后,服务器都会开启一个新的随机端口用于数据传输,客户端根据服务器返回的端口号进行连接。这种随机端口的方式增加了服务器的安全性,因为攻击者难以预测数据端口。
3. 对网络环境的适应性
- 主动模式:由于服务器需要主动向客户端发起数据连接,因此在服务器端的防火墙或网络安全策略上需要允许服务器向外发起连接。如果服务器位于严格限制出站连接的网络环境中,如某些企业内部网络或受严格安全管控的网络,可能会导致数据连接无法建立。
- 被动模式:客户端主动发起数据连接,对服务器端的防火墙限制相对较小。它更适用于客户端处于复杂网络环境的情况,如客户端位于防火墙或 NAT 设备之后,或者服务器端的防火墙对入站连接限制严格的场景。在互联网环境中,大多数 FTP 客户端软件默认使用被动模式,以提高连接的成功率。
4. 安全性
- 主动模式:从安全性角度看,主动模式相对较容易受到攻击,因为服务器使用固定的 20 端口进行数据传输,攻击者可能更容易针对该端口进行扫描和攻击。如果服务器的安全防护措施不到位,可能会存在安全隐患。
- 被动模式:被动模式由于数据端口是随机分配的,增加了攻击者获取有效数据端口的难度,一定程度上提高了安全性。但同时也需要注意,客户端主动发起连接时,如果客户端所在网络的安全性较差,也可能会带来安全风险,如客户端被恶意软件控制后可能会主动连接到非法的服务器端口。
5. 客户端和服务器的配置复杂度
- 主动模式:在客户端,需要正确配置 PORT 命令指定接收数据的端口号,并且需要确保客户端所在网络允许服务器的连接请求。在服务器端,通常不需要额外的特殊配置,只要防火墙允许 20 端口的出站连接即可。但如果服务器需要同时支持大量客户端的主动模式连接,可能需要对服务器的性能和资源进行优化配置。
- 被动模式:客户端相对简单,只需发送 PASV 命令并根据服务器返回的端口号进行连接即可。而服务器端需要配置允许被动模式连接,并确保有足够的可用端口供随机分配。同时,服务器还需要正确处理客户端的 PASV 命令和数据连接请求,配置相对复杂一些。
FTP 的主动模式和被动模式各有优缺点,在实际应用中,需要根据具体的网络环境、安全需求和应用场景来选择合适的工作模式。
相关文章:
网工日记:FTP两种工作模式的区别
FTP 的主动模式和被动模式在连接建立的发起方、数据传输端口以及对网络环境的适应性等方面存在明显区别: 1. 连接发起方 主动模式:数据连接由服务器主动发起。在控制连接建立后,客户端通过 PORT 命令告知服务器自己用于接收数据的临时端口号…...
NLP模型工程化部署
文章目录 一、理论-微服务、测试与GPU1)微服务架构2)代码测试3)GPU使用 二、实践-封装微服务,编写测试用例和脚本,并观察GPU1)微服务封装(RestFul和RPC)2)测试编写(unit_test\api_test\load_tes…...
分布式版本管理工具——git 中忽略文件的版本跟踪(初级方法及高级方法)
git工具忽略指定文件的版本跟踪 一、简单方式实现二、复杂方式实现(模式匹配)1. 相关规则2. 应用案例a) 忽略所有内容b) 忽略所有目录(不忽略当前目录的具体文件)c)忽略指定目录下的所有文件,但排除某文件d)…...
【LangChain】Chapter4 - Question and Answer Over Documents
说在前面 文档问答,是常见的一类LLM应用,给定一段可能是从 PDF文件、网页或某公司内部文档库中提取的文本,使用LLM回答关于这些文档内容的问题。这样的应用非常的强大,它可以将LLM与完全没被训练的数据相结合,可以灵活…...
TCP/IP 协议演进中的瓶颈,权衡和突破
所有(去掉 “几乎” 修饰)问题都来自于生长速度的不一致,换句话说,膨胀不是均匀的,从而产生瓶颈甚至触碰极限,TCP/IP 从协议到实现面临的多方问题与动物体型不能无限大,摩天大楼不能无限高本质上一样。 如今被高性能网…...
软件测试面试八股文,查漏补缺(附文档)
大家好,最近有不少小伙伴在后台留言,准备面试了,又不知道从何下手!为了帮大家节约时间,特意准备了一份面试相关的资料,内容非常的全面,真的可以好好补一补,希望大家在都能拿到理想的…...
IDEA工具使用介绍、IDEA常用设置以及如何集成Git版本控制工具
文章目录 一、IDEA二、建立第一个 Java 程序三、IDEA 常用设置四、IDEA 集成版本控制工具(Git、GitHub)4.1 IDEA 拉 GitHub/Git 项目4.2 IDEA 上传 项目到 Git4.3 更新提交命令 一、IDEA 1、什么是IDEA? IDEA,全称为 IntelliJ ID…...
YOLOv10-1.1部分代码阅读笔记-transformer.py
transformer.py ultralytics\nn\modules\transformer.py 目录 transformer.py 1.所需的库和模块 2.class TransformerEncoderLayer(nn.Module): 3.class AIFI(TransformerEncoderLayer): 4.class TransformerLayer(nn.Module): 5.class TransformerBlock(nn.Module)…...
机器人革新!ModbusTCP转CCLINKIE网关揭秘
在当今这个科技日新月异的时代,机器人技术正以前所未有的速度发展着,它们在工业制造、医疗服务、家庭娱乐等多个领域扮演着越来越重要的角色。而随着机器人应用的普及和多样化,如何实现不同设备之间的高效通信成为了一个亟待解决的问题。开疆…...
JWT包中的源码分析【Golang】
前言 最近在学web编程的途中,经过学长提醒,在进行登陆(Login)操作之后,识别是否登陆的标识应该要放入authorization中,正好最近也在学鉴权,就顺便来看看源码了。 正文 1. 代码示例 在进行分…...
SpringBoot数据字典字段自动生成对应code和desc
效果:接口会返回orderType,但是这个orderType是枚举的类型(1,2,3,4),我想多返回一个orderTypeDesc给前端展示,这样前端就可以直接拿orderTypeDesc使用了。 1. 定义注解 …...
TencentOS 2.4 final 安装mysql8.0备忘录
准备 tencentOS 2.4 与Red Hat Enterprise Linux 7 是兼容的。 我们首先从oracle官网上下载mysql的源文件。 下载完成后你会得到以下文件: mysql84-community-release-el7-1.noarch.rpm 安装 首先你需要切换到root用户下。 1.安装源文件 yum localinstall my…...
Hadoop HA安装配置(容器环境),大数据职业技能竞赛模块A平台搭建,jdk+zookeeper+hadoop HA
HA概述 (1) 所谓HA(High Availablity),即高可用(7*24小时不中断服务)。 (2) 实现高可用最关键的策略是消除单点故障,HA严格来说应该分为各个组件的HA机制,H…...
使用javascript读取波形文件数据,并生成动态的波形图
代码如下: // HTML5 Canvas 动态波形生成器 // 使用JS读取波形文件并生成动态波形// 创建Canvas并设置上下文 const canvas document.createElement(canvas); canvas.width 800; canvas.height 400; document.body.appendChild(canvas); const ctx canvas.getC…...
服务器系统维护与安全配置
一、硬件系统的安全防护 硬件的安全问题也可以分为两种,一种是物理安全,一种是设置安全。 1、物理安全 物理安全是指防止意外事件或人为破坏具体的物理设备,如服务器、交换机、路由器、机柜、线路等。机房和机柜的钥匙一定要管理…...
大模型Weekly 03|OpenAI o3发布;DeepSeek-V3上线即开源!
大模型Weekly 03|OpenAI o3发布;DeepSeek-V3上线即开源!DeepSeek-V3上线即开源;OpenAI 发布高级推理模型 o3https://mp.weixin.qq.com/s/9qU_zzIv9ibFdJZ5cTocOw?token47960959&langzh_CN 「青稞大模型Weekly」,持…...
Spring Boot自定义注解获取当前登录用户信息
写在前面 在项目开发过程中,难免都要获取当前登录用户的信息。通常的做法,都是开发一个获取用户信息的接口。 如果在本项目中,多处都需要获取登录用户的信息,难不成还要调用自己写的接口吗?显然不用! 以…...
js创建二维空数组
js创建二维空数组 错误使用原因分析分析1举个例子:解释: 正确创建二维数组总结: 错误使用 今天在写代码的时候,需要创建一个长度为2的空二维数组,我当时第一反应就是,使用let arr new Array(2).fill([])&…...
AF3 checkpoint_blocks函数解读
checkpoint_blocks 函数实现了一种分块梯度检查点机制 (checkpoint_blocks),目的是通过分块(chunking)执行神经网络模块,减少内存使用。在深度学习训练中,梯度检查点(activation checkpointing)是一种显存优化技术。该代码可以: 对神经网络的块(blocks)按需分块,并对…...
下载并使用CICFlowMeter提取网络流特征(Windows版本)
CICFlowMeter简介 CICFlowMeter是一款流量特征提取工具,从原始的pcap包中聚合流,并提取流特征到csv格式的文件中。使用CICFlowMeter提取的特征有助于后续基于网络流的分析与建模 官方github地址:https://github.com/ahlashkari/CICFlowMete…...
Braft Editor图片处理优化:拖拽调整大小与等比例缩放的终极指南
Braft Editor图片处理优化:拖拽调整大小与等比例缩放的终极指南 【免费下载链接】braft-editor 美观易用的React富文本编辑器,基于draft-js开发 项目地址: https://gitcode.com/gh_mirrors/br/braft-editor Braft Editor是一款基于React和Draft.j…...
如何高效使用Dism++:Windows系统优化与管理的终极指南
如何高效使用Dism:Windows系统优化与管理的终极指南 【免费下载链接】Dism-Multi-language Dism Multi-language Support & BUG Report 项目地址: https://gitcode.com/gh_mirrors/di/Dism-Multi-language Dism是一款功能强大的Windows系统优化工具&…...
tmux 示例
技术文章大纲示例:人工智能在医疗诊断中的应用 引言 概述人工智能在医疗领域的重要性当前医疗诊断面临的挑战人工智能技术的引入如何改变传统诊断方式 人工智能技术基础 机器学习与深度学习的核心概念计算机视觉在医疗影像分析中的作用自然语言处理(NLP&…...
机器学习面试题(二) 损失函数 常见损失函数
四、什么是损失函数(Loss Function)损失函数(Loss Function)衡量单个样本的预测误差,即模型的预测值与真实值之间的差异。成本函数/代价函数(Cost Function)衡量所有样本上预测值和真实值的平均…...
为什么你的EventHandler仍触发装箱?C# 13 `ref delegate`与`unmanaged`委托语法(仅限.NET 8.0.3+ RTM)
第一章:为什么你的EventHandler仍触发装箱?C# 13 ref delegate与unmanaged委托语法(仅限.NET 8.0.3 RTM)即使在 .NET 8.0.3 RTM 中启用了 C# 13 的新委托特性,许多开发者仍观察到 EventHandler 回调中频繁发生值类型参…...
Span<T>不是语法糖!透过CoreCLR源码看JIT如何为ref struct生成特殊栈帧——稀缺的底层机制白皮书
第一章:Span<T>不是语法糖!透过CoreCLR源码看JIT如何为ref struct生成特殊栈帧——稀缺的底层机制白皮书Span 是 C# 7.2 引入的 ref struct 类型,它**无法被装箱、不能作为字段存储在托管堆类中、也不允许跨 await 边界捕获**——这些限…...
Verdi 快速上手:信号追踪与波形调试实战
1. Verdi工具入门:数字IC调试的瑞士军刀 刚接触数字IC设计时,最让我头疼的就是仿真波形调试。密密麻麻的信号线像一团乱麻,根本不知道从哪里下手。直到同事推荐了Verdi,这个被业界称为"调试神器"的工具彻底改变了我的工…...
专业数据恢复师工具箱揭秘:UFS Explorer Pro的5个高级功能实战解析
专业数据恢复师工具箱揭秘:UFS Explorer Pro的5个高级功能实战解析 当一块硬盘的文件系统彻底崩溃,分区表不知所踪,或是RAID阵列的配置信息丢失时,普通数据恢复软件往往束手无策。这正是UFS Explorer Professional Recovery展现其…...
LangChain4j vs Spring AI:Java开发者选型指南(含DeepSeek接入对比)
LangChain4j vs Spring AI:Java开发者选型指南(含DeepSeek接入对比) 当Java开发者面临在项目中集成大语言模型(LLM)的需求时,框架选择往往成为第一个技术决策点。LangChain4j和Spring AI作为当前Java生态中…...
从零搭建猫狗识别桌面应用(PyTorch + Tkinter 实战)
1. 环境准备与工具安装 要搭建猫狗识别桌面应用,首先需要配置好开发环境。这里推荐使用Python 3.8版本,因为PyTorch和Tkinter在这个版本上兼容性最好。我实测过多个Python版本,发现3.8在稳定性和性能上表现最均衡。 安装核心依赖库只需要一行…...
