FTP服务器

27 篇文章 0 订阅
15 篇文章 0 订阅

模拟实现Ftp服务器源码:https://github.com/uagvdu/Ftp_Server

一、什么是FTP协议
是用于在网络上进行文件传输的一套标准协议,使用C/S模式,位于TCP/IP协议栈的应用层,通过支持该协议的服务器,可以完成本地上传文件和下载服务器文件到本地等操作。
FTP是一个8位的客户端-服务器协议,能够操作任何类型的文件而不需要进一步处理

   文件传输协议有基于TCP的FTP和基于UDP的简单文件传输协议TFTP,它们都是文件共享协议中的
   一大类,即复制整个文件,其特点是:若要存取一个文件,就必须先获得一个本地的文件副本。如果
   要修改文件,只能对文件的副本进行修改,然后再将修改后的文件传回到原节点。

二、FTP服务一般运行于20和21端口
20端口:用于在客户端和服务器之间传输数据流,
21端口: 用于在客户端和服务器之间传输控制流,并且是命令通过ftp服务器的进口
当进行数据传输,长久使用传输流,而控制流一直在空闲时,客户端的防火墙就会被置为超时,使得大量数据通过防火墙时,会产生某些问题,尽管此时文件仍可以传输成功,但是控制会话,已被防火墙断开。

三、FTP工作原理:
1. FTP屏蔽了各计算机系统的细节,因而适合在异构网络中任意计算机之间传送文件。FTP只提供文件传送的一些基本服务,它使用TCP可靠地运输服务,FTP主要功能是减小或消除在不同系统下处理文件的不兼容性。
FTP使用客户/服务器模式,一个FTP服务器可同时为多个客户进程提供服务,FTP的服务器进程由两大部分组成:一个主进程,负责接收新的请求,若干子进程,负责处理单个请求

2.工作步骤:
a . 打开21端口,使客户进程能够进行连接
b. 等待客户进程发出连接请求
c. 启动子进程来处理客户进程的请求,当子进程处理结束即终止
d. 父进程继续再等待,准备接受其他客户进程发出的请求
e. 父子进程之间的处理是并发执行

3.在进行文件传输时:
FTP的客户和服务器之间要建立两个并行的TCP连接: 控制连接,和数据连接
a. 控制连接:并不用来传送文件,在整个会话期间一直保持打开,FTP客户发出的请求通过控制连接发送给服务器端的控制进程。
b. 数据链接: 在控制进程收到客户发送来的文件传输请求后,就创建”数据传送进程“和”数据连接“,用来 连接客户端和服务器端的数据传送进程。数据传送进程完成文件的传送。当传送完毕后,关闭数据传送链接,并结束运行。

    备注: FTP使用了一个分离的控制连接,所以FTP的控制信息是“带外”传送
    使用两个独立接连的好处是使协议更加简单和更容易实现,同时在传输文件时还可以利用控制连接
    (如客户发送终止传输请求)

数据连接和控制连接不会发生混乱:
客户端连接服务器的21端口,并告诉服务器自己用于建立数据传送连接的其他端口, 服务器打开自己的20端口,与客户端所告知的端口进行数据传送
![enter description here][1]

四、FTP服务器
1. FTP虽然可以被终端用户直接使用,但是它是设计成被FTP客户端程序所控制。
2. 运行FTP服务器的许多站点都开放匿名服务,在这种设置下,用户不需要帐号就可以登录服务器,默认情况下,匿名用户的用户名是:“anonymous”。这个帐号不需要密码,虽然通常要求输入用户的邮件地址作为认证密码,但这只是一些细节或者此邮件地址根本不被确定,而是依赖于FTP服务器的配置情况。
3. 可以被发送到FTP服务器的FTP命令列表,包含由IETF在RFC 959中标准化的所有命令。需要注意的是,大多数命令行FTP客户端都给用户提供了额外的命令集。例如,GET是一个常见的用来下载文件的用户命令,用来替代原始的RETR命令。“

五、FTP服务器有两种使用模式:主动和被动
主动模式: 要求客户端和服务器端同时打开并且监听一个端口以创建连接,但这种情况下,客户端因为安装了防火墙会产生一些问题
被动模式: 只要求服务器端产生一个监听相应端口的进程,这样就可以绕过客户端安装了防火墙的问题。

六、一个主动模式的FTP连接创建要遵循以下步骤:
1. 客户端打开一个随机的端口(端口号大于1024,在这里,我们称它为x),同时一个FTP进程连接至服务器的21号命令端口。此时,该tcp连接的来源地端口为客户端指定的随机端口x,目的地端口(远程端口)为服务器上的21号端口。
2. 客户端开始监听端口(x+1),同时向服务器发送一个端口命令(通过服务器的21号命令端口),此命令告诉服务器客户端正在监听的端口号并且已准备好从此端口接收数据。这个端口就是我们所知的数据端口。
3. 服务器打开20号源端口并且创建和客户端数据端口的连接。此时,来源地的端口为20,远程数据(目的地)端口为(x+1)。
4. 客户端通过本地的数据端口创建一个和服务器20号端口的连接,然后向服务器发送一个应答,告诉服务器它已经创建好了一个连接。

这里写图片描述

七、FTP和网页浏览器:
大多数最新的网页浏览器和文件管理器都能和FTP服务器创建连接。这使得在FTP上通过一个接口就可以操控远程文件,如同操控本地文件一样。这个功能通过给定一个FTP的URL实现,形如ftp://<服务器地址>(例如,ftp://ftp.gimp.org )。是否提供密码是可选择的,如果有密码,则形如ftp://:@。大部分网页浏览器要求使用被动FTP模式,然而并不是所有的FTP服务器都支持被动模式

八、 FTP的优缺点:
FTP实现的目标(优点):
1. 促进文件的共享(计算机程序或数据)
2. 鼓励间接或者隐式的使用远程计算机
3. 向用户屏蔽不同主机中各种文件存储系统(File system)的细节
4. 可靠和高效的传输数据
5. 支持任意类型的文件传输

缺点:
1. 密码和文件内容都使用明文传输,可能发生窃听。
2. 因为必须开放一个随机的端口以创建连接,当防火墙存在时,客户端很难过滤处于主动模式下的FTP流量。这个问题,通过使用被动模式的FTP,得到了很大解决。
3. 服务器可能会被告知连接一个第三方计算机的保留端口。
4. 此方式在需要传输文件数量很多的小文件时,性能不好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值