第9章文件传输协议实验实验目的与实验环境实验目的掌握FTP的工作原理熟悉FTP的常用命令与状态码实验环境运行WindowsXP/WindowsServer2003/Windows7操作系统的PC两台Wireshark网络数据包分析器ServU文件传输服务器软件FTP(文件传输协议)协议FTP(FileTransferProtocol)是一种用于Internet文件传送的应用层协议。所谓文件传送,实际上是将一个文件从一个系统复制到另一个系统中。FTP报文的传输基于TCP协议,客户端和服务器之间会建立两个TCP连接:控制连接和数据连接。控制连接一直持续到客户端和服务器进程间的通信完成为止,用于传输控制命令,服务器使用21端口;数据连接根据通信的需要随时建立和释放,用于数据的传输,服务器常使用20端口。FTP的工作原理FTP支持两种连接模式,一种是标准模式(也称为主动模式),一种是被动模式。两种模式下,客户端和服务器都是先建立控制连接。服务器打开用于FTP的端口21,等待客户端的连接。FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接。该连接建立后,将命令从客户端传给服务器,再传回服务器的应答。控制连接的生存期是整个FTP会话时间。FTP的工作原理(续)两种模式下,数据连接的建立方法不同。每当一个文件要在客户与服务器之间传输时,就会创建一个数据连接,用来传输文件和其它数据,例如:目录列表等。这种连接在需要数据传输时建立,而一旦数据传输完毕就关闭,每次使用的端口也不一定相同。主动模式在主动模式下,FTP客户端开放端口N+1进行监听,并通过控制连接向服务器发出PORTN+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。被动模式在被动模式下,FTP客户端开启端口N+1。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后在对PASV命令的应答中通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。FTP命令命令命令描述USERusername用户--标识文件系统的访问用户,通常是底层连接建立(TCP成功握手结束)之后发送的第一个命令PASSpassword密码--发送用户密码(默认情况下信息不加密传送)CWDpathname改变当前工作目录QUIT退出--终止命令连接PORTh1,h2,h3,h4,p1,p2(h指主机的IP地址字节;p指端口号)端口--设置数据连接端口号PASV等待TYPEcode类型--指出传输中使用的数据表示类型(例如,ASCII、EBCDIC和二进制图像是三种不同数据类型)RETRpathname/filename提取--从DTP服务器得到一个目录或文件STORpathname/filename存储--向DTP服务器发送一个目录或文件DELEpathname/filename删除一个目录或文件RMDpathname在FTP服务器上删除一个目录MKDpathname在FTP服务器上新建一个目录PWD打印工作目录—显示客户机进入的当前目录路径NLST[pathname/filename]名称列表—从服务器上和到目录列表HELP帮助—显示服务器支持的命令列表。FTP应答码110:重新启动标记应答。120:在n分钟内准备好125:连接打开准备传送150:打开数据连接200:命令成功202:命令失败211:系统状态212:目录状态213:文件状态214:帮助信息215:名字系统类型220:新用户服务准备好了221:服务关闭控制连接,可以退出登录225:数据连接打开,无传输正在进行226:关闭数据连接,请求的文件操作成功227:进入被动模式230:用户登录250:请求的文件操作完成257:创建PATHNAME331:用户名正确,需要口令332:登录时需要帐户信息350:下一步命令421:不能提供服务,关闭控制连接425:不能打开数据连接426:关闭连接,中止传输450:请求的文件操作未执行451:中止请求的操作:有本地错误452:未执行请求的操作:系统存储空间不足500:格式错误,命令不可识别501:参数语法错误502:命令未实现503:命令顺序错误504:此参数下的命令功能未实现530:未登录532:存储文件需要帐户信息550:未执行请求的操作551:请求操作中止:页类型未知552:请求的文件操作中止,存储分配溢出553:未执行请求的操作:文件名不合法实验步骤1.网络配置任选局域网中的两台主机A和B。设置主机A的IP地址172.16.1.1(子网掩码255.255.255.0),作为服务器,关闭Windows防火墙。设置主机B的IP地址172.16.1.2(子网掩码255.255.255.0),作为客户机。2.配置FTP服务器在主机A上安装FTP服务器软件ServU。启动Serv-U.exe,在弹出的设置向导中新建FTP服务器的域名(例如,172.16.1.1),设置FTP服务器的IP地址(例如,172.16.1.1),创建用户(例如stu8000),设置密码1,指定该用户的访问目录(例如E:\)。启动FTP服务。3.验证FTP通信在主机B上安装Wireshark网络协议分析器。启动协议分析器Wireshark,设置过滤条件“host172.16.1.2and(port21orport20)”(提取主机B的FTP通信),开始捕获数据。在主机B的命令行提示符环境下运行:ftp172.16.1.1。在“User:”提示符后输入用户名(例如stu8000);在“PASS”提示符后输入密码:1。登录成功之后,在“ftp”提示符后输入命令dir,显示当前目录下的文件列表。察看进行上述操作之后的命令行窗口,例如图9.2所示。输入“quit”退出FTP登录。停止捕获数据,察看主机B捕获的数据,分析FTP服务器使用的固定端口是多少?在捕获的数据中,查找FTP登录的用户名和密码,说明FTP的安全性。察看建立FTP数据连接之前的端口命令和应答报文,并分析FTP的工作模式是主动模式还是被动模式?说明原因。思考与讨论FTP协议为什么要区分控制连接和数据连接?如果只用一条连接传送命令和数据会有什么局限?很多防火墙在设置的时候都是不允许接受外部发起连接的,哪么位于防火墙后或内网的FTP服务器能同时支持PORT和PASV模式吗?