欢迎来到天天文库
浏览记录
ID:21903371
大小:412.00 KB
页数:16页
时间:2018-10-25
《c#网络编程专题12:实现一个简单的ftp服务器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、[C#网络编程系列]专题十二:实现一个简单的FTP服务器(转载:http://www.cnblogs.com/zhili/archive/2012/08/23/WebServer.html)引言:休息一个国庆节后好久没有更新文章了,主要是刚开始休息完心态还没有调整过来的,现在差不多进入状态了,所以继续和大家分享下网络编程的知识,在本专题中将和大家分享如何自己实现一个简单的FTP服务器。在我们平时的上网过程中,一般都是使用FTP的客户端来对商家提供的服务器进行访问(上传、下载文件),例如我们经常用到微软的SkyDr
2、ive网盘,115网盘等,然而我们经常用到的都是网页版本的,网页版本和客户端版本的不同,网页版本的FTP客户端,它与服务器的交流是使用HTTP协议发出对服务器的请求的,而客户端版本采用的是FTP协议发出命令对服务器进行请求。然后我们接触到FTP服务器却很少的,所以本专题中将和大家介绍下如何实现一个FTP服务器(不要觉得服务器很深奥一样的,大家可以简单的认为服务器也是一个程序,该程序是对客户端发来的请求做处理的,请求大家可以简单理解为字符串,从这个角度看,服务器程序就是一个对字符串解析的过程。),也是为后面的一个专
3、题做一个铺垫,因为后面专题将和大家介绍下FTP客户端——文件上传下载器,有了自己自定义的FTP服务器后,自定义的FTP客户端就可以对自定义的FTP服务器进行访问,使两者形成一个完整的软件,从而也让大家对基于FTP协议的工具有一个初步的了解。一、基于FTP协议的客户端和服务器是如何"沟通的"?FTP客户端和FTP服务器之间的“沟通”分为四个阶段的:1.启动FTP客户通过FTP客户端软件,发起FTP交互式的命令,就是告诉服务器(也就是一台电脑,服务器上与一个程序(FTP服务)会接收命令,并解析发来的命令,然后发出回复
4、信息)说:“我想和你聊聊天,可以吗?”2.建立控制连接客户端TCP层根据客户给出的服务器IP地址,向服务器提供FTP服务的21号端口发出主动建立连接的请求,服务器接收到请求后,通过3次握手之后,客户端和服务器之间就建立一个TCP连接(就是一条通道,就好比生活中马路,有了马路之后车才能够在两地之间运送东西),之后,所有用户发出的FTP命令和服务器的回应都是通过该连接来传送的,所以也把这个TCP连接叫做控制连接,控制连接在用户退出之前一直存在。3.建立数据连接和进行文件传输现在客户端和服务器端已经建立聊天的通道了(控
5、制连接),但是两者聊天过程中如果互相想赠送礼物要怎么办呢?(这里形象的把客户端和服务器端文件的传输比喻两个人通过聊天后互相赠送礼物的过程),此时我们就需要另外一条马路(数据连接)来进行“礼物的赠送”了,具体赠送礼物的过程如下:1客户端通过控制连接向服务器发送一个上传文件的命令时,会自己分配一个临时的TCP端口号。2客户端通过控制连接向服务器发送一个命令(下面将会介绍的PORT命令)来告诉服务器自己的IP地址和临时的端口号,然后再发送一条上传文件的命令(可以理解为——客户端要送礼物给服务器时,实际上不是简单的发送一
6、个送礼物命令的,在这之前还需要发送一条自我介绍命令(就是告诉服务器自己的IP地址和端口号)来告诉服务器自己就是刚刚和它聊天的那位,这也很符合我们日常送礼物的流程的,一般大家接到礼物都要弄明白送礼物的人是谁,是不是自己认识的)3服务器接收到客户端的IP地址和临时端口号后,以这个IP地址和端口号为目标,使用服务器上的20端口(该端口是用来传输数据的端口)向客户端发出主动建立连接的请求。4客户端收到请求后,通过3此握手后就与服务器之间建立了另外一条TCP连接——数据连接,即用来互相送礼物的通道。5客户端在自己的文件系统
7、中选择要赠送(上传)的文件6客户端将文件写入到文件传输进程中(写入网络流中)7服务器端将传输来的文件在服务器端的文件系统中进行存储8文件传输完成后,由服务器主动关闭该数据的连接94关闭FTP当用户退出FTP时,通关客户端发送退出命令,之后控制连接被关闭,FTP服务结束。二、从上面的沟通过程中你明白了什么?从上面客户端与服务器端的沟通过程中,这里可以概括几点:(1)客户端与服务器端进行交互过程中,传输层使用的是TCP协议而不是其他传输层协议(2)沟通过程有两条TCP连接——一条是控制连接,即传输命令和响应信息的通道
8、,另一条是数据连接,即传输文件的马路,并且必须先有控制连接才能建立数据连接,因为要进行文件传输首先必须知道客户的IP地址和端口号,这个过程就是通过控制连接传送的命令来告知服务器客户端的IP地址和端口号,之后再在两者之间建立数据连接来传输文件(3)在服务器端,控制连接(端口号为21)和数据连接(端口号为20)使用了不同的端口号三、赠送礼物的方式?——文件传输模式客户端与FT
此文档下载收益归作者所有