2011-09-07 74 views
0

鉴于这种简单的2步伪代码: 1.文件请求列出 2.下载各个文件使用FTP进行文件传输以使多个连接打开关闭的代码是否可接受?

其中每一步都需要打开一个新的连接。对于第2步,每个文件还需要下载一个新的连接。我认为这样编码的原因是,遇到任何FTP异常(例如421,连接关闭),其他文件的下载将通过(除非当然步骤1遇到错误,因此没有后续步骤2将会发生)。

我是新来的FTP,所以这是一个让我烦恼不少的东西。

回答

1

是的,这是完全正常的。 FTP是一个两连接协议。一个命令流(get,put,dir,cd等等)和一个数据流(实际的文件来回发送)。命令流在连接期间保持打开(并被视为“连接”)。数据流仅在发送/检索数据时存在,并且将在典型的FTP会话中多次打开/关闭。

数据连接的来源取决于您是否使用被动ftp的主动。对于活动连接,ftp服务器将启动数据连接返回到客户端。这是通过客户端完成“do a'dir'命令并将其结果发送回IP x.x.x.x,端口yyy”来完成的。被动以相反的方式工作。客户端启动到服务器的所有连接,并基本上做dir。 “给我一个目录列表”并找回“好的,目录数据可在IP x.x.x.x,端口YYY - 来获取”。

在协议级,客户端将发送PORT x.x.x.x.y.z通知服务器在X.X.X.X端口打开活动模式的数据信道连接返回到客户端(Y×256)+ Z。客户发送PASV请求被动模式;在这种情况下,服务器的响应包含x.x.x.x.y.z,告诉客户端打开ip连接和端口