2024年6月2日发(作者:)
FTP工作模式
多数的TCP服务是使用单个的连接,一般是客户向服务器的一个端口发起连
接,然后使用这个连接进行通信。但是,FTP协议却有所不同,它使用双向的多个
连接(一个控制连接和一个或几个数据连接),并且FTP客户端使用的端口无法预
知。因此FTP有主动模式(Active Mode)和被动模式(Passive Mode)2种工作模
式。
在主动模式中,FTP客户端随机打开一个大于1024的端口X向服务器的21号
端口发起控制连接请求后,开放X+1号端口进行监听;FTP服务器接受请求并建立
控制连接会话。如果客户端在控制会话中发送数据连接请求,服务器在接收到命令
后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口X+1进行
数据传输,如图8-2所示。
FTP客户端
FTP客户端发送
连接请求
端口X
双方建立会话
连接
端口X
端口X
双方为此会话
连接
数据传输
端口X+1
数据传输完毕后
会话保持连接
端口X
会话终止双方连接断开
端口21
端口Y
端口21
端口21
端口21
防火墙
FTP服务器
图8-2 FTP主动模式
但是在客户端和服务器之间存在防火墙的话,这时使用主动模式会产生一个问
题,因为防火墙无法预知客户端用于建立数据连接的端口,可能会导致连接无法建
立,所以这种情况下应采用被动模式。
被动模式的控制连接和数据连接都是由FTP客户端发起的。如图8-2所示,首
先FTP客户端随机打开一个大于1024的端口X向服务器的21端口发起连接,同时
会打开X+1端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。
服务器收到命令后,会开放一个大于1024的端口Y进行监听,然后用PORT Y命
令通知客户端,自己的数据端口为Y。客户端收到命令后,会通过X+1号端口连接
服务器的端口Y,然后在两个端口之间进行数据传输。这样就能使防火墙知道用于
数据连接的端口号,而使数据连接得以建立。
FTP服务器端或客户端都可以设置这2个模式,但具体采用哪种模式,取决于
客户端的设置。
发布评论