(P04)miniftpd:项目需求,系统设计

一、项目需求

1.ftp命令列表

  • 服务命令(最关键)中的5个命令,数据的传输都是通过数据连接通道来完成的,所以需要先传输PORT命令或者PASV命令数据连接通道才能正常工作。

  • STOU也是文件上传的命令,与STOR,APPE区别在于,如果服务器有abc文件,则STOU会创建一个abc.1文件来保存,以此类推。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.参数配置

  • 通过配置文件来配置,类似/etc/vsftpd.conf

3.空闲断开

  • 服务端
    /etc/vsftpd.conf
    在这里插入图片描述

重启vsftpd
在这里插入图片描述

  • 客户端
    客户端这边也要重启一下
    在这里插入图片描述
    客户端5s后断开了
    在这里插入图片描述

4.限速

  • 服务端
    /etc/vsftpd.conf
    当前限速为100KB
    在这里插入图片描述

  • 客户端
    客户端的速度会下慢慢降速到100KB
    在这里插入图片描述
    传输过程中的空闲断开功能是不生效的。

5.连接数限制

  • (1)总连接数的限制
    服务端:
    如果没有参数自己加上去
    在这里插入图片描述
    重启vstdpd服务,断开客户端

客户端:
先连接一个
在这里插入图片描述
在这里插入图片描述

再连接一个,再启动一个客户端

  • (2)同一个IP连接数的限制
    因为同一个IP连接数的限制的前提条件是总连接数max_clients的限制,所以这里先设置为10
    在这里插入图片描述
    重启vsftpd服务

客户端:
新建一个标签,连接三次
在这里插入图片描述

6.断点续载与端点续传

  • 客户端配置站点支持续传功能:
    在这里插入图片描述
    上传一个文件的过程中断开
    在这里插入图片描述
    开始续传,右键
    在这里插入图片描述
    在这里插入图片描述
    续传实际上有一个重启的位置,这样服务器打开该文件的时候,会将文件指针指向该位置,将剩余的信息填写到续传的位置
    在这里插入图片描述
  • 客户端的APP续传功能
    在这里插入图片描述
    中间步骤与上类似,最后发现是使用APPE命令进行续传
    在这里插入图片描述

二、系统设计

  • 系统逻辑结构
    若客户端连接vsftpd服务端后,可以看到有三个进程:
    vsftpd服务进程
    Nobody进程和所登录的用户进程

在这里插入图片描述

  • 使用多进程的方式来实现,ftp服务不能使用多线程来实现。
    因为多线程共享同一个工作目录,因为其他客户端对目录的更改会影响到别的客户端,别的客户端会感觉到莫名其妙,此外,IO复用也是不允许的,因为IO复用是一个线程处理很多个客户端的连接,只要一个连接更改目录,会影响到其他的连接。

  • 为什么一个客户端连接过来为啥采用2个进程呢?
    服务进程直接与客户端进行通信,nobody进程没有直接与客户端进行通信,它仅仅与服务进程进行通信,协助服务进程与客户端之间建立数据连接通道以及需要一些特殊连接权限的控制,一旦完成后,再通知给服务进程,nobody进程与服务进程采用的是内部通信的协议,可以用unix域来进行通信。

  • 图1:
    在这里插入图片描述

  • 图2:
    接入模块一旦获得客户端的连接之后,会创建2个进程,一个是服务进程,服务进程要处理客户端发送过来的ftp请求,ftp协议解析器对ftp请求进行解析,还有数据协商命令,比如post,通过进程间通信模块,让nobody进程来协助进行内部协议解析器的解析,比如与客户端建立相应连接,然后将数据连接的套接字通过进程间通信模块传输给服务进程,服务进程得到该连接(Unix域协议是可以传输文件描述符的),从而与客户端建立了一个数据连接通道,通过数据传输模块进行数据传输。
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜欢打篮球的普通人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值