FTP 连接
FTP 连接有两种:控制连接和数据连接。
数据连接模式
数据连接模式分为主动模式和被动模式,默认是被动模式。主动模式就是服务端主动发起连接;被动模式就是客户端主动发起连接,服务端处于被动状态。
主动模式(Active ['æktiv] Mode)
客户端仍然 1024 以后的端口,服务端使用 20 端口。
可以看出客户端要传送或接收之前会发送一个 PORT 命令,表示使用主动模式,后面有逗号隔开的 6 个数字,前四个数字表示客户端 IP,后两个数字表示客户端端口号(计算方法为:19*256+89)。
服务端收到 PORT 命令后会回应一个 200,表示主动模式 OK 了。
模式确定后,服务端就开始向客户端发起连接。
被动模式(passive ['pæsiv] Mode)
客户端、服务端都使用 1024 以后的端口。
可以看出客户端要传送或接收之前会发送一个 PASV 命令,没有附带参数,表示使用被动模式。
服务端收到后会回应一个 227,用以响应 PASV 命令,后面有逗号隔开的 6 个数字,前四个数字表示服务端 IP,后两个数字表示服务端端口号(计算方法为:128*256+233)。
模式确定后,客户端就开始向服务端发起连接。
主动被动模式的优缺点
主动模式是服务端用 20 端口去连客户端 1024 以后的端口,如果客户端防火墙禁掉了这些高位端口,服务端是连不上去的。
被动模式是客户端用 1024 以后的端口去连服务端 1024 以后的端口,如果服务端防火墙禁掉了这些高位端口,客户端是连不上去的。
有人问 IIS 支持主动模式还是被动模式?
其实你用主动和被动模式都可以连接 IIS 的 FTP,问题不在于 IIS 支不支持,而在于防火墙,一般设置来说:防火墙对出去的端口不怎么严,对进来的端口有严格控制,这就得看看使用主动还是被动了。