


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
[键入文档标题][键入日期] 计算机网络原理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字节的块发送给客户端,客户端接收后进行相应的操作。思考题回答:答:建立两个连接分别传输命令和数据,实现了控制和数据传输的分离,这样做在多线程实现时好处有二:一是在数据传输时,控制连接仍可实现对命令的响应;二是数据传输不会影响到控制命令的传输,这不仅使得编程更加方便,而且即使数据传输出错或卡死,客户端和服务端仍可对其他命令作出响应。答:主动方式和被动方式的控制连接建立过程相同,区别在于数据连接的建立过程:主动模式下,由客户端指定并打开数据连接使用的端口并通知服务器连接该端口建立连接;而被动模式下,由服务器指定并打开数据连接使用的端口并通知客户端连接该端口建立连接。设计两个模式是因为主动模式下,服务器对客户端数据连接端口的连接可能会被客户端的防火墙屏蔽,而被动模式下,客户端对服务器数据连接端口的连接可能会被服务器的防火墙屏蔽,故二者各有利弊。答:原因是传输每个文件时,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论