文档库 最新最全的文档下载
当前位置:文档库 › 简单文件传输协议资料

简单文件传输协议资料

使用FTP协议实现远程文件的接收和发送

实验目的

Internet应用课程设计是对所学计算机网络及Internet应用等知识全面、系统的总结、巩固和提高的一项课程实践活动。

通过课程设计,一方面提高网络编程解决实际问题的能力,另一方面使学生更深入的理解计算机网络及相关协议的有关知识,为以后的学习和系统开发奠定良好的基础。

熟悉网络编程的方法,TCP/IP体系结构与特点,客户机/服务器模式(Client/Server model),Winsocket编程之套接字,在TCP/IP网络中两个进程间的相互作用的主机模式是客户机/服务器模式(Client/Server model)。

掌握Telnet、FTP、HTTP、POP3、DNS等协议的工作原理。

实验要求

显示远程目录下所有文件的清单

支持多种格式文件的上传和下载

提供对本地和远程系统的目录操作功能

实验原理

FTP(File Transfer Protocol)是文件传输协议的简称。

FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。

FTP工作原理:拿下传文件为例,当你启动FTP从远程计算机拷贝文件时,你事实上启动了两个程序:一个本地机上的FTP客户程序:它向FTP服务器提出拷贝文件的请求。另一个是启动在远程计算机的上的FTP服务器程序,它响应你的请求把你指定的文件传送到你的计算机中。FTP采用“客户机/服务器”方式,用户端要在自己的本地计算机上安装FTP 客户程序。FTP客户程序有字符界面和图形界面两种。字符界面的FTP的命令复杂、繁多。图形界面的FTP客户程序,操作上要简洁方便的多。简单地说,支持FTP协议的服务器就是FTP服务器,下面介绍一下什么是FTP协议(文件传输协议)

一般来说,用户联网的首要目的就是实现信息共享,文件传输是信息共享非常重要的一个内容之一。Internet上早期实现传输文件,并不是一件容易的事,我们知道Internet是一个非常复杂的计算机环境,有PC,有工作站,有MAC,有大型机,据统计连接在Internet上的计算机已有上千万台,而这些计算机可能运行不同的操作系统,有运行Unix的服务器,也有运行Dos、Windows的PC机和运行MacOS的苹果机等等,而各种操作系统之间的文件交流问题,需要建立一个统一的文件传输协议,这就是所谓的FTP。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件。

与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP 协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务

器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。

使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可上载或下载文件。也就是说,要想同哪一台计算机传送文件,就必须具有哪一台计算机的适当授权。换言之,除非有用户ID和口令,否则便无法传送文件。这种情况违背了Internet的开放性,Internet 上的FTP主机何止千万,不可能要求每个用户在每一台主机上都拥有帐号。匿名FTP就是为解决这个问题而产生的。

通过FTP程序连接匿名FTP主机的方式同连接普通FTP主机的方式差不多,只是在要求提供用户标识ID时必须输入anonymous,该用户ID的口令可以是任意的字符串。习惯上,用自己的E-mail地址作为口令,使系统维护程序能够记录下来谁在存取这些文件。

作为一个Internet用户,可通过FTP在任何两台Internet主机之间拷贝文件。但是,实际上大多数人只有一个Internet帐户,FTP主要用于下载公共文件,例如共享软件、各公司技术支持文件等。Internet上有成千上万台匿名FTP主机,这些主机上存放着数不清的文件,供用户免费拷贝。实际上,几乎所有类型的信息,所有类型的计算机程序都可以在Internet 上找到。这是Internet吸引我们的重要原因之一。匿名FTP使用户有机会存取到世界上最大的信息库,这个信息库是日积月累起来的,并且还在不断增长,永不关闭,涉及到几乎所有主题。而且,这一切是免费的。

匿名FTP是Internet网上发布软件的常用方法。Internet之所以能延续到今天,是因为人们使用通过标准协议提供标准服务的程序。像这样的程序,有许多就是通过匿名FTP发布的,任何人都可以存取它们。

Internet中的有数目巨大的匿名FTP主机以及更多的文件,那么到底怎样才能知道某一特定文件位于哪个匿名FTP主机上的那个目录中呢?这正是Archie服务器所要完成的工作。Archie将自动在FTP主机中进行搜索,构造一个包含全部文件目录信息的数据库,使你可以直接找到所需文件的位置信息。

程序功能说明

面向连接的套接字的系统调用时序图如下:

程序的设计思想

简单文件传输协议,为了易于说明问题,这里我们设计了简化的文件传输协议(mini FTP),简称SFTP。SFTP的客户端支持如下几个用户命令。

list :浏览服务器当前目录信息

cd :切换服务器目录

rec :上传文件

send :下载文件

quit :退出客户端

为了支持多用户,服务器在接受了一个客户端控制连接请求后,将创建一个线程来专门处理相应客户端的处理请求。

创建线程的函数如下:

HANDLE CreateThread(

LPSECURITY_A TTRIBUTES lpThreadAtrbutes, //SD

SIZE_T dwStackSize, //initial stack size

LPTHREAD_START_ROUTINE lpStartAddress, //thread argument

LPVOID lpParameter, //thread option

DWORD dwCreationFlags, //creation option

LPDWORD lpThreadID //thread identifier

);

其中,参数lpParameter 指定单个的传给线程的参数值,lpStartAddress 是线程函数的地址。线程函数的原型如下:

DWORD WINAPI ThreadProc(

LPVOIC lpParameter //thread data

);

其中,参数lpParameter 就是有CreateThread()函数中的参数lpParameter 传进来的线程数据。

源代码

实验感想

通过这次课程设计,进一步提高了我的变成能力,同时复习了计算机网络课程里关于ftp协议的内容,并且对网络编程有了初步的认识。这次实验能够自己动手实验ftp的功能让我感到很欣喜,其实我们平时用过的很多软件其原理并不复杂,复杂友善的界面掩盖了很多原本很简单的原理,只要我们自己能动脑思考,也可以做得很好的,我会在以后的学习中进一步努力。本次实验由于有同组同学的互相合作,调试程序比以往简单了许多,大家一起交流节省了不少时间。

相关文档