ftp服务器实现

来源:互联网 发布:java下载图片返回前台 编辑:程序博客网 时间:2024/06/05 19:24

在模拟实现FTP服务器之前,我们先来了解一下有关FTP的功能以及工作原理。

一、什么是FTP
ftp(File Transfer Protocol)文件传输协议。ftp是应用层协议,基于C/S结构,底层使用TCP/IP协议来保证可靠性。
ftp使得主机间可以共享文件,简单来说就是可以在两台计算机之间来回拷贝文件。
ftp服务的基本过程就是:建立连接、传输数据与释放连接。由于ftp服务的特点是数据量大,控制信息比较少,因此在设计ftp时使用了两种连接,分别是控制连接与数据连接。所以ftp有两个端口,一个用于传输命令,一个用于传输数据。

二、ftp工作原理
ftp有两种工作模式,分别是主动模式(PORT)和被动模式(PASV)。主动模式是ftp客户端发送PORT命令到ftp服务器,被动模式是ftp客户端发送PASV命令到ftp服务器。
PORT模式:
在PORT模式下,ftp服务器运行在20和21端口,端口21用于传输客户端和服务器之间交互的命令,端口20用于传输客户端和服务器之间的数据流。
1、客户端首先和服务器的21号端口建立控制连接。
2、然后客户端再通过这个连接向服务器发送PORT指令。PORT指令中包含了客户端用什么端口接收数据。
3、ftp服务器通过20端口和客户端在PORT中指定的数据端口之间传送数据。

PASV模式:
1、客户端首先和服务器的21号端口建立控制连接。
2、然后客户端再通过这个连接向服务器发送PASV指令。
3、服务器在收到PASV指令之后,随机打开一个大于1024的端口,并通知客户端以后在这个端口上进行数据传输。
4、客户端收到这个回复之后,然后客户端连接服务器上这个数据端口。

三、FTP主动模式和被动模式的比较
1、主动模式下,服务器的控制端口是21,数据端口是20。
2、被动模式下,服务器的控制端口是21,数据端口是大于1024的随机端口。
3、主动模式下,服务器的20端口要主动要连接客户端的数据端口。
4、被动模式下,客户端的数据端口要主动链接服务器的数据端口(大于1024的端口)。
这里写图片描述
  主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
在主动模式下,一个服务器只能与一个客户端连接,因为服务器只有一个20端口。所以如果服务器要实现并发的话,就必须使用被动模式。
 
四、模拟实现被动模式的ftp服务器
1、被动模式下的工作过程如下
这里写图片描述
2、ftp客户端模块
这里写图片描述
3、ftp服务器模块
这里写图片描述
4、公共模块
这里写图片描述
5、一次文件下载实例
这里写图片描述

五、源码
ftp1.0

ftp3.0

原创粉丝点击