FTP工作原理介绍

文件传输协议:File Transfer Protocol 早期的三个应用级协议之一,基于C/S结构 数据传输格式:二进制(默认)和文本 双通道协议:命令和数据连接

两种模式:从服务器角度

主动(PORT style):服务器主动连接 命令(控制):客户端:随机port —> 服务器:21/tcp 数据:客户端:随机port <—服务器:20/tcp

被动(PASV style):客户端主动连接 命令(控制):客户端:随机port —> 服务器:21/tcp 数据:客户端:随机port —> 服务器:随机port /tcp

基于C/S结构有专门的客户端和专门的服务端

双通道协议:命令通道和数据通道(所谓双通道就是FTP支持两个端口)

命令通道:走TCP的21端口,用来传输指令的。

数据通道:用来传输数据的

命令通道永远是客户端主动向服务端发起请求:命令通道永远走的是TCP/21端口

数据通道走的是两个端口,通过工作模式来确定走的端口:

主动模式(post)为TCP的20端口。

被动模式走的是随机端口,所谓主动和被动都是以服务器的角色来看。

主动模式(post):服务器端主动连接客户端

被动模式(pasv):客户端主动连接服务器端(会通过命令通道相互交换信息,客户端就会知道服务端的随机端口号)

范例:服务器被动模式数据端口 227 Entering Passive Mode (172,16,0,1,224,59) 服务器数据端口为:224*256+59

FTP双通道工作原理解析

FTP工作原理介绍_第1张图片

FTP是一种文件传输协议,它支持两种模式,一种方式叫做Standard (也就是 Active,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 (主动模式)FTP的客户端发送 PORT 命令到FTP server。Passive模式(被动模式)FTP的客户端发送 PASV命令到 FTP Server。

命令通道:

是客户端主动向服务器端发起命令请求,同时服务器端开启TCP/21端口号。客户端主动发起三次握手请求。

服务器由两个端口发起链接。其中有一个叫命令通道的端口,有一个是实现数据通道的端口。命令通道是用来通过实现命令的执行。数据端口是用来实现数据的传输,命令通道走的端口是固定的TCP/21端口。如果客户端需要数据传输时,服务就会开启数据通道端口。数据通道走的端口不是固定的,是根据工作模式来判断开启的端口。

数据通道:

下面介绍一个这数据通道的两种方式的工作原理:

主动工作模式(post):服务器端主动连接客户端

FTP 客户端首先和FTP Server的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己数据端口的TCP 20端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。

被动工作模式(pasv):客户端主动连接服务器端(会通过命令通道相互交换信息,客户端就会知道服务端的随机端口号)

在建立控制通道的时候和Standard模式类似,当客户端通过这个通道发送PASV 命令的时候,FTP server打开一个位于1024和5000之间的随机端口并且通知客户端在这个端口上传送数据的请求,然后FTP server 将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。

FTP服务状态码: 1XX:信息 125:数据连接打开 2XX:成功类状态 200:命令OK 230:登录成功 3XX:补充类 331:用户名OK 4XX:客户端错误 425:不能打开数据连接 5XX:服务器错误 530:不能登录

用户认证:

匿名用户:ftp,anonymous,对应Linux用户ftp ​ 系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow ​ 虚拟用户:特定服务的专用用户,独立的用户/密码文件

更多文章和资料|点击下方文字直达 ↓↓↓
阿里云K8s实战手册
[阿里云CDN排坑指南]CDN
ECS运维指南
DevOps实践手册
Hadoop大数据实战手册
Knative云原生应用开发指南
OSS 运维实战手册

你可能感兴趣的:(FTP工作原理介绍)