FTP的两种不同工作模式

FTP的两种不同工作模式:PORT(主动模式)、PASV(被动模式)

 

1、PORT模式:该模式是FTP协议最初定义的连接模式,其连接过程是:在开始一个FTP连接时,客户端程序首先会为自己随机分配一个TCP端

 

口,它使用这个端口向服务器的FTP端口(默认21)发出连接请求,服务器接受请求后会建立一条控制链路,然后客户程序向服务器发出Port命

 

令,告诉服务器它的数据通道的端口打开了。当需要传送数据时,服务器端口通过20端口向客户端提供的随机端口发送连接请求,请求被接受之

 

后便开始传输数据,数据链路通道也就打开了, 在整个过程中,由于服务器在建立数据连接时主动发起连接,因此称为主动模式。

 

注:PORT模式的问题

 

由于客户端提供的端口号是随机的,如果客户端处于防火墙内部,由于防火墙大多会限制自问主机连接内部非开放端口,数据连接很可能被防火墙限制,造成无法建立数据连接,从而导致FTP无法正常工作

 

2、PASV模式:其连接过程是,在开始一个FTP连接时,客户端程序首先为自己随机分配一个TCP端口,它使用这个端口向服务器的FTP端口

 

(默认21)发出连接请求,服务器接受请求后会建立一条控制链路,然后客户端程序发出一Pasv命令,要求服务器采用PASV模式建立数据连

 

接,服务器便为自己随机分配一个数据通道端口,并将这个端口号告诉客户端程序。传送数据时,客户端程序采用另一个随机端口向服务器提供

 

的数据通道端口发送连接请求,请求被接受之后便开始传输数据,数据链路通道也就打开了。在这个方式中,由于服务器端在建立数据连接时,

 

被动接受客户端的连接请求,因此称为被动方式

 

注:被动方式,由于两个连接都由客户端发起,对于防火墙来说,一般不限制这样的访问,因此解决了防火墙内无法进行FTP的问题

 

 

附一例子:

用MFC 提供的CInternetSession、CFtpConnection进行FTP连接

 

 

 

如果在CFtpConnection *pFtpConn=test.GetFtpConnection(_T("127.0.0.1"),NULL,NULL,21,TRUE);中将最后的参数TRUE设为

 

默认(即FALSE),大多数情况下会连接错误,因为FALSE代表采用主动方式

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值