FTP工做原理

FTP工做原理介绍面试

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

两种模式:从服务器角度网络

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

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

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

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

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

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

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

数据通道走的是两个端口,经过工做模式来肯定走的端口:

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

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

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

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

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

FTP双通道工做原理解析

在这里插入图片描述

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 ​ 虚拟用户:特定服务的专用用户,独立的用户/密码文件

※部分文章来源于网络,若有侵权请联系删除;更多文章和资料|点击后方文字直达 ↓↓↓
100GPython自学资料包
阿里云K8s实战手册
[阿里云CDN排坑指南] CDN
ECS运维指南
DevOps实践手册
Hadoop大数据实战手册
Knative云原生应用开发指南
OSS 运维实战手册
云原生架构白皮书
Zabbix企业级分布式监控系统源码文档
10G大厂面试题戳领
相关文章
相关标签/搜索