FTP服务器详细设计说明书.docx
FTP
FTP服务器详细设计说明书
CN0804徐大尧
CN0804
徐大尧
PAGE2
FTP服务器详细设计说明书
目录
引言 2
编写目的 2
项目背景 2
参考资料 2
总体设计 2
需求概述 2
软件结构 2
程序描述 5
功能 5
命令列表 7
算法 错误!未定义书签。
接口 错误!未定义书签。
限制条件 错误!未定义书签。
测试要点 错误!未定义书签。
引言
编写目的
帮助学员了解项目的功能,明确需求功能中用户对系统要做什么的要求,了解需求中的各种业务规则。
范围
软件的名称:ftp服务器
软件的功能:提供基本的上传下载文件。
产品描述
ftp服务器的主要功能是上传下载文件以达到数据共享的目的。在linux底下开发ftp服务器旨在帮助学员综合运用linux初级编程与linux高级编程所学到的知识。如:守护进程的编写,进程间通讯,管道,socket编程,文件I/O标准库函数与系统调用,以及文件权限管理等等。
总体设计
需求概述
软件的名称:ftp服务器
软件的功能:提供基本的上传下载文件。
软件结构
FTP基本模型
FTP
FTP客户端
FTP服务端
用户接口
守护进程
Fork
控制进程
控制连接会话
21端口
控制进程
Fork
Fork
数据进程
数据连接会话
20端口
数据进程
FTP服务器运行守护进程,等待用户的FTP请求。
用户运行FTP命令,请求FTP服务器为其服务。
FTPd守护进程收到用户的FTP请求后,派生出子进程FTP与用户进程FTP
交互,建立文件传输控制连接,使用TCP端口21。
用户输入FTP子命令,服务器接收子命令,如果命令正确,双方各派生一个数据传输进程FTP-DATA,建立数据连接,使用TCP端口20,进行数据传输。
本次子命令的数据传输完,拆除数据连接,结束FTP-DATA进程。
用户继续输入FTP子命令,重复(4)、(5)的过程,直至用户输入quit命令,双方拆除控制连接,结束文件传输,结束FTP进程。
FTP服务器工作流程图
开始
开始
守护进程
控制进程等待
连接
建立控制进程
关闭控制连接
解析命令
数据传输进程
守护进程关闭
数据传输进程结
束
结束
.FTP服务器运行守护进程,等待用户的FTP请求。
守护进程在21号端口监听,等待用户连接
用户建立连接后fork()一个子进程进行控制连,原来的父进程继续等待新的连接到来
用户通过控制连接进程,进行命令解析
用户要建立数据传输是,控制进程fork()一个新的子进程进行数据传输,数据传输完毕后,关闭数据连接。
用户关闭控制连接后,退出FTP服务器
关闭守护进程,FTP服务器运行结束
程序描述
功能
登入模块
本地用户登录验证及权限管理
调用系统函数,验证登入的用户名和密码,验证通过后,再调用系统函数,赋予用户权限。
目录操作
添加目录
调用mkdir函数,在用户工作目录下创建目录,成功返回成功标志,失败返回失败标志。
删除目录
调用rmdir函数,在用户工作目录下创建目录,成功返回成功标志,失败返回失败标志。
重命名目录
调用rename函数,改变文件和目录名字,成功返回成功标志,失败返回失败标志。
改变工作目录
调用chdir函数,改变当前工作目录,成功返回成功标志,失败返回失败标志。
列出目录短清单
把工作目录下文件名字获取出来,通过数据传输连接返回给客户端,成功返回成功标志,失败返回失败标志。
列出目录详细清单
把工作目录下文件名字,用户组,用户名,文件类型,文件大小,修改时间,获取出来,通过数据传输连接返回给客户端,成功返回成功标志,失败返回失败标志。
文件操作
上传文件
上传用户文件道工作目录,成功返回成功标志,失败返回失败标志。
下载文件
用户从工作目录下载文件,成功返回成功标志,失败返回失败标志。
删除文件
用户从工作目录删除文件,成功返回成功标志,失败返回失败标志。
断点续传
用户上传和或下载文件一半后中断,可以从中断位置继续上传或者下载文件,成功返回成功标志,失败返回失败标志。
重命名文件
用户重命名工作目录下文件名字,成功返回成功标志,失败返回失败标志。
FTP文件传输两种工作模式
主动连接
服务器等待控制连接
客户端主动连接服务器的21端口
客户端请求数据连接,发送PORT+随机端口
客户端等待数据连接,打开一个随机端口监听
服务端使用20端口主动连接,与客户端建立一个数据连接
2.被动连接
服务器等待控制连接
客户端主动连接服务器的21端口
客户端请求数据连接,发送PASV命令
服务器发送应答,IP地址+端口号,等待