卖鞋的网站建设思路,flash网站建设技术,商城入口,南京市英语网站建设起初#xff0c;FTP并不是应用于IP网络上的协议#xff0c;而是ARPANEt网络中计算机间的文件传输协议#xff0c; ARPANET是美国国防部组建的老网络#xff0c;于1960-1980年使用。在那时#xff0c; FTP的主要功能是在主机间高速可靠地传输文件。目前FTP仍然保持其可靠性…起初FTP并不是应用于IP网络上的协议而是ARPANEt网络中计算机间的文件传输协议 ARPANET是美国国防部组建的老网络于1960-1980年使用。在那时 FTP的主要功能是在主机间高速可靠地传输文件。目前FTP仍然保持其可靠性即使在今天它还允许文件远程存取。这使得用户可以在某个系统上工作而将文件存贮在别的系统。例如如果某用户运行Web服务器需要从远程主机上取得HTML文件和CGI程序在本机上工作他需要从远程存储站点获取文件(远程站点也需安装Web服务器)。当用户完成工作后可使用FTP将文件传回到Web服务器。采用这种方法用户无需使用Telnet登录到远程主机进行工作这样就使Web服务器的更新工作变得如此的轻松。
FTP是TCP/IP的一种具体应用它工作在OSI模型的第七层TCP模型的第四层上即应用层使用TCP传输而不是UDP这样FTP客户在和服务器建立连接前就要经过一个被广为熟知的三次握手的过程它带来的意义在于客户与服务器之间的连接是可靠的而且是面向连接为数据的传输提供了可靠的保证。
下面让我们来看看一个FTP客户在和服务器连接是怎么样的一个过程以标准的FTP端口号为例。
首先FTP并不像HTTP协议那样只需要一个端口作为连接HTTP的默认端口是80FTP的默认端口是21FTP需要2个端口一个端口是作为控制连接端口,也就是21这个端口用于发送指令给服务器以及等待服务器响应另一个端口是数据传输端口,端口号为20仅PORT模式是用来建立数据传输通道的主要有3个作用
从客户向服务器发送一个文件。从服务器向客户发送一个文件。从服务器向客户发送文件或目录列表。
其次FTP的连接模式有两种PORT和PASV。PORT模式是一个主动模式PASV是被动模式这里都是相对于服务器而言的。为了让大家清楚的认识这两种模式分别举例说明。
PORT模式
当FTP客户以PORT模式连接服务器时他动态的选择一个端口号本次试验是6015连接服务器的21端口注意这个端口号一定是1024以上的因为1024以前的端口都已经预先被定义好被一些典型的服务使用当然有的还没使用保留给以后会用到这些端口的资源服务。当经过TCP的三次握手后连接控制信道被建立如图1和图2。
图1FTP客户使用FTP命令建立于服务器的连接 图2用netstat命令查看控制信道被建立在客户机的6015和服务器的20端口
现在用户要列出服务器上的目录结构(使用ls或dir命令)那么首先就要建立一个数据通道因为只有数据通道才能传输目录和文件列表此时用户会发出PORT指令告诉服务器连接自己的什么端口来建立一条数据通道这个命令由控制信道发送给服务器当服务器接到这一指令时服务器会使用20端口连接用户在PORT指令中指定的端口号用以发送目录的列表如图3。
图3ls命令是一个交互命令它会首先与服务器建立一个数据传输通道。经验证本次试验客户机使用6044端口
当完成这一操作时FTP客户也许要下载一个文件那么就会发出get指令请注意这时客户会再次发送PORT指令告诉服务器连接他的哪个新端口你可以先用netstat -na这个命令验证上一次使用的6044已经处于TIME_WAIT状态(如图4)。
图4使用netstat命令验证上一次使用ls命令建立的数据传输通道已经关闭
当这个新的数据传输通道建立后(在微软的系统中客户端通常会使用连续的端口也就是说这一次客户端会用6045这个端口)就开始了文件传输的工作。
PASV模式
然而当FTP客户以PASV模式连接服务器时情况就有些不同了。在初始化连接这个过程即连接服务器这个过程和PORT模式是一样的不同的是当FTP客户发送ls、dir、get等这些要求数据返回的命令时他不向服务器发送PORT指令而是发送PASV指令在这个指令中用户告诉服务器自己要连接服务器的某一个端口如果这个服务器上的这个端口是空闲的可用的那么服务器会返回ACK的确认信息之后数据传输通道被建立并返回用户所要的信息根据用户发送的指令如ls、dir、get等如果服务器的这个端口被另一个资源所使用那么服务器返回UNACK的信息那么这时FTP客户会再次发送PASV命令这也就是所谓的连接建立的协商过程。为了验证这个过程我们不得不借助CUTEFTP Pro这个大家经常使用的FTP客户端软件因为微软自带的FTP命令客户端不支持PASV模式。虽然你可以使用QUOTE PASV这个命令强制使用PASV模式但是当你用ls命令列出服务器目录列表你会发现它还是使用PORT方式来连接服务器的。现在我们使用CUTEFTP Pro以PASV模式连接服务器如图5。
图5使用CUTEFTP Pro以PASV模式连接服务器
请注意连接LOG里有这样几句话
COMMAND: PASV
227 Entering Passive Mode (127,0,0,1,26,108)
COMMAND: LIST
STATUS: Connecting ftp data socket 127.0.0.1: 6764...
125 Data connection already open; Transfer starting.
226 Transfer complete.其中227 Entering Passive Mode (127,0,0,1,26,80). 代表客户机使用PASV模式连接服务器的26x2561086764端口。当然服务器要支持这种模式
125 Data connection already open; Transfer starting.说明服务器的这个端口可用返回ACK信息。
再让我们看看用CUTEFTP Pro以PORT模式连接服务器的情况。其中在LOG里有这样的记录
COMMAND: PORT 127,0,0,1,28,37
200 PORT command successful.
COMMAND: LIST
150 Opening ASCII mode data connection for /bin/ls.
STATUS: Accepting connection: 127.0.0.1:20.
226 Transfer complete.
STATUS: Transfer complete.
其中PORT 127,0,0,1,28,37告诉服务器当收到这个PORT指令后连接FTP客户的28x256377205这个端口。 Accepting connection: 127.0.0.1:20表示服务器接到指令后用20端口连接7205端口而且被FTP客户接受。
比较分析
在这两个例子中请注意: PORT模式建立数据传输通道是由服务器端发起的服务器使用20端口连接客户端的某一个大于1024的端口在PASV模式中数据传输的通道的建立是由FTP客户端发起的他使用一个大于1024的端口连接服务器的1024以上的某一个端口。如果从C/S模型这个角度来说PORT对于服务器来说是OUTBOUND而PASV模式对于服务器是INBOUND这一点请特别注意尤其是在使用防火墙的企业里比如使用微软的ISA Server 2000发布一个FTP服务器这一点非常关键如果设置错了那么客户将无法连接。
最后请注意在FTP客户连接服务器的整个过程中控制信道是一直保持连接的而数据传输通道是临时建立的。
在本文中把重点放到了FTP的连接模式没有涉及FTP的其他内容比如FTP的文件类型Type格式控制Format control以及传输方式Transmission mode等。不过这些规范大家可能不需要花费过多的时间去了解因为现在流行的FTP客户端都可以自动的选择正确的模式来处理对于FTP服务器端通常也都做了一些限制如下
类型A S C I I或图像。 格式控制只允许非打印。 结构只允许文件结构。 传输方式只允许流方式
至于这些内容限于篇幅在这里就不想再介绍了。希望这篇文章能对大家有些帮助