通过 torrent 应用程序上传

通过 torrent 应用程序上传

我曾经问过上传文件实际上是如何工作的。根据收到的回复,我确信上传文件总是包含一个从私有网络到外部的启动过程,就像下载时一样,但有一个区别。使用 POST 命令而不是 GET 命令。

但是,假设我已启动 torrent 客户端,并假设我已完成文件下载。我现在要为文件做种并与其他人共享。

1)这难道不意味着“上传”吗?这会使上述情况无效吗?

2) 如果这是“上传”,那么它难道不是“从外部到我的私有网络打开一个/多个连接,因此,torrent 客户端需要端口转发”,而不是我们提出的请求?

  In short, who launches the connection during upload process? 

答案1

播种种子不再需要转发端口。有许多先进的技术可以“绕过”NAT,例如NAT 打洞当然,其中大部分都需要一个完全连接的第三方来进行相互协商。

话虽如此,在最简单的情况下,通过转发端口,远端就会启动连接。

您还需要记住,上传和下载只是一个角度问题。这当然与 NAT 等完全无关。如果您从服务器下载某些内容,服务器也会向您上传某些内容。TCP 连接是双向工作的,本地端和远程端都会发送和接收数据。

答案2

无论使用何种技术,上传的工作方式如下。

首先,你有一个客户端和一个服务器。服务器只是监听任何传入信号。

客户端连接到服务器说:“嗨,我想使用你。”服务器响应:“当然,继续,并启动到该端口的连接”(客户端现在成为发送方部分,而不是服务器的初始工作)。

客户端向服务器发起一个命令,表明它想要上传任何内容,比如……一个文件。

服务器接受并准备接收文件。

客户端现在开始像 TCP/IP 那样发送文件:发送 1 个数据包,等待服务器响应已收到,然后发送接下来的 2 个数据包,等待响应,等等。此过程持续进行,直到文件传输完毕。从客户端的角度来看,此阶段为上传,从服务器的角度来看,此阶段为下载。

在 torrent 中,它的工作方式相同。您首先从不同的客户端下载文件,这些客户端会将数据上传给您,然后您开始将数据上传到其他客户端,然后他们再从您那里下载。

torrent 中的服务器是一台机器,它会跟踪谁拥有文件的哪些部分以及某人可以从哪里下载。它不会告诉客户端,你可以从我这里下载,而是说,你可以从客户端 x 下载,就像它会将其他客户端引荐到你的客户端一样。

请注意,使用 torrent 时,您不是在下载完成后才开始上传,而是在您有内容可以提供时立即开始上传。假设您下载了 10kb 的 1mb 文件,那么其他人已经可以从您那里下载这 10kb 了。

相关内容