FTP服务搭建
一、FTP协议
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。FTP协议属于网络层协议中的应用层
二、FTP服务开启,搭建文件传输服务器,传输数据
工具:FileZilla;系统环境:win7 ;FileZilla是目前主流的免费FTP客户端,包括FileZilla客户端和FileZilla Server,下面介绍FileZilla的配置和使用方法:
FileZilla客户端下载地址:http://www.pc6.com/softview/SoftView_32448.html 安装简单,一步一步执行就好,安装过程中如果修改了管理端口,请记住修改的端口号
(1)安装完成后开启FileZilla Server FTP server服务:点击开始-运行-services.msc-开启FileZilla Server FTP server服务。如下
(2)启动FileZilla伺服器,在服务器连接窗口上填写host,端口和密码,本机就是127.0.0.1,端口是安装过程中修改的,默认是14147,密码默认为空,点击connect
如下:
connect之后,在FileZilla伺服器的上半部分可以看到FTP服务器的运作情况,当出现Logged on 字样时,说明成功上线。红色警告可以忽略,如下
(3)用户设置:在general选项中添加用户-设置用户名-密码-点击OK(也可以自己创建组,相同权限的用户归属到同一个组里面,这样就不用重复多次设置每个用户的权限等参数,简化配置和管理工作)
(4)选定资料夹:在Shared folders中添加文件夹和开放权限-点击OK
(5)验证FTP服务是否搭建成功,本地访问ftp://127.0.0.1或者ftp://172.18.0.5 (172.18.0.5是本机IP)
看起来服务是已经搭好了....
三、排错
上面显示FTP服务已搭好,本机可以成功访问,但是在局域网内给其他同事传文件时,发现报425错,无法打开数据连接,如下:
经过查资料以及对FTP协议的学习了解到:
FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 FTP的客户端发送 PORT 命令到FTP服务器。Passive模式FTP的客户端发送 PASV命令到 FTP Server。
两种模式的工作原理贴下面:以下内容来自网络,复制粘贴的(对理解FTP协议相当有用)原链接:https://blog.csdn.net/zhaoyangkl2000/article/details/78225709
Port模式FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。(可以看到在这种方式下是客户端和服务器建立控制连接,服务器向客户端建立数据连接,其中,客户端的控制连接和数据连接的端口号是大于1024的两个端口号(临时端口),而FTP服务器的数据端口为20,控制端口为21)
Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个临时端口(也叫自由端口,端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。(可以看到这种情况下的连接都是由客户端向服务器发起的,与下面所说的“为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式”相对应,而服务器端的数据端口是临时端口,而不是常规的20)
很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。
所以在这里,我们要开启被动模式,防火墙的入栈规则里放开数据传输的端口段或者单个端口,我这里设置为:2013-2018
步骤如下:(1)在FileZilla伺服器页面点击edit-settings-passive mode settings-勾选客户端端口范围-填写2013-2018
(2)在ftp服务器主机上新建入栈规则:点击开始-控制面板-windows防火墙-高级设置-入站规则-新建规则-选择端口-下一步选择特定端口-填写2013-2018-允许连接-完成
完成后的规则如下:
(3)验证其他主机172.18.0.128能否访问FTP服务:ftp://172.18.0.5,这次没有再报错,可成功登录,在伺服器的面板上查看整个连接过程,如下
OK!ftp服务已搭建完成,可以成功传输文件啦
理论部分引用:https://blog.csdn.net/zhaoyangkl2000/article/details/78225709