gpt4 book ai didi

FTP数据连接重用

转载 作者:行者123 更新时间:2023-12-04 23:19:31 24 4
gpt4 key购买 nike

我正在开发一个 FTP 客户端,我正在尝试了解数据连接的工作流程。

据我了解,在您退出之前,初始 ( command ) 连接是永久的。但是,我不确定数据连接 - 它是否按命令重新启动?所以你调用PORT ...PASV ,获得第二个连接,执行 LIST ,得到结果,连接关闭,重新开始?

另外,是否需要调用PASV (或 PORT ... )在每个连接关闭后再次?似乎当我尝试使用被动连接测试某些东西时,在第一个命令返回结果并关闭数据连接后,我无法重新连接到同一个端口。我可以继续调用PASV -> 数据连接 -> 运行命令 -> 获取结果 -> 数据连接关闭 -> PASV ,但它似乎不是它的运行方式?

此外,如果有人在 FTP 上有比 RFC 更简洁的好 Material ,我真的很感激。

最佳答案

您每次都必须打开一个新连接。这只是连接的关闭,您(或服务器)如​​何判断传输已完成(至少在常见的“流模式”中)。
您甚至不能重复使用本地/远程端口号组合,因为当 TCP 连接关闭时,它会进入 TIME_WAIT 模式,并且端口号组合在一段时间内无法使用。因此,对于两个立即连续的传输,无论如何您都必须使用不同的端口号组合。
引用 RFC 959 ,第 3.3 节。数据管理:

Reuse of the Data Connection: When using the stream mode of datatransfer the end of the file must be indicated by closing theconnection. This causes a problem if multiple files are to betransfered in the session, due to need for TCP to hold theconnection record for a time out period to guarantee the reliablecommunication. Thus the connection can not be reopened at once.

There are two solutions to this problem. The first is tonegotiate a non-default port. The second is to use anothertransfer mode.

A comment on transfer modes. The stream transfer mode isinherently unreliable, since one can not determine if theconnection closed prematurely or not. The other transfer modes(Block, Compressed) do not close the connection to indicate theend of file. They have enough FTP encoding that the dataconnection can be parsed to determine the end of the file.Thus using these modes one can leave the data connection openfor multiple file transfers.



也可以看看:
  • Why does FTP passive mode require a port range as opposed to only one port?
  • How many data channel ports do I need for an FTPS server running behind NAT?
  • 关于FTP数据连接重用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31560701/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com