當前位置:首頁 > 云服务器 > 正文內容

ftp服务器实现

来源于网络12个月前 (11-02)云服务器282

在模拟实现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分享协议;如需转载时请注明出处及链接!】

扫描二维码推送至手机访问。

版权声明:本文由皇冠云发布,如需转载请注明出处。

本文連結:https://www.idchg.com/info/73350/

分享給朋友:

相关文章

NTP 时间服务器,云服务器技术,香港云香港cera高防云服务器,

1.NTP简介NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以...

[Tomcat服务器 --- 一个简单的基于HTTP WEB服务器],云服务器技术,香港云香港大埔站群服务器,

package com.tomcat.startup;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.io.Outp...

阿里云ECS 云服务器和轻量应用服务器 区别

什么是阿里云轻量应用服务器?  轻量应用服务器是面向入门级云计算及简单应用用户,提供基于单台云服务器的域名管理、应用部署、安全和运维管理的一站式综合服务。用户可以选择精品应用镜像(比如wordpr...

Linux查看服务器带宽

1.查看服务器网络端口 #ifconfig 2.查看带宽大小:sudo ethtool xxx #sudo ethtool ens160 结论:带宽为万兆...

Linux生产服务器Shell脚本,云服务器技术,香港云福田香港站群服务器,

最近在深入学习shell脚本,在皇冠云上看到抚琴煮酒写的一篇生产环境中的shell脚本,特拿来做为存档,以下文章内容均转自抚琴煮酒:作为一名Linux/unix系统管理员,我经常遇到人问这个问题:shell能做什么?shell主要用于数据库...

搭建日志服务器

搭建日志服务器

搭建日志服务器 本人用了两个centos7虚拟机,一个作为客户端,一个作为服务器,搭建了一个日志服务器,步骤如下: 1.客户端:172.20.10.8 修...

評論列表

hkzhao
hkzhao
9个月前 (01-08)

11

發表評論

訪客

看不清,換一張

◎歡迎參與討論,請在這裡發表您的看法和觀點。