FTP主动和被动的区别

要弄清FTP主动和被动模式区别,首先需要弄清端口。本质上ftp协议是TCP/IP的上层协议,即应用层协议,也就是说如果要实现一个ftp软件或工具,还是用socket去实现,因此需要弄清socket和端口是基础。注意以下几点:

1.socket分为客户端和服务端,通常情况下服务端需要进行bind绑定端口操作,而客户端不需要操心本地端口的操作,客户端只需要在connect的时候传入服务端的IP和端口参数。其实在socket连接的过程中,双方都需要打开一个端口,只不过客户端的端口由系统自己产生,自己关闭。因为客户端关心的是服务端的端口,而不需要关心本地的端口。很多人误以为客户端不需要端口。

 2.ftp协议中会建立两条通道:一条是命令端口(21),进行命令传送,例如:客户端向服务端请求列表;另外一条是数据端口(20),就是在文件上传下载时使用。

首先FTP协议是建立在TCP协议基础上的,所以client与server的每次交互都要经过三次握手
通过两张图进行解释
1、主动模式(也叫做PORT模式、standard模式,需要利用服务器的21端口进行资料传输)
在这里插入图片描述

说明:client端利用>1024的任意端口发起于server的21端口建立连接,建立“命令联系通道”,如果要发生资料传输,通过21告知server数据联系通道端口(也是一个>1024的端口例如1333),并进行listen,server利用20端口向client的1333端口发起连接,并建立“资料联系通道”。
“资料联系通道”是由server主动建立的(步骤6),所以叫做“主动模式”。

主动方式FTP的主要问题实际上在于客户端。FTP的客户端并没有实际建立一个到服务器数据端口的连接,它只是简单的告诉服务器自己监听的端口号,服务器再回来连接客户端这个指定的端口。对于客户端的防火墙来说,这是从外部系统建立到内部客户端的连接,这是通常会被阻塞的。

2、被动模式

为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。
在这里插入图片描述
说明:建立“命令联系通道”的方式和主动模式基本一样,也是连接server的21端口。但是如果需要传输资料,client会送出PASV指令,告诉server要利用被动模式建立“资料联系通道”,然后server会打开一个>1024端口,并开始listen,并把这个端口号通过“命令联系通道”告知client,client再打开一个>1024的端口,与server建立“资料连接通道”。
“资料连接通道”是由server被动建立的,所以称作“被动模式”。

下面是主动与被动FTP优缺点的简要总结:
  主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
  幸运的是,有折中的办法。既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危险。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值