搜索文章:

首页  |  Java技术  |  Asp.net  |  Asp编程  |  VC/C++  |  Delphi  |  VB编程

俗人俗语谈技术之FTP技术

 ftp(file transfer protocol)的缩写,即文件传输协议。其是tcp/ip协议族中的一种具体应用,它工作在osi模型的第七层,即应用层上,其使用tcp协议传输,即ftp传输的所有文件都是通过“三次握手”实现,也就是说当客户端与服务器端之间的数据包传输,一旦出现丢包现象,会重新传输,以保证数据的可靠。

 ftp协议要使用两个tcp连接传送数据,一个是命令连接,用来在ftp客户端与服务器之间传递命令;另一个是数据连接,用来上传或下载数据。这就直接导致ftp需要2个端口,一个端口用于控制连接,即21端口,发送指令给服务器以及等待服务器响应;另一个端口是数据传输端口,端口号为20,是用来建立数据传输通道。

 ftp的连接模式有两种,port(主动模式)和pasv(被动模式),主动模式的连接过程是:客户端动态的选择一个端口(这个端口号一定是1024以上的,因为1024以前的端口都已经预先被定义好)向服务器端的ftp端口(默认是21)发送连接请求,服务器接受连接,建立一个命令连接。当需要传送数据时或者列出服务器的文件列表时(通常使用ls或dir命令),客户端通过命令连接告诉服务器(使用port命令):“我已经打开了xx端口,请你过来连接”。于是服务器使用20端口向客户端的xx端口发送连接请求,建立一条数据连接来传送数据。

 被动模式:客户端首先使用与主动连接模式相同的方法与服务器建立命令连接。当需要传送数据时,客户端通过命令连接告诉服务器(使用pasv命令)“我要连接你的xx端口,请问是否空闲”,如果恰好该端口空闲,服务器会告诉客户端:“你请求的端口空闲,可以建立连接(ack确认信息)”,否则服务器会说“该端口已经占用,请换个端口(unack信息)”。如果客户端得到的是空闲的提示,就会利用该端口建立连接,否则就换个端口重新尝试,这也就是所谓的连接建立的协商过程。

 区分主动模式和被动模式的主要目的是:并不是所有的ftp服务都支持这两种连接模式,例如:微软自带的ftp命令客户端就不支持被动模式,如果设置错了客户将无法连接。

()

相关文章:
© 2006   www.java-asp.net