实验项目名称:文件传输协议的简单设计与实现
实验项目性质:综合性
所属课程名称:计算机网络
一、实验目的
文件传送是各种计算机网络都实现的基本功能,文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是INTERNET使用最广泛的协议之一。
本实验的目的是,学会利用已有网络环境设计并实现简单应用层协议,掌握TCP/IP网络应用程序基本的设计方法和实现技巧。
二、实验内容和要求
1、实验内容
我们的计算机网络实验环境建立在TCP/IP网络体系结构之上。各计算机除了安装TCP/IP软件外,还安装了TCP/IP开发系统。实验室各计算机具备Windows环境中套接字socket的编程接口功能,可为用户提供全网范围的进程通信功能。本实验要求学生利用这些功能,设计和实现一个简单的文件传送协议。
2、具体要求
用socket编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c),该程序应能实现下述命令功能:
get:取远方的一个文件
put:传给远方一个文件
pwd:显示远主当前目录
dir:列出远方当前目录
cd:改变远方当前目录
?:显示你提供的命令
quit:退出返回
这此命令的具体工作方式(指给出结果的形式)可以参照FTP的相应命令,有余力的同学可以多实现几个命令。
最后,写出实验报告。
三、实验主要仪器设备和材料
联网计算机。
四、实验方法、步骤及结构测试
1)关于端口号(假设用SERV_PORT来表示)的设定,原则上2000至5000都可用,为避免冲突,建议取你学号后三位数加上2000,比如学号为971234,则可定义:
#defineSERV_PORT2234
2)客户和服务程序中要有相应的include文件(参考所给例子程序)
3)有些同学的server方程序支持多连接,为了不占用更多的系统资源,并发连接数限制在3个以内。
4)最后提交源程序,撰写实验报告,在实验报告中说明设计的思路。
五、程序设计方案
设计主要函数分析
client端函数
(1)DWORDStartSock()函数//启动winsock
(2)DWORDCreateSocket()//创建套接字
(3)DWORDCallServer()//发送连接请求
通过此函数创建与指定外都端口的连接
(4)DWORDTCPSend(chardata[])//发送命令
通过此函数发送客户端的命令
(5)voidlist(SOCKETsockfd)
通过此函数列出指定目录下的所有文件
(6)intSendFile(SOCKETdatatcps,FILE*file)
通过此函数传输目标文件
server端函数
(1)DWORDStartSock()//初始化winsock
初始化winsock以便client端连接
(3)intSendFileRecord(SOCKETdatatcps,WIN32_FIND_DATA*pfd)//用来发送当前文件记录
(4)intSendFileList(SOCKETdatatcps)//发送文件列表
(5)intSendFile(SOCKETdatatcps,FILE*file)//发送文件
(6)DWORDConnectProcess()//连接
通过此函数创建服务器监听、创建连接、根据客户端命令完成应答。
六、实验结果
客户端连接服务器
查看客户端文件路径、查看服务器文件列表
传输文件、获取文件
七、思考题
C/S:即客户端和服务器结构。客户端和服务器分别承担不同的任务。Client将用户的需求提交给Server,再将Server返回的结果以一定的形式提交给用户。Server的任务是按接收Client提出的服务请求,进行相应的处理,并将结果返回给Client。
在CS结构下,服务器程序通常在一个固定的地址监听客户端的请求。服务器进程通常下处于“休眠”状态,直到客户端对该服务发出连接请求,将其“唤醒”。此时,服务进程“醒来”并对客户端的请求作出适当的反应。
BS(Browser/Server),即浏览器与服务器结构。客户端运行浏览器,浏览器以超文本形式向web服务器提出访问数据库请求。Web服务器接受客户端请求后,将该请求转换为SQL语法,并对数据库进行访问,然后将结果返回给Web服务器。Web服务器再将该结果转换为HTML文档,返回客户端浏览器,以网页的形式显示出来。BS结构中,Web浏览器是客户端最主要的软件,系统功能实现的核心部分集中到服务器上。
1.1、B/S模式的优点和缺点
B/S结构的优点
(1)、具有分布性特点,可以随时随地进行查询、浏览等业务处理。
(2)、业务扩展简单方便,通过增加网页即可增加服务器功能。
(3)、维护简单方便,只需要改变网页,即可实现所有用户的同步更新。
(4)、开发简单,共享性强
B/S模式的缺点
(1)、个性化特点明显降低,无法实现具有个性化的功能要求。
(2)、操作是以鼠标为最基本的操作方式,无法满足快速操作的要求。
(3)、页面动态刷新,响应速度明显降低。
(4)、无法实现分页显示,给数据库访问造成较大的压力。
(5)、功能弱化,难以实现传统模式下的特殊功能要求。
1.2、C/S模式的优点和缺点
C/S模式的优点
(1).由于客户端实现与服务器的直接相连,没有中间环节,因此响应速度快。
(2).操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求。
(3).C/S结构的管理信息系统具有较强的事务处理能力,能实现复杂的业务流程。
C/S模式的缺点
(1).需要专门的客户端安装程序,分布功能弱,针对点多面广且不具备网络条件的用户群体,不能够实现快速部署安装和配置。
(2).兼容性差,对于不同的开发工具,具有较大的局限性。若采用不同工具,需要重新改写程序。
(1)3.开发成本较高,需要具有一定专业水准的技术人员才能完成。
2.1原理
由于FTP是顺序接收文件的,所以,只要计算已接收的数据大小,就可以知道断点在文件的偏移量,续传时,客户端将已接收的数据量传递给服务器,服务器使用这个作为偏移量继续读取文件,将剩余的数据发送至客户端,客户端仅需将接收到的数据追加至原文件尾部即可
2.2实现
以下载文件为例:
1)向服务器发送“REST+本地文件长度”命令,告诉服务器,客户端要断点下载了,服务器必须支持REST命令;
2)向服务器发送“RETR+文件名”命令,通知服务器要下载的文件名,这时服务器开始定位文件指针读文件并发送数据;
3)客户端定位本地文件指针(文件末尾);
4)两端的准备工作都做完了以后,客户端创建socket,以被动或非被动方式建立数据通道,循环调用recv接收数据并追加入本地文件。
SMTP(SimpleMailTransferProtocol)是简单邮件传输协议,是一种提供可靠且有效电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供与来信有关的通知。
超文本传输协议(HTTP,HyperTextTransferProtocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。
每个线程创建一个TCP连接,对应一个文件,采用循环接收,应答等机制来传送文件数据。N个这样的线程就对应而来正在下载N个文件