TCP 主动模式和被动模式的区别

连接FTP服务器时。若没有指定连接模式,FTP将根据操作系统使用默认的连接模式。

基础知识:

  FTP只通过TCP连接,没有用于FTP的UDP组件.FTP不同于其他服务的是它使用了两个端口, 一个数据端口和一个命令端口(或称为控制端口)。通常21端口是命令端口,20端口是数据端口。当混入主动/被动模式的概念时,数据端口就有可能不是20了。

主动模式:

图示:

在真实连接过程中,1026与1027端口是随机的,并不一定是这两个。

N = 1026

1、 客户端N(N>1023)端口 服务器 21端口 发出一个请求。

2、服务器 21端口客户端 N 端口 响应请求:完成控制端口的连接。(在这个过程中服务器得到了客户端请求的端口号)。

3、服务端20端口客户端N+1端口 发送请求。

4、客户端N+1端口 服务端20端口 响应请求。完成数据端口连接。

 在第1步中,客户端的命令端口与FTP服务器的命令端口建立连接,并发送命令“PORT 1027”。然后在第2步中,FTP服务器给客户端的命令端口返回一个"ACK"。在第3步中,FTP服务器发起一个从它自己的数据端口(20)到客户端先前指定的数据端口(1027)的连接,最后客户端在第4步中给服务器端返回一个"ACK"。

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

被动模式:

图示:

2024端口在实际过程中也是随机的。

N = 1026,F=2024

1、 客户端N(N>1023)端口 服务器 21端口 发出一个请求。

2、服务器 21端口客户端 N 端口 响应请求:完成控制端口的连接。(此时客户端请求服务端监听F(F>1023)端口)。

3、客户端N+1端口服务端F端口 发送请求。

4、服务端F端口 客户端N+1端口 响应请求。完成数据端口连接。

在第1步中,客户端的命令端口与服务器的命令端口建立连接,并发送命令“PASV”。然后在第2步中,服务器返回命令"PORT 2024",告诉客户端(服务器)用哪个端口侦听数据连接。在第3步中,客户端初始化一个从自己的数据端口到服务器端指定的数据端口的数据连接。最后服务器在第4 步中给客户端的数据端口返回一个"ACK"响应。

总结



  主动FTP:
     命令连接:客户端 >1023端口 -> 服务器 21端口
     数据连接:客户端 >1023端口 <- 服务器 20端口 

  被动FTP:
     命令连接:客户端 >1023端口 -> 服务器 21端口
     数据连接:客户端 >1023端口 -> 服务器 >1023端口 

  下面是主动与被动FTP优缺点的简要总结: 

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

使用主动模式就得打开客户端 >1023 的所有端口防火墙。

使用被动模式就得打开服务器端 >1023 的所有端口防火墙。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SUNbrightness

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值