1)
FTP是仅基于TCP的服务。FTP使用2个端口,一个数据端口【20】和一个命令端口【21】(也可叫做控制端口)
2)
主动FTP
a)
客户端从一个任意的非特权端口N(N大于等于1024)连接到FTP服务器的命令端口【21】;
b)
客户端开始监听客户端的端口N+1,并发送FTP命令“port N+1”到FTP服务器。
c)
服务器从自己的数据端口【20】连接到客户端指定的数据端口(N+1)。
注:
1.
主要问题实际上在于客户端。
2.
FTP的客户端并没有实际建立一个到服务器数据端口的连接,它只是简单的告诉服务器自己监听的端口号,服务器再回来连接客户端这个指定的端口。
3.
对于客户端的防火墙来说,这是从外部系统建立到内部客户端的连接。
3)
被动FTP(PASV)
a)
命令连接和数据连接都由客户端,可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。
b)
开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N 大于等于 1024和N+1)。
c)
第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。
d)
服务器会开启一个任意的非特权端口(P 大于等于1024),并发送PORT P命令给客户端。客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
4)
范例
主动FTP:
命令连接:客户端 >1023端口 -> 服务器 21端口
数据连接:客户端 >1023端口 <- 服务器 20端口
被动FTP:
命令连接:客户端 >1023端口 -> 服务器 21端口
数据连接:客户端 >1023端口 -> 服务器 >1023端口
5)
主动和被动FTP的优缺点:
a)
主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。
b)
被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
加载中,请稍候......