计算机网络原理FTP实验实验报告

  • 格式:docx
  • 大小:110.77 KB
  • 文档页数:3

下载文档原格式

  / 3
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机网络原理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;

(11)客户端接收到QUIT命令时,将命令发送给服务器后,关闭控制连接Socket 并退出;服务器接收到QUIT命令时,关闭自身的控制连接Socket、自身的数

据连接Socket并退出。

各命令的数据传输过程如下:

(1)GET命令和PUT命令:

这两条命令用于进行文件的传输,文件的传输以4096字节大小的块(块大小可通过修改DATA_BUFFER_SIZE宏更改)进行。传输过程如下:

a)发送方通过Linux的stat结构获得文件的大小,将其以4字节的块发送

给接收方,发送方、接收方分别计算出文件的块数(块大小为4096),

便于后续使用。

b)发送方通过Linux的stat结构获得文件的权限,将其以mode_t大小的

块发送给接收方,接收方保存文件的权限以便后续使用。

c)以a)步计算出的文件的块数作为循环次数,发送方对待发送文件循环读

入,每次读入4096字节的存入一长4096字节的读缓存中,先将实际

读入的字节数(即read函数的返回值)以4字节的块发送给接收方,

再将读缓存的内容以4096字节的块发送给接收方。接收方根据接收到

的实际读入的字节数,将接收到的缓存的有效部分写入新文件中。

d)上一步骤完成后,利用fchmod函数,将b)步接收到的文件权限赋予新

文件。此时传输完成。

(2)PWD命令、DIR命令和CD命令:

这三条命令的响应均以一块4096字节的缓存发送,服务器端将响应写入缓存中,再将缓存以4096字节的块发送给客户端,客户端接收后进行相

应的操作。

3.思考题回答:

(1)答:

建立两个连接分别传输命令和数据,实现了控制和数据传输的分离,这样做在多线程实现时好处有二:一是在数据传输时,控制连接仍可实现对命令的响应;

二是数据传输不会影响到控制命令的传输,这不仅使得编程更加方便,而且即使

数据传输出错或卡死,客户端和服务端仍可对其他命令作出响应。

(2)答:

主动方式和被动方式的控制连接建立过程相同,区别在于数据连接的建立过程:主动模式下,由客户端指定并打开数据连接使用的端口并通知服务器连接该

端口建立连接;而被动模式下,由服务器指定并打开数据连接使用的端口并通知

客户端连接该端口建立连接。设计两个模式是因为主动模式下,服务器对客户端

数据连接端口的连接可能会被客户端的防火墙屏蔽,而被动模式下,客户端对服

务器数据连接端口的连接可能会被服务器的防火墙屏蔽,故二者各有利弊。

(3)答:

原因是传输每个文件时,客户端都会与服务器建立数据连接,传输完毕这一文件后再断开,从而大大降低了传输效率。可以考虑在文件足够小时,将多个文

件在一次数据连接建立后就传送过去,从而减少建立连接所占用的时间,提高传输速度。