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

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

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

[键入文档标题]

[键入日期]

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

XXXXXXXXXXXXXXXXX

实验综述:

本实验中,笔者通过Socket编程实现了一个简单的FTP协议。实现的程序包括客户端(client.cpp)和服务端(server.cpp)两个部分,并支持如下功能:

GET命令(下载服务端文件到客户端所在目录);

PUT命令(上传客户端文件到服务端工作目录);

PWD命令(打印服务端工作目录);

DIR命令(列出服务端工作目录下的文件);

CD命令(改变服务端工作目录);

?命令(查看帮助);

QUIT命令(关闭客户端与服务端的控制连接并退出客户端和服务端)。

上述支持的命令中,除?命令和QUIT命令外,命令执行时,客户端会先与服务端建立数据连接,在数据连接上完成传输后再断开设计连接,从而实现了FTP协议的设计思想。最终实验程序能够正确完成FTP协议基本的文件传输功能,对较大的文件同样支持,符合本实验的要求。

设计思路说明:

本实验的两个核心是FTP连接模型的建立和文件、数据的传输,笔者对二者的实现思路分别如下所述。

FTP的连接建立过程如下:

服务器启动后,建立控制连接Socket并监听控制连接端口;

客户端启动并连接至该端口;

服务器接受来自客户端的连接,此时控制连接建立;

服务器建立数据连接Socket,将其绑定在数据连接端口上并监听;

客户端每接收到除?命令和QUIT命令外的任一命令时,判定命令格式是否合法,将合法的命令发送到服务器,等待来自服务器的响应;

服务器接收到命令后,监听数据连接端口等待连接,通过控制连接向客户端发送响应后等待客户连接至数据端口;

客户端接收到响应后,连接到数据端口,等待来自服务器的响应;

服务器接受来自客户端的连接,此时数据连接建立。服务器通过数据连接向客户端发送响应;

客户端接收到响应后,开始数据传输操作;

数据传输完成后,客户端关闭数据Socket,服务端关闭接收客户端数据连接所得的Socket;

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

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

GET命令和PUT命令:

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

发送方通过Linux的stat结构获得文件的大小,将其以4字节的块发送给接收方,发送方、接收方分别计算出文件的块数(块大小为4096),便于后续使用。

发送方通过Linux的stat结构获得文件的权限,将其以mode_t大小的块发送给接收方,接收方保存文件的权限以便后续使用。

以a)步计算出的文件的块数作为循环次数,发送方对待发送文件循环读入,每次读入4096字节的存入一长4096字节的读缓存中,先将实际读入的字节数(即read函数的返回值)以4字节的块发送给接收方,再将读缓存的内容以4096字节的块发送给接收方。接收方根据接收到的实际读入的字节数,将接收到的缓存的有效部分写入新文件中。

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

PWD命令、DIR命令和CD命令:

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

思考题回答:

答:

建立两个连接分别传输命令和数据,实现了控制和数据传输的分离,这样做在多线程实现时好处有二:一是在数据传输时,控制连接仍可实现对命令的响应;二是数据传输不会影响到控制命令的传输,这不仅使得编程更加方便,而且即使数据传输出错或卡死,客户端和服务端仍可对其他命令作出响应。

答:

主动方式和被动方式的控制连接建立过程相同,区别在于数据连接的建立过程:主动模式下,由客户端指定并打开数据连接使用的端口并通知服务器连接该端口建立连接;而被动模式下,由服务器指定并打开数据连接使用的端口并通知客户端连接该端口建立连接。设计两个模式是因为主动模式下,服务器对客户端数据连接端口的连接可能会被客户端的防火墙屏蔽,而被动模式下,客户端对服务器数据连接端口的连接可能会被服务器的防火墙屏蔽,故二者各有利弊。

答:

原因是传输每个文件时,客户端都会与服务器建立数据连接,传输完毕这一文件后再断开,从而大大降低了传输效率。可以考虑在文件足够小时,将多个文件在一次数据连接建立后就传送过去,从而减少建立连接所占用的时间,提高传输速度。

文档评论(0)

138****8242 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档