FTP协议随记

ftp需要两个端口完成一次数据传输:

命令端口 & 数据端口

其中数据端口分为两种模式:主动模式,被动模式。

主动模式(PORT):

客户端主动开启一个端口,然后告诉服务器我开了xxx端口,数据在这里传输,你从这里拿取数据或者发过来数据。

即:命令端口发送Request: PORT 192,168,1,101,211,188\r\n,客户机ip:192.168.1.101,主动开放了211 * 256 + 188 = 54204端口供数据传输。然后服务器会连接客户端的这个端口。不过可能会由于防火墙的缘故,所以有了被动模式。

被动模式(Passive):

客户端要求服务器开放一个端口,服务器被动开放一个端口作为数据传输,然后告诉客户端我开了xxx端口,数据通过这里传输,你从这里拿取数据或者发过来数据。

即:客户端命令端口发送Request: PASV。服务器开放端口并告诉客户端:227 Entering Passive Mode (192,168,152,132,29,220)\r\n,端口号29 * 256 + 220 = 7644。客户端再去连接服务器新开放的这个端口。


指令明文传输,现在大多都用被动模式。比较简单没啥好解释的。当然有加密传输的软件,一个道理。 

直接看图就明白了。

客户端:Windows资源管理器

服务端:Serv-U v15.1


连接ftp,列出目录 

下载文件 

上传文件 

 

 

开发相关随记包含多个方面: - **软件开发**:在增加和设计较为庞大的程序时,要考虑程序结构设计,如解耦、层与层接口、模块之间关系、参数、ram、flash、运行速度等。还可学习了解aoutosar的分层结构。新的项目需在较短时间完成从零编码到交付[^1]。 - **IsaacLab开发**:遇到在spring - damping模型下,调大限制和刚度、damping参数后出现异常情况,几十个episode插入后不在孔周围晃,此现象与预期不符,需进一步理顺[^2]。 - **Chrome扩展程序开发**:Map是新的数据类型,可在JavaScript中用于存储键值对实现快速查找,还给出了本地缓存工具的代码实现,同时列举了一些相关学习参考资料,如ReqBin在线API测试工具、Chrome插件开发攻略等[^3]。 ```javascript let data = new Map([ ['Alice', 25], ['Bob', 30], ['Charlie', 35], ['David', 40] ]); console.log(data.get('Alice')); // 25 var myLocalStorageTool = { set: function(key, value) { localStorage.setItem(key, value); }, get: function(key) { return localStorage.getItem(key); }, remove: function(key) { localStorage.removeItem(key); }, removeAll: function() { localStorage.clear(); }, toJsonString: function(jsData) { return JSON.stringify(jsData); }, toJsData: function(jsonString) { return JSON.parse(jsonString); } }; ``` - **X86平台开发**:对于intel的X86平台,intel提供完整数据手册和丰富资源,不同卷册有不同内容,如vol 1是整体介绍,vol 2是CPU部分寄存器说明等,还有PDG、硬件设计指南、散热文档、产线可制造性文档等可供参考[^4]。 - **通用开发问题**:client的定时器是通用功能,但依赖cocos2d的Scheduler类,导致移植到server端困难,使用C++标准库实现可避免该问题[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值