FTP的pasv和port方式:FTP与其他客户服务器应用程序的不同就是它在主机之间使用两条连接。一条连接用于数据传送,而另一条则用于控制信息(命令和响应)传送,将命令与数据传送分开使得FTP的效率更高。在整个交互的FTP会话中,控制连接始终是处于连接状态,数据连接则在每一次文件传送时先打开然后关闭,若传送多个文件,则数据连接打开和关闭多次(每次数据连接打开的端口不同)。
以下是使用port和pasv连接方式的简单流程:
Port方式:
1> Client打开一个短暂端口与Server的21端口进行三次握手,建立控制连接;
2> Client使用接入命令,Server对client的user和pass验证后,Client登录成功;
3> Client使用文件管理命令和数据格式化命令来定义数据传输的文件类型、传输方式和目录等信息;
4> Client向Server端发起port连接命令,并把client端的一个短暂端口号发给Server;
5> Server的20端口与Client的短暂端口进行三次握手,建立数据连接;
6> 传输数据;
7> 握手再见;
8> 使用QUIT命令请求关闭控制连接或者发请求打开另一个数据连接以传送另一个文件。
Pasv方式:
1> Client打开一个短暂端口与Server的21端口进行三次握手,建立控制连接;
2> Client使用接入命令,Server对client的user和pass验证后,Client登录成功;
3> Client使用文件管理命令和数据格式化命令来定义数据传输的文件类型、传输方式和目录等信息;
4> Client向Server端发起pasv连接命令,要求Server选择一个端口号,并在pasv连接命令的响应中将此端口号告诉Client;
5> Client使用短暂端口号与Server选择的端口号进行三次握手,建立数据连接;
6> 传输数据;
7> 握手再见;
8> 使用QUIT命令请求关闭控制连接或者发请求打开另一个数据连接以传送另一个文件。
对比:
port方式(主动连接方式)―――>client选择端口,等待server数据连接
pasv方式(被动连接方式)―――>server选择端口,等待client数据连接
“主动”和“被动”是相对于server而言的。
Port方式:
C(3146端口)-----?S(21端口) 控制通道
C(3147端口)
Pasv方式:
C(3256端口)-----?S(21端口) 控制通道
C(3257端口)-----?S(2381端口) 数据通道
1、detect的作用:获取TCP会话的状态,检测它是否合法,创建servermap表项,打开数据端口3147,以后过来的包不用查acl,即可通过Aspf创建的隧道进行通信。detect的作用:控制通道协商出数据通道的目的端口是2381,detect打开此端口。创建servermap表项,以后过来的包不用查acl,即可通过Aspf创建的隧道进行通信。通过上面的概念可以知道,需要开启detect ftp来解决这个问题,IE使用的是被动模式。
2、IE使用的是被动模式,而detect ftp不会检测2121端口,所以使用IE连接ftp服务器无法看到目录。