计算机网络编程技术FTP客户端程序设计2019/10/15第一部分:FTP原理及客户端的构架第二部分:配置FTP服务器以及IIS服务器2019/10/15第一部分:FTP原理及客户端的构架MFC开发工具:vc++6.0或visualstudio20132019/10/15任务分工:组长:周勤如:IIS搭建,FTP服务器的搭建,客户端整体框架设计与FTP协议的连接等小组成员:龙威:FTP的传输模式的设计小组成员:李卓:FTP工作模式的设计小组成员:杨雪香:FTP的登录方式设计2019/10/15本次课设架构配置FTP服务FTP概述FTP客户端什么是FTPFTP服务器FTP客户端FTP命令行Web方式FTP客户端软件安装和配置FTP服务安装FTP服务配置默认FTP站点虚拟目录2019/10/15本节的主要内容FTP服务的工作原理FTP协议规范FTP协议的2种工作模式基于Socket类的FTP服务编程基于TcpClient类的FTP服务编程2019/10/15什么是FTP文件传输协议(FileTransferProtocol)利用FTP可以给用户提供上传和下载文件的服务采用客户机/服务器方式FTP服务器客户机建立连接传输请求给予响应2019/10/15FTP的使用分析FTP的广泛应用:•文件共享;•远程传输;•……2019/10/15常见的FTP客户端软件有哪些?Server-uFLASHFTP、LEAPFTP、CuteFTP(FTP三剑客)……FTP服务的工作原理服务器客户机控制进程控制进程数据传送进程数据传送进程控制连接数据连接2019/10/15(1)工作原理(1)控制连接与数据连接控制连接:用于在通信双方之间传输FTP命令与响应信息,完成建立连接、身份认证与异常处理等控制操作;数据连接用于在通信双方之间传输文件或目录信息。连接规则:控制连接要在数据连接建立之前建立,控制连接要在数据连接释放之后释放。只有在建立数据连接之后才能传输数据,并且在数据传输过程中需要保持控制连接不中断。2019/10/15连接与释放控制连接与数据连接建立的发起者只能是FTP客户机;控制连接释放的发起者只能是FTP客户机;数据连接释放的发起者可以是FTP客户机或服务器。如果在数据连接保持的情况下控制连接中断,这时可以由FTP服务器要求释放数据连接。2019/10/15(2)FTP的传输模式ASCII传输模式文件传输模式(自动模式)二进制数据传输模式2019/10/15(3)FTP的登录方式地址或者域名/虚拟目录名://192.168.1.101/ftp协议规范(1)FTP命令分为6组:①接入命令:USER、PASS、QUIT、ACCT、REIN和ABOR。②文件管理命令:CWD、CDUP、DELE、LIST、NLIST、MKD、PWD、RMD、RNFR、RNTO和SMNT。③数据格式化命令:TYPE、STRU和MODE。④端口定义命令:PORT和PASV。⑤文件传输命令:RETR、STOR、APPE、STOU、ALLO、REST和STAT。⑥其他命令:HELP、NOOP、SITE和SYST。2019/10/15(2)常用的FTP命令FTP命令参数说明USER用户标识符用户信息PASS用户密码密码LIST目录名列出子目录或文件CWD目录名改变到另一个目录MKD目录名创建新目录RMD目录名删除目录STOR文件名存储当前目录下文件(从客户机传送到服务器)QUIT应付费的账务向系统注销ABOR应付费的账务前面的命令异常终止DELE文件名删除文件PWD显示当前目录名2019/10/15FTP命令参数说明TYPEA(ASCII),E(EBCDIC),I(图像),N(非打印),T(TELNET)定义文件类型和当需要时定义打印格式MODES(流),B(块),C(压缩)定义传输方式PORT6个数字的标识符客户机选择端口PASV6个数字的标识符服务器选择端口RETR文件名读取当前目录下文件(从服务器传送到客户机)REST文件名在指明的数据点给文件标记确定位置STAT文件名返回文件的状态HELP询问关于服务器的信息SYST命令询问服务器使用的操作系统2019/10/15(3)FTP响应码:通过百度搜索可以知道的2019/10/15(4)FTP命令与响应码的应用USER命令的响应有230、331、421、500、501与530;PASS命令的响应有230、332、421、500、501与530;PASV命令的响应有227、421、500、501与530;LIST命令的响应有125、150、226、250、421、425、426、450、500、501与530;RETR命令的响应只是比LIST命令多了550。另外,建立连接相关的响应有120、220与421。(5)FTP传送文件列表或目录的过程服务器客户机控制进程控制进程数据传送进程数据传送进程220(服务器就绪)USERZXM331(用户名正确,口令?)PASS******230(用户注册成功)PORT8080150(数据连接即将打开)LIST(usr/user/report)125(数据连接成功)文件列表或目录226(请求关闭数据连接)QUIT221(服务关闭)2019/10/15FTP协议的2种工作模式PORT模式(主动模式)FTP服务器使用TCP21和20两个端口。PASV模式(被动模式)FTP服务器使用TCP21和大于1024的随机端口。2019/10/15PORT模式服务器客户机控制进程1026控制进程21数据传送进程20数据传送进程1027(1)(2)(3)(4)2019/10/15PASV模式服务器客户机控制进程1026控制进程21数据传送进程2024数据传送进程1027(1)(2)(3)(4)数据传送进程202019/10/15PORT和PASV模式比较(1)客户机在内网时的FTP模式特点被动连接模式客户机服务器InternetNAT被动连接(可以)主动连接(失败)2019/10/15主动传输模式(2)服务器在内网时的FTP模式特点服务器NAT被动连接(失败)主动连接(成功)21端口映射Internet客户机2019/10/15基于Socket类的FTP程序设计FTP上传下载的程序,它符合FTPPSAV模式。Socket类允许使用ProtocolType枚举中所列出的任何一种协议执行异步和同步数据传输。2019/10/15FTP客户端程序设计2019/10/15客户端下载程序段//重画窗体内的所有控件,使窗体显示完整foreach(Controlcontrolinthis.Controls){control.Update();}stringpath=this.listBoxFile.SelectedItem.ToString();sw.WriteLine(RETR+path);sw.Flush();this.listBoxInfo.Items.Add(发送:RETR+path);this.listBoxInfo.SelectedIndex=this.listBoxInfo.Items.Count-1;stringstr=sr.ReadLine();this.listBoxInfo.Items.Add(收到:+str);this.listBoxInfo.SelectedIndex=this.listBoxInfo.Items.Count-1;if(str==150)//表示服务器文件状态良好{stringstr1=sr.ReadLine();this.listBoxInfo.Items.Add(文件长度:+str1+字节);this.listBoxInfo.SelectedIndex=this.listBoxInfo.Items.Count-1;intlength=Convert.ToInt32(str1);this.progressBar1.Minimum=0;this.progressBar1.Maximum=length;FileStreamfs=newFileStream(myfile.FileName,FileMode.Create,FileAccess.Write);for(inti=0;ilength;i++){fs.WriteByte((byte)netStream.ReadByte());fs.Flush();this.progressBar1.Value=i;}fs.Close();MessageBox.Show(下载完毕!);this.progressBar1.Value=0;}2019/10/15客户端关闭连接代码段sw.WriteLine(QUIT);sw.Flush();this.listBoxInfo.Items.Add(发送:QUIT);client.Close();2019/10/15小结FTP协议具有明显的两个特点:(1)具有两种连接,即控制连接和数据连接。控制连接负责某客户与服务器之间的连接管理,而数据连接用于每次具体数据传输,是在控制连接建立之后开始的。在数据连接结束之后,才会有控制连接的结束。(2)具有两种工作模式,即主动模式和被动模式,指的是服务器在数据连接方面的主动性或被动性。在网络安全隐患方面各有特点,主动模式是担心公开的端口号20会被网络嗅探工具捕获传输数据,而被动方式是由于会开放所有大于1024的端口号,也会给安全带来问题。其对策一是结合防火墙一起,设置ACL以避免开放其他端口;对策二是采用具有状态检测的防火墙。2019/10/15在了解FTP的基本命令和响应码之后,就可以编写常规的FTP客户端程序可以分别考虑主动模式和被动模式的设计方法,两者具有不同的工作特点。在程序实现上,采用Socket类和TcpClient类,都容易实现FTP服务功能。2019/10/15第二部分:配置FTP服务器和IIS服务器通过控制面板设置2019/10/15本节目标理解FTP服务器工作方式掌握默认FTP站点的配置掌握FTP客户端的使用FTP服务器提供FTP服务并有一定存储空间的计算机专用服务器个人计算机两种登录方式匿名登录授权帐户登录2019/10/15FTP客户端FTP客户端是用户所使用的计算机功能有下载:将服务器的文件下载到本地硬盘上传:将本地硬盘的文件上传到服务器三种连接方式命令行方式连接Web方式连接FTP客户端软件连接2019/10/15安装FTP服务2019/10/15配置默认FTP服务器配置IIS服务器的内容有添加FTP站点设置安全帐户消息主目录安全性2019/10/15设置FTP站点2019/10/15添加FTP站点2019/10/15设置安全验证2019/10/15添加成功2019/10/15虚拟目录虚拟目录能实现本地目录映射到FTP站点的目录也可以将网络共享目录映射到虚拟目录FTP站点的虚拟目录与Web站点的类似虚拟目录的方法地址或者域名/虚拟目录名例如:虚拟目录的管理2019/10/15阶段总结FTP服务器的两种登录方式匿名实名配置默认FTP站点IP地址和TCP端口、最大连接数是否允许匿名登录主目录权限目录安全性2019/10/15谢谢大家!2019/10/15