ftp服务器实现

来源于网络9个月前云服务器208
美国200G高防现已上架 性价比之王中王 大宽带 CN2直连 高性能 感受不一般香港到大陆最快线路 誉为【站群王】赠天机盾防CC 限时限购低至5折!立即抢购!

在模拟实现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

【版权说明:本篇文章基于互联网CC-BY-NC-SA分享协议;如需转载时请注明出处及相应链接!】

美国200G高防现已上架 性价比之王中王 大宽带 CN2直连 高性能 感受不一般香港到大陆最快线路 誉为【站群王】赠天机盾防CC 限时限购低至5折!立即抢购!

返回列表

上一篇:SQL Server服务器名称

没有最新的文章了...

相关文章

服务器响应时间缓慢的解决方法

用户在使用服务器一段时间后会发现网站打开速度变慢,如果遇到这种问题,我们可以从服务器的硬件和软件方面来进行升级优化,以提升服务器的性能跟它的整体利用率。下面一...

Minecraft我的世界云服务器搭建教程(小白看过来)

过年了,大家有没有剁手买服务器呀, 想和朋友们联机玩MC,却又嫌某易的局限性太大,某宝的又贵,不如自己搭个Minecraft服务...

Qt QTcpSocket 对连接服务器中断的不同情况进行判定

简述 对于一个C/S结构的程序,客户端有些时候需要实时得知与服务器的连接状态。而对于客户端与服务器断开连接的因素很多,现在就目前遇到的情况进行一下总结。 分为下面六种不...

云服务器和一般服务器之间有什么区别?

云服务器和普通服务器之间的区别: 1、云服务器是虚拟的;普通服务器是真实的物理设备。 2、云服务器默认有数据自动同步备份功能;普通服务器需要加硬盘做RAID来...

如何使用腾讯云服务器搭建个人网站?

从刚开始的简单学习HTML语言,到进入实验室跟着老师,学长学习Java,Android,这一年收获很多,这并不是说我的编程能力得到...

Android程序员搭建一个属于自己的服务器

搭建服务器需要些什么工作 本文所介绍的服务器都是入门级别的,适合移动端同学自己搭建玩玩,还没有达到商业开发水平,大牛请莫见怪。 我们搭建服务器主要有以下几...

评论列表

hkzhao
2021-01-08 15:19:05

11

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。