文档详情

FTP服务器详细设计说明书.docx

发布:2024-03-10约3.21千字共8页下载文档
文本预览下载声明

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地址+端口号,等待

显示全部
相似文档