首页 > 其他 > 详细

FTP初探

时间:2020-02-21 20:04:46      阅读:77      评论:0      收藏:0      [点我收藏+]

之前对ftp做过简单的搭建以及使用,使用不多且仅限于简单使用,对FTP文件传输机制也没有多少了解。

近期做一个项目需要通过FTP做内外网的文件交换,大体交换方式如下:

技术分享图片


当然,这只是内网访问外网,反之亦然(这里直接省略,图上没有绘出)内外网之间是使用的第三方的交换平台,开通访问端口(未开通端口无法通讯)以及做地址映射。

按照此种方式设置后,发现内外网访问只能够访问到ftp的用户登录界面,登录后无法获取相应的数据列表以及文件传输。


基于问题,查阅相关资料,发现FTP并非仅仅使用了21端口(默认端口,可以更改),21端口只是一个命令端口,数据传输还需要另外一个端口,因此仅仅开通21端口是不行的。

FTP协议有两种工作方式:PORT方式和PASV方式,即主动方式和被动方式。

1、主动方式

连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT 命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的 XXXX端口发送连接请求,建立一条数据链路来传送数据。

2、被动方式

连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请 求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV 命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口 发送连接请求,建立一条数据链路来传送数据。

从上面可以看出,两种方式的命令链路连接方法是一样的,但是数据链路的建立方法就完全不同。

扩展:被动模式是随着共享网络的发展而产生的,例如一个局域网共享190.111.186.202一个公网IP上网,当一个局域网内部用户192.168.1.120去访问外网ftp时,其会告诉ftp服务器我打开了X端口,你来连接我吧,由于共享上网原因,ftp端口就会向190.111.186.202这个公网IP的X端口传输数据,则会出现传输失败的情况。

默认FTP客户端工作在主动模式下,客户端制定数据传输端口服务器去主动连接客户端。

主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。

IIS提供的FTP服务默认为也为主动模式。可以通过客户端(注意:这里是对IIS的设置,并不是对你搭建的FTP的设置)。

技术分享图片

图上选择的是IIS根节点,并非是ftp的节点。进入后进行端口设置。设置完成后重启IIS.

技术分享图片

尝试解决方法:

首先,是尝试解决方法(为进行实际测试),我这里最终是修改内外网交换平台的部分设置解决的,如果要固定到指定的端口,个人觉得可以通过两种方式去解决:

1、对于主动方式

主动方式两个端口都是固定的,控制端口(默认21)以及数据传输接口(默认为控制端口减去1,即20端口),需要开通这两个端口即可。当然这种方式无法应用于共享上网的情况。

2、对于被动方式

控制端口(默认21)以及数据传输端口不定,可以通过软件设置固定被动模式下的端口为固定的几个端口,然后放开指定的端口即可。


参考:

http://www.360doc.com/content/17/0712/21/1355383_670894461.shtml

https://blog.csdn.net/qq_33974741/article/details/84480680

FTP初探

原文:https://www.cnblogs.com/Jingkunliu/p/12342285.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!