您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > P9 FTP服务程序设计
2/12/20201计算机网络编程技术第9章FTP服务程序设计2/12/20202FTP的使用分析FTP的广泛应用:文件共享;……常见的FTP客户端软件有哪些?……2/12/20203本章的主要内容FTP服务的工作原理FTP协议规范FTP协议的2种工作模式基于Socket类的FTP服务编程基于TcpClient类的FTP服务编程2/12/202049.1FTP服务的工作原理(1)工作原理服务器客户机控制进程控制进程数据传送进程数据传送进程控制连接数据连接2/12/20205(1)控制连接与数据连接控制连接:用于在通信双方之间传输FTP命令与响应信息,完成建立连接、身份认证与异常处理等控制操作;数据连接用于在通信双方之间传输文件或目录信息。连接规则:控制连接要在数据连接建立之前建立,控制连接要在数据连接释放之后释放。只有在建立数据连接之后才能传输数据,并且在数据传输过程中需要保持控制连接不中断。2/12/20206连接与释放控制连接与数据连接建立的发起者只能是FTP客户机;控制连接释放的发起者只能是FTP客户机;数据连接释放的发起者可以是FTP客户机或服务器。如果在数据连接保持的情况下控制连接中断,这时可以由FTP服务器要求释放数据连接。2/12/20207(2)FTP的传输模式ASCII传输模式二进制数据传输模式2/12/20208(3)FTP的登录方式:list@chengfeng.2008.org@chengfeng.2008.org:2003@chengfeng.2008.org:2003/soft/list.txt2/12/202099.2FTP协议规范(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。2/12/202010(2)常用的FTP命令FTP命令参数说明USER用户标识符用户信息PASS用户密码密码LIST目录名列出子目录或文件CWD目录名改变到另一个目录MKD目录名创建新目录RMD目录名删除目录STOR文件名存储当前目录下文件(从客户机传送到服务器)QUIT应付费的账务向系统注销ABOR应付费的账务前面的命令异常终止DELE文件名删除文件PWD显示当前目录名2/12/202011FTP命令参数说明TYPEA(ASCII),E(EBCDIC),I(图像),N(非打印),T(TELNET)定义文件类型和当需要时定义打印格式MODES(流),B(块),C(压缩)定义传输方式PORT6个数字的标识符客户机选择端口PASV6个数字的标识符服务器选择端口RETR文件名读取当前目录下文件(从服务器传送到客户机)REST文件名在指明的数据点给文件标记确定位置STAT文件名返回文件的状态HELP询问关于服务器的信息SYST命令询问服务器使用的操作系统2/12/202012(3)FTP响应码:P223—224(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。2/12/202013(5)FTP传送文件列表或目录的过程服务器客户机控制进程控制进程数据传送进程数据传送进程220(服务器就绪)USERZXM331(用户名正确,口令?)PASS******230(用户注册成功)PORT8080150(数据连接即将打开)LIST(usr/user/report)125(数据连接成功)文件列表或目录226(请求关闭数据连接)QUIT221(服务关闭)2/12/2020149.3FTP协议的2种工作模式PORT模式(主动模式)FTP服务器使用TCP21和20两个端口。PASV模式(被动模式)FTP服务器使用TCP21和大于1024的随机端口。2/12/2020159.3.1PORT模式服务器客户机控制进程1026控制进程21数据传送进程20数据传送进程1027(1)(2)(3)(4)2/12/2020169.3.2PASV模式服务器客户机控制进程1026控制进程21数据传送进程2024数据传送进程1027(1)(2)(3)(4)数据传送进程202/12/2020179.3.3PORT和PASV模式比较(1)客户机在内网时的FTP模式特点客户机服务器InternetNAT被动连接(可以)主动连接(失败)2/12/202018(2)服务器在内网时的FTP模式特点服务器NAT被动连接(失败)主动连接(成功)21端口映射Internet客户机2/12/2020199.4基于Socket类的FTP程序设计FTP上传下载的程序,它符合FTPPSAV模式。Socket类允许使用ProtocolType枚举中所列出的任何一种协议执行异步和同步数据传输。程序:P228—2472/12/2020209.5基于TcpClient类的FTP程序设计FTP服务器设计界面FTP客户端设计界面2/12/202021客户下载程序段//重画窗体内的所有控件,使窗体显示完整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;}2/12/202022客户关闭连接代码段sw.WriteLine(QUIT);sw.Flush();this.listBoxInfo.Items.Add(发送:QUIT);client.Close();2/12/202023本章小结FTP协议具有明显的两个特点:(1)具有两种连接,即控制连接和数据连接。控制连接负责某客户与服务器之间的连接管理,而数据连接用于每次具体数据传输,是在控制连接建立之后开始的。在数据连接结束之后,才会有控制连接的结束。(2)具有两种工作模式,即主动模式和被动模式,指的是服务器在数据连接方面的主动性或被动性。在网络安全隐患方面各有特点,主动模式是担心公开的端口号20会被网络嗅探工具捕获传输数据,而被动方式是由于会开放所有大于1024的端口号,也会给安全带来问题。其对策一是结合防火墙一起,设置ACL以避免开放其他端口;对策二是采用具有状态检测的防火墙。2/12/202024在了解FTP的基本命令和响应码之后,就可以编写常规的FTP服务程序,包括FTP服务器和FTP客户端。可以分别考虑主动模式和被动模式的设计方法,两者具有不同的工作特点。在程序实现上,采用Socket类和TcpClient类,都容易实现FTP服务功能。2/12/202025实验项目1.为FTP服务程序增加加密功能,对用户名和口令进行加密处理;2.分析工具软件“快车FlashGet”的功能和特点,特别是选项设置,如图所示。结合本章的程序,给出具有FlashGet特点的设计思路和流程,并自行开发一个简化版的网际快车原型。
本文标题:P9 FTP服务程序设计
链接地址:https://www.777doc.com/doc-3690843 .html