微普FTP服务器项目手册.docx

上传人:b****5 文档编号:5333721 上传时间:2022-12-15 格式:DOCX 页数:7 大小:18.46KB
下载 相关 举报
微普FTP服务器项目手册.docx_第1页
第1页 / 共7页
微普FTP服务器项目手册.docx_第2页
第2页 / 共7页
微普FTP服务器项目手册.docx_第3页
第3页 / 共7页
微普FTP服务器项目手册.docx_第4页
第4页 / 共7页
微普FTP服务器项目手册.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

微普FTP服务器项目手册.docx

《微普FTP服务器项目手册.docx》由会员分享,可在线阅读,更多相关《微普FTP服务器项目手册.docx(7页珍藏版)》请在冰豆网上搜索。

微普FTP服务器项目手册.docx

微普FTP服务器项目手册

微普信息人才培养基地

FTP服务器项目手册V1.0

 

微普信息学术部著

目录

第1章项目需求1

1.1引言1

1.1.1编写目的1

1.1.2范围1

1.2项目概述1

1.2.1产品描述1

1.2.2产品功能1

1.2.3一般约束2

1.3项目要求3

1.3.1ftp服务器设计成为一个守护进程3

1.3.2程序必须接受三个参数start,stop,restart3

1.3.3程序要捕获以下信号并做相应处理3

1.3.4要实现的FTP命令列表4

第1章项目需求

1.1引言

1.1.1编写目的

帮助学员了解项目的功能,明确需求功能中用户对系统要做什么的要求,了解需求中的各种业务规则。

1.1.2范围

软件的名称:

ftp服务器

软件的功能:

提供基本的上传下载文件。

1.2项目概述

1.2.1产品描述

ftp服务器的主要功能是上传下载文件以达到数据共享的目的。

在linux底下开发ftp服务器旨在帮助学员综合运用linux初级编程与linux高级编程所学到的知识。

如:

守护进程的编写,进程间通讯,管道,socket编程,文件I/O标准库函数与系统调用,以及文件权限管理等等。

1.2.2产品功能

必需要实现的软件功能表

模块

功能

说明

登录模块

本地用户登录验证及权限管理

匿名用户登录及权限管理

匿名用户目录限制在/var/ftp目录底下,

不能访问其它目录

修改权限

修改目录或文件权限

SITECHMOD

目录操作

添加目录

MKD或XMKD

删除目录

RMD或XRMD

重命名目录

RNFR,RNTO

返回父目录

CDUP

改变工作目录

CWD或XCWD

列出目录短清单

NLST

列出目录详细清单

LIST

文件操作

删除文件

DELE

重命名文件

RNFR,RNTO

文件传输模块

上传文件

STOR

下载文件

RETR

断点续传

REST,APPE

ftp文件传输两种工作模式

主动连接

PORT

被动连接

PASV

监控模块

统计服务器上传下载文件数,上传下载的字节数,服务器当前连接数

要求用共享内存与信号量来实现

限速

限制上传速度与下载速度

限制最大连接数

421Connectionrefused:

toomanysessions

限制每IP最大连接数,用哈希表实现

421Connectionrefused:

toomanysessionsforthisaddress.

进程模型

客户端每个连接,要求服务器用两个进程处理,其中一个进程处理控制连接,另一个进程处理文件传输,两个进程之间通讯要求用socketpair

1.2.3一般约束

编程语言:

使用标准C编程语言。

运行环境:

redhatlinux9

1.3项目要求

1.3.1项目要求用多文件,并编写Makefile来编译。

1.3.2ftp服务器设计成为一个守护进程

守护进程是在后台运行不受终端控制的进程。

1.3.3使用Shell脚本来实现start,stop,restart

假定程序可执行文件为myftpd,编写的Shell脚本为ftpdctrl.sh。

可以用./ftpdctrl.shstart来启动myftpd服务器,可以用./ftpdctrl.shstop停止,可以用./ftpdctrl.shrestart重启。

停止服务器的时候,要注意删除共享内存与信号量。

1.3.4程序要捕获以下信号并做相应处理

