在 bittorrent 的上下文中,http 和 udp 跟踪器有什么区别?HTTP 是应用层协议,而 UDP 是传输层协议,因此这两个概念似乎不重叠。我发现本文但它没有说明为什么 UDP 比 HTTP 更快,这没有意义,因为 HTTP 可能发生在 UDP 上。
答案1
据我所知,UDP 公告要求上传一个数据包并下载一个数据包。无需协商或建立持久连接。服务器不必记住公告来自哪个 ip:port,只需在短暂的时间内决定要回答什么即可。
但是,HTTP 公告是通过 TCP 连接进行的。这意味着需要协商、使用然后拆除连接。所有这些步骤都需要两个以上的数据包: - 协商:一个 SYN up、一个 SYN-ACK down 和一个 ACK up。 - 使用。如果我们幸运的话,HTTP 请求可以放入单个上游数据包中。然后,服务器会回复一个 ACK 数据包,然后在单独的数据包中发送其响应。然后,客户端也会回复一个 ACK 数据包。当然,由于不是客户端而是操作系统决定如何将 TCP 流拆分成数据包,因此请求和答案都可能被分割成多个数据包,每个数据包都需要一个 ACK 作为响应。此外,MTU 超限等其他复杂情况可能会迫使服务器和客户端重新发送这些分割成较小尺寸的数据包。 - 拆除连接也需要三个数据包:FIN、FIN-ACK 和 ACK。
因此,HTTP 公告至少需要 10 个数据包,但可能不止这些,如果网络决定丢弃一个数据包,还需要等待一段时间。在这段时间内,服务器(以及客户端,但这对客户端来说并不重要,它不是每秒需要处理上千个公告的客户端)必须将连接的详细信息保存在 RAM 中。对于单个客户端发出的公告数量而言,差异可以忽略不计(即使是轻度浏览也会产生更多流量),但在服务器端,它加起来的数量意味着 5 倍的减少意味着很多。