FTP实验报告1、实验目的本实验要求在linux系统上完成一个文件传输协议,通过本实验,不但可以深入理解FTP协议的原理和细节,还可以学会利用Socket接口设计实现简单应用层协议,掌握网络应用程序的基本设计方法和实验技巧。2、实验说明文件传输协议用于两台计算机之间传递文件,FTP包含了两个通道。一个是控制通道,一个是数据通道。控制通道是和FTP服务器进行沟通的通道,连接服务器,发送指令。数据通道则是和FTP服务器进行文件传输和获取文件列表的通道。3、实验内容本实验要求在Linux系统上使用Socket接口实现FTP客户顿和服务器端的程序,使客户端可以连接至服务器,并且可以进行一些FTP的基本操作。应实现的FTP命令包括如下几点:1、get:取远方的一个文件2、put:传给远方一个文件3、pwd:显示远方当前目录4、dir:列出远方当前目录5、cd:改变远方当前目录6、help:显示提供的命令7、quit:退出4、实验代码客户端和服务器代码见附件。5、思考题1.在FTP协议中,为什么要建立两个TCP连接来分别传送命令和数据?答:如果只用一个连接,那就是复用一个端口。而我们知道,端口之间通信需要传输协议才能建立连接,端口的复用等于说在一个端口上同时使用2种协议以上,但如果是10种协议呢?不但会影响传输速度,数据出错的概率也变大了。2.主动方式和被动方式的主要区别是什么?为何要设计这两种方式?答:区别:主动方式下客户端首先和服务端建立连接,在传输数据时服务器和客户端必须建立一个新的连接,而被动方式则是由服务器等待客户端来连接,且不用建立新的连接。原因:一般情况下都是采用主动模式,但很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以主动模式许多时候在内部网络的机器通过防火墙出去时受到了限制,因为从服务器的TCP20无法和内部网络的客户端建立一个新的连接,造成无法工作。这个时候被动模式就派上用场,因为不用建立新的连接,所以也就不会涉及到后面的问题了。3.当使用FTP下载大量小文件的时候,速度会很慢,这是什么缘故?可以怎样改进?答:原因:若顺序下载,则对于每个文件,服务器都要先寻找文件再传输。改进:开多个线程并行下载。6、实验总结通过本次试验,我理解了整个FTP协议的细节和工作流程,对Linux系统下Socket编程的过程有了较多的了解,为以后网络编程的学习打下了良好的基础。