CH9121 FTP使用详解
一、FTP简介:
FTP是基于TCP应用层的网络文件传输协议,支持两种模式:Standard (PORT方式,主动方式),Passive (PASV,被动方式)。采用明文通信不加密。
1、Port模式
FTP 客户端首先和服务器的TCP 21端口建立连接,用来发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。
2、Passive模式
建立控制通道和Standard模式类似,但建立连接后发送Pasv命令。服务器收到Pasv命令后,打开一个临时端口(端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口传送数据。
PS:很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。
二、CH9121做FTP客户端访问服务器
1、Port模式

将CH9121的端口1配置为TCP CLIENT模式,CH9121的端口可以随机也可以固定,目的IP为FTP服务器的IP地址,目的端口号为FTP服务器的端口号默认为21。

将CH9121的端口2配置为TCP SERVER模式,CH9121的端口设置后需要记一下后边会用到,目的端口号为FTP服务器的端口号默认为20。
配置好CH9121连接FTP服务器即可通过端口1的串口获取FTP服务器的如下信息,220表示FTP服务器已经就绪。

端口1的串口收到220后即可发送USER与PASS用以登录FTP服务器,
◇USER anonymous
◆331 User name ok, need password
◇PASS 123456
◆230 User logged in
当服务器回复230即表示CH9121登录FTP服务器成功,随后可通过建立数据通道的连接实现数据传输,注意PORT为主动模式CH9121主动告诉FTP服务器自己开放的数据传输IP与端口,(192,168,100,200)为IP,(11,184)为端口计算方法为11*256+184=3000,也就是CH9121端口2配置的本地端口号。
通过CH9121的端口1的串口发送PORT命令,
◇PORT 192,168,100,200,11,184
◆200 PORT command successful.
当服务器回复200即表示服务器收到了CH9121提供的IP与端口号,当要传输数据时FTP服务器会通过20端口与之建立连接实现数据收发。
比如通过CH9121端口1的串口发送LIST命令获取FTP服务器的根目录
◇LIST
◆150 File status OK ; about to open data connection
当服务器返回150后,服务器会通过20端口主动与CH9121的端口2建立连接并发送根目录信息。
◆drwxrwxrwx 1 owner group 0 Feb 21 19:46 .
dr-xr-xr-x 1 owner group 0 Oct 10 17:38 ..
-rwxrwxrwx 1 owner group 196939 Feb 04 10:01 CH9120 TFTP使用详解.pdf
-rwxrwxrwx 1 owner group 153 Dec 12 16:22 README
-rwxrwxrwx 1 owner group 47 Feb 03 17:04 test.c
需要注意的是每次数据命令执行完毕,服务器的数据端口都会自动关闭,下次通信需要CH9121重新发送PORT提供数据端口的信息。
2、Passive模式
CH9121被动模式目前仅适用于数据端口固定的FTP服务器,与主动的区别是CH9121的端口2需要配置为TCP客户端模式,目的端口为FTP服务器的端口,端口号可以通过CH9121端口1发送PASV获取。
◇PASV
◆227 Entering passive mode (192,168,100,111,61,111)
当FTP服务器回复227 表示FTP服务器处于被动模式且开放的数据通信端口信息为(192,168,100,111,61,111)其中(192,168,100,111)为服务器的IP,(61,111)为端口,可通过61*256+111=15727获取端口号为15727,将CH9121的端口2目的端口号设为15727即可,随后再次登录FTP服务器,发送PASV使得服务器进入被动模式,CH9121的端口2就可以与服务器的数据端口建立连接,之后的增删改查操作与主动模式相同。
需要注意的是使用CH9121被动模式与FTP服务器通信一定要先把服务器的数据端口固定不然无法与之建立数据通信,如果采用CH392、CH395或其他芯片则不需要指定服务器的数据端口号,只需要通过PASV获取服务器端口信息后创建相应的socket即可。


CH9121 FTP使用详解的更多相关文章
- 引用 Windows Server 2003 FTP服务器配置详解
引用 昆神之星 的 Windows Server 2003 FTP服务器配置详解 1.FTP文件传输协议,主要用于计算机之间文件传输,是互联网上仅次于www的第二大服务.本文主要演示如何在Window ...
- Linux中搭建一个ftp服务器详解
来源:Linux社区 作者:luzhi1024 详解Linux中搭建一个ftp服务器. ftp工作是会启动两个通道:控制通道 , 数据通道在ftp协议中,控制连接均是由客户端发起的,而数据连接有两种 ...
- FTP协议详解(转)
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”.用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application ...
- 转FTP协议详解
转自:http://www.cnblogs.com/li0803/archive/2010/11/16/1878833.html FTP 是File Transfer Protocol(文件传输协议) ...
- ftp配置文件详解
### 主配置文件(/etc/vsftpd/vsftpd.conf) 严格来说,整个 vsftpd 的配置文件就只有这个档案!这个档案的设定是以 bash的变量设定相同的方式来处理的, 也就是`参数= ...
- 文件服务器:FTP服务器详解
文件服务器:FTP服务器 数据传输原理 功能简介 文件的传输与管理 不同等级的用户身份:user.guest.anonymous 实体用户.权限较完整 匿名用户.下载资源的能力 命令记录与日志文件记录 ...
- linux下ftp配置文件详解
# 匿名用户配置 anonymous_enable=YES # 是否允许匿名ftp,如否则选择NO anon_upload_enable=YES # 匿名用户是否能上传 anon_mkdir_writ ...
- ftp协议详解
客户端与服务器之间,需要多条连接才能完成应用的协议,属于复杂协议.如FTP,PPTP,H.323和SIP均属于复杂协议. 这里主要介绍ftp协议的工作原理.首先,ftp通信协议有两种工作模式,被动模式 ...
- FTP命令详解
FTP的命令行格式为:ftp -v -d -i -n -g [主机IP或者主机名],其中 -v显示远程服务器的所有响应信息: -n限制ftp的自动登录,即不使用: .n etrc文件: -d使用调试方 ...
- FTP服务详解
FTP服务 本章机构 简介 File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文件传输协议".用于Internet上的控制文件的双向传输.同时, ...
随机推荐
- 第五章 dubbo源码解析目录
第十章 dubbo线程模型 一 netty的线程模型 在netty中存在两种线程:boss线程和worker线程. 1 boss线程 作用: accept客户端的连接: 将接收到的连接注册到一个wor ...
- 阿里云开启ssl证书过程记录 NGINX
作者简介:大家好,我是思无邪,2024 毕业生,某厂 Go 开发工程师.. 我的网站:https://www.yishanicode.top/ ,持续更新,希望对你有帮助. 如果文章或网站知识点有错误 ...
- 在没有网关的IP地址上编写路由,实现另一个网段可以访问到该主机
应用场景:该主机两个网卡分别对应两个IP地址 192.168.1.2网段为医保网,并且主机使用了改网段的的网关.192.168.100.99网段地址为互联网地址,没有使用该网段的网关. 我们开发小组通 ...
- API 设计之禅
API 设计之禅 译者按:本文翻译自 How to design a good API and why it matters.根据笔者经历,很多大厂程序员所写的代码和大厂内部封装的各种中间件.类库,毫 ...
- 深入理解Mybatis分库分表执行原理
前言 工作多年,分库分表的场景也见到不少了,但是我仍然对其原理一知半解.趁着放假前时间比较富裕,我想要解答三个问题: 为什么mybatis的mapper.xml文件里的sql不需要拼接表名中的分表? ...
- 一个登录功能也能玩出这么多花样?sa-token带你轻松搞定多地登录、单地登录、同端互斥登录
需求场景 说起登录,你可能会不屑一顾,还有比这更简单的功能吗? 获取一下用户提交参数 username + password 和数据库中一比对,有记录返回[登录成功],无记录返回[用户名或密码错误] ...
- MySql中创建用户以及设置其操作权限
以下设置针对MySql8+版本进行测试,低版本暂无测试. 以管理员身份CMD并定位到MySql安装的bin目录,然后执行命令mysql -u root -p登录到MySql,然后输入登录密码,登录成功 ...
- 10GSFP+系列光模块
10GSFP+双纤系列光模块包括SR.LRM.LR.ER.ZR模块,它们的接口类型都是LC双工,且符合IEEE802.3ae.SFF-8472和SFF-8431标准,以下是这几种光模块的具体详情. 1 ...
- 欧拉积分(Genshin)
\(\Gamma\) 函数 引入.定义 在计算组合数式子的时候,我们时常会看到这样的式子: \[\frac{(-2n)!((-n/2)!)^2}{((-n)!)^3} \] 然而,我们不知道什么是负数 ...
- autohue.js:让你的图片和背景融为一体,绝了!
需求 先来看这样一个场景,拿一个网站举例 这里有一个常见的网站 banner 图容器,大小为为 1910*560 ,看起来背景图完美的充满了宽度,但是图片原始大小时,却是: 它的宽度只有 1440 , ...