SIGHUP进行清理工作,共享内存与信号量

SIGQUIT进行清理工作,共享内存与信号量

SIGCHLD调用wait避免僵死进程,由于子进程退出,更改相应IP的连接数。

方法是,第一步根据进程ID,到第一个哈希表中找到该进程ID所对应的IP,第二步,根据IP找到该IP对应的连接数,然后把该连接数减1。

SIGPIPE忽略。

1.3.5控制连接进程与数据接收进程独立开来,两个进程通过Unix域协议通讯

控制连接进程接收到客户端的数据请求后,不自行处理,把这条命令分派给数据进程,让数据进程处理。

控制连接进程与数据进程之间的消息通讯用Unix域协议来实现。

也可以考虑数据进程用线程来实现。

1.3.6要求实现限速功能。

实现限制上传、下载速度,限制的速度大小通过配置文件配置。

1.3.7要求用配置文件来对项目的一些参数进行配置。

实现的时候,要求把文件中的配置信息一次性读到哈希表中。

1.3.8客户端空闲处理

如果服务端在一定时间(这个时间可以通过配置文件配置)没有收到客户端的请求,服务器端要退出为该客户端服务的进程(包括控制连接进程与数据进程),以便腾出资源为其他更多的客户端服务。

1.3.9要实现的FTP命令列表

命令类型

命令

功能说明

访问控制命令(用于指定访问控制标记)

USER

服务器上的用户名。

PASS

用户口令。

CWD,XCWD

改变工作目录。

CDUP

回到上一层目录(父目录)

QUIT

退出登录。

此命令终止USER,服务器关闭控制连接。

传输参数命令(用于在数据传输时设置默认值)

PORT

数据端口,主要向服务器发送客户数据连接的端口,格式为PORTh1,h2,h3,h4,p1,p2,其中32位的IP地址用h1,h2,h3,h4表示,16位的TCP端口号用p1,p2表示。

PASV

此命令要求服务器数据传输进程在随机端口上监听,进入被动接收请求的状态。

TYPE

文件类型,可指定ASCII码,二进制等。

服务命令(定义用户请求的文传输或文件系统功能)

RETR

获得文件

STOR

保存文件,向服务器传输文件。

如果文件已存在,原文件将被覆盖,如果文件不存在,则新建文件。

APPE

与STOR功能类似,但如果文件在指定路径已存在,则把数据附加到原文件尾部,如果不存在,则新建一个文件。

REST

重新开始,参数代表服务器要重新开始的那一点,它并不传送文件,而是略过指定点前的数据,此命令后应该跟其他要求文件传输的FTP命令。

RNFR,RNTO

重命名

ABOR

异常终止。

此命令通知服务中止以前的FTP命令和与之相关的数据传输。

如果先前的操作已完成,则没有动作,返回226;如果没有完成,返回225。

DELE

删除文件

RMD,XRMD

删除目录

MKD,XMKD

新建目录

PWD,XPWD

打印当前目录

LIST

列目录详细清单

SYST

获取系统信息

STAT

返回服务器状态,服务器上传的文件数,下载的文件数,上传的文件字节数,下载的文件字节数,当前连接数

SIZE

获得文件大小

HELP

帮助

NOOP

该命令不指定任何动作,只是要求服务器返回OK响应。

1.4项目中用到的技术点

1.4.1多进程编程

1.4.2匿名管道

1.4.3exec系列函数

1.4.4复制文件描述符函数(dup、dup2、fcntl)

1.4.5共享内存

1.4.6信号量

1.4.7基本套接字

1.4.8要求实现守护进程

1.4.9要求捕获信号

1.4.10要求用select来实现超时

1.4.11要求实现限制上传与下载速度(可以用线程来实现,也可以用setitimer来实现)

1.4.12要求统计服务器流量

1.4.13要求实现start,stop,restart

1.4.14系统参数要求在配置文件中配置

1.4.15权限控制,相应的用户只能访问相应用户的文件与文件夹,相应的用户所创建的文件夹与文件的拥有者与创建者一一对应

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1