FTP
FTP的主动模式(Active Mode)和被动模式(Passive Mode)的主要区别在于数据连接的建立方式,这涉及到客户端和服务器之间如何相互连接以传输数据。以下是两种模式的详细比较:
主动模式(Active Mode)
- 连接建立:客户端首先连接到服务器的21端口建立控制连接。
- 数据端口:客户端在本地选择一个随机的非特权端口(通常大于1024)并向服务器发送PORT命令,告诉服务器它正在监听这个端口。
- 服务器连接:服务器收到PORT命令后,会尝试从其20端口连接到客户端指定的端口进行数据传输。
- 适用场景:适用于客户端位于开放网络环境,没有防火墙或NAT设备限制入站连接的情况。
被动模式(Passive Mode)
- 连接建立:与主动模式一样,客户端首先连接到服务器的21端口建立控制连接。
- 服务器打开端口:客户端发送PASV命令,服务器收到后会随机选择一个高端口(通常是大于1024的端口)并告诉客户端。
- 客户端连接:客户端然后主动连接到服务器在PASV响应中指定的端口,以建立数据连接进行数据传输。
- 适用场景:适用于客户端位于防火墙或NAT之后,服务器无法直接发起到客户端的数据连接的情况。
主要区别
- 数据连接的发起方:在主动模式中,服务器发起到客户端的数据连接;在被动模式中,客户端发起到服务器的数据连接。
- 网络限制:主动模式可能受到客户端防火墙的限制,因为服务器需要主动连接到客户端的随机端口,这可能被阻止。被动模式通过客户端主动连接到服务器的随机端口来避免这个问题。
- 配置复杂性:被动模式通常需要服务器配置一个端口范围,以便在防火墙后面使用,而主动模式通常不需要这样的配置。
在实际应用中,由于许多客户端位于防火墙或NAT之后,被动模式更为常用。然而,某些服务器或网络环境可能对被动模式的端口范围有限制,因此可能需要适当配置以确保FTP连接的成功建立。
在FTP的被动模式下,客户端从一个随机的高端口(通常是大于1024的端口)发起连接到服务器的21端口(FTP命令端口),然后客户端会进入监听状态,等待服务器端的连接请求。服务器在收到客户端的PASV命令后,会随机选择一个高端口(这个端口通常是大于1024的,并且可以在一定范围内,如39000-40000)来监听客户端的连接。
被动模式下,客户端的端口是随机选择的,并且是由客户端主动发起到服务器指定端口的连接,而不是服务器发起到客户端的连接。这种模式通常用于客户端位于防火墙或NAT之后的情况,因为这些网络设备可能会阻止未经请求的入站连接。
至于是否会被防火墙拦截,这取决于防火墙的配置。如果防火墙规则正确设置以允许从任何端口到服务器指定的被动模式端口范围(如39000-40000)的流量,那么客户端的连接请求通常不会被拦截。管理员需要确保这些端口在服务器的防火墙和任何网络边界设备上都已放行。
例如,如果服务器配置了被动模式端口范围为39000-40000,那么防火墙规则应该允许从任何外部端口到服务器的39000-40000端口的入站连接。这样,即使客户端的端口是随机的,只要服务器端的端口范围被允许,连接就可以成功建立。
总的来说,被动模式FTP的端口设置需要在服务器端进行配置,并且在相关的网络设备上进行适当的防火墙规则设置,以确保数据传输的顺利进行。
那为什么要用这么多端口 大家都21端口通信不行吗
FTP协议使用多个端口的原因主要是因为它的工作方式。FTP协议在传输文件时,需要建立两个独立的TCP连接:一个用于控制连接(命令连接),另一个用于数据传输。这两个连接分别使用不同的端口,以便于管理和传输不同类型的数据。
-
控制连接:这个连接负责传输FTP命令和响应,比如用户登录信息、文件列表请求等。控制连接通常使用标准的FTP端口,即21端口。
-
数据传输:文件传输本身是通过另一个TCP连接进行的,这个连接可以是主动模式或被动模式:
- 主动模式:客户端会随机打开一个高端口(通常是大于1024的端口),然后告诉服务器它正在监听这个端口。服务器随后尝试从其20端口连接到客户端指定的端口进行数据传输。
- 被动模式:服务器会随机打开一个高端口(通常在39000-40000范围内),并告诉客户端连接到这个端口进行数据传输。客户端随后主动连接到服务器的这个端口。
使用多个端口的原因包括:
-
分离控制和数据:将命令和数据传输分开,可以提高安全性和灵活性。例如,某些防火墙可能允许命令端口(21端口)的流量,但限制数据端口的流量,被动模式通过使用高端口进行数据传输,可以绕过这些限制。
-
并行传输:在某些FTP应用中,可能需要同时传输多个文件或数据流。使用不同的端口可以允许多个数据连接同时进行,从而提高效率。
-
防火墙和NAT兼容性:许多客户端位于防火墙或NAT之后,这可能会阻止未经请求的入站连接。被动模式允许客户端主动发起到服务器的连接,从而避免了这个问题。
-
端口复用:在某些情况下,服务器可能需要同时为多个用户提供服务。通过为每个数据传输会话分配不同的端口,服务器可以同时处理多个并发的FTP会话。
总之,虽然使用单一端口(如21端口)进行所有通信在理论上是可能的,但实际应用中,由于性能、安全性和网络环境的考虑,FTP协议选择了使用多个端口来满足不同的需求。
标签:FTP,被动模式,端口,服务器,连接,客户端 From: https://www.cnblogs.com/firsthelloworld/p/18410000