vsftpd 详解(一)FTP传输机制简析及实战分析

vsftpd 详解(一)FTP传输机制简析及实战分析

FTP(File Transfer Protocol,文件传输协议),可通过网络实现文件共享,是一个较为古老的应用层协议,该协议包含两个组成部分,即FTP Server与FTP Client。

FTP Server主要实现文件存储,用户可使用FTP Client通过FTP协议获取FTP Server上的资源,FTP的传输效率较高,可以传输较大的文件,但是安全性较差,故不推荐在公网直接使用FTP协议传输文件,但是在内网办公环境较为适用。

FTP协议占用两个端口,分别为:20/TCP与21/TCP

​ 21/TCP:控制连接,实现用户登录验证,及除上传下载之外的查看、变更、删除等命令的执行结果返回客户端

​ 20/TCP:数据连接,当用户需要下载或上传文件时,FTP Server就会启用此端口进行数据传输

在这里插入图片描述

FTP Server启动时仅在21端口上进行实时监听,以处理Client的连接请求,而不会实时监听20端口,仅当有数据传输时,才会启动20端口的socket

控制连接肯定是Client主动向Server发起连接请求,这点无需讨论,但是当Client与Server基于21端口建立控制连接之后,需要进行数据传输时,也就是需要建立数据连接的时候,此时由谁来发起首次SYN请求呢,根据发送者的不同,又将数据连接的工作方式划分为主动模式被动模式

主动模式被动模式是根据Server端为参考对象来定义的

到这大家可能会提出一个疑问,为什么要根据数据连接的发起者来划分不同的工作模式呢?搞得这么麻烦…

主动模式(Port)

以Server为参考对象,也就是由Server主动向Client发起数据连接的首次SYN请求,但是这会带来一个问题,我们先分别看看在主动模式下的控制连接数据连接的案例分析

在这里插入图片描述

FTP默认监听ipv6,但是这并不影响,172.13.0.9为Server地址,192.168.20.26为Client地址

控制连接:Client 2068/TCP --> Server 21/TCP

Client的随机高位端口2068主动向Server的21端口请求建立连接

数据连接:Client 2069/TCP <-- Server 20/TCP

Server的20端口主动向Client的2068+1端口发起数据连接的请求,并且是控制连接使用的“端口号+1”

我们知道客户端的环境千奇百怪,并且很大可能会防火墙,所以当Server主动去连接Client时,可能会被防火墙拒绝而导致传输失败,所以就出现了后面的被动模式

被动模式(Passive)

通过主动模式可以进行推测,主动模式是Server主动向Client发起连接请求,那么被动模式自然就是Client主动向Server发起连接请求了,那么对于Server而言,不就是被动的等待连接了么,所以也就称为“被动模式”了

在这里插入图片描述

控制连接主动模式一致,不再赘述,主要看数据连接

数据连接:Client 2078/TCP --> Server 58287/TCP

当Server的21端口接收到Client的上传或下载命令时,会随机生成一个端口号(58287),并采用“特定形式”通过21端口发送给Client,Client接收后通过计算得到端口号(58287),然后以控制连接使用的“端口号+1”为源端口,连接Server端的58287端口,建立数据连接

这么一来,就不需要限定客户端的使用环境了,但是又带来一个问题,就是服务器也有可能存在防火墙,那怎么办呢?这样可以在Server端启用防火墙的“连接追踪”模块,至于如何实现后续章节再做讨论

前面提到“特定形式”,那么什么是特定形式呢,如(227,175),在前边有可能还会带上服务端的IP地址,但是端口号仅看最后两位即可,这两位数通过简单计算即可得出端口号,计算方式为:227*256+175


结论
  • FTP协议占用TCP的20、21端口。20端口为数据端口,21端口为控制端口
  • 当开启数据传输时:
    • 主动模式:由服务端主动向客户端发起数据连接请求;
    • 被动模式:由客户端主动向服务端发起数据连接请求;

vsftpd 详解(二)相关配置文件简析

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值