计算机网络原理FTP实验报告
XXXXXXXXXXXXXXXXX
1. 实验综述:
本实验中,笔者通过Socket编程实现了一个简单的FTP协议。实现的程序包括客户端(client.cpp)和服务端(server.cpp)两个部分,并支持如下功能:
(1) GET命令(下载服务端文件到客户端所在目录);
(2) PUT命令(上传客户端文件到服务端工作目录);
(3) PWD命令(打印服务端工作目录);
(4) DIR命令(列出服务端工作目录下的文件);
(5) CD命令(改变服务端工作目录);
(6) ?命令(查看帮助);
(7) QUIT命令(关闭客户端与服务端的控制连接并退出客户端和服务端)。
上述支持的命令中,除?命令和QUIT命令外,命令执行时,客户端会先与服务端建立数据连接,在数据连接上完成传输后再断开设计连接,从而实现了FTP协议的设计思想。最终实验程序能够正确完成FTP协议基本的文件传输功能,对较大的文件同样支持,符合本实验的要求。
2. 设计思路说明:
本实验的两个核心是FTP连接模型的建立和文件、数据的传输,笔者对二者的实现思路分别如下所述。
FTP的连接建立过程如下:
(1) 服务器启动后,建立控制连接Socket并监听控制连接端口;
(2) 客户端启动并连接至该端口;
(3) 服务器接受来自客户端的连接,此时控制连接建立;
(4) 服务器建立数据连接Socket,将其绑定在数据连接端口上并监听;
(5) 客户端每接收到除?命令和QUIT命令外的任一命令时,判定命令格式是否合
法,将合法的命令发送到服务器,等待来自服务器的响应;
(6) 服务器接收到命令后,监听数据连接端口等待连接,通过控制连接向客户端发
送响应后等待客户连接至数据端口;
(7) 客户端接收到响应后,连接到数据端口,等待来自服务器的响应;
(8) 服务器接受来自客户端的连接,此时数据连接建立。服务器通过数据连接向客
户端发送响应;
(9) 客户端接收到响应后,开始数据传输操作;
(10) 数据传输完成后,客户端关闭数据Socket,服务端关闭接收客户端数据连接所
得的Socket;