P2p NAT遍历在对等协议(如bittorrent)中的工作原理。

P2p NAT遍历在对等协议(如bittorrent)中的工作原理。,p2p,nat,bittorrent,stun,dht,P2p,Nat,Bittorrent,Stun,Dht,我知道NAT穿越和晕眩,转身,冰和它的使用。我想知道这些是否在像bittorrent这样的对等文件共享应用程序中实现。跟踪器是否有助于NAT后面的对等方通过使用STUN或中继建立直接连接来相互通信。在分布式哈希表(DHT)的情况下,一个对等方将如何与NAT后面的另一个对等方通信?BitTorrent不需要连接到群中的任何特定成员,它不是两个特定端点想要相互通信的p2p聊天协议。它所关心的只是群的连接图具有足够高的连通度 换句话说,让NAT背后的客户机互相交谈是有点可取的,但这并不是为了实现这一目

我知道NAT穿越和晕眩,转身,冰和它的使用。我想知道这些是否在像bittorrent这样的对等文件共享应用程序中实现。跟踪器是否有助于NAT后面的对等方通过使用STUN或中继建立直接连接来相互通信。在分布式哈希表(DHT)的情况下,一个对等方将如何与NAT后面的另一个对等方通信?

BitTorrent不需要连接到群中的任何特定成员,它不是两个特定端点想要相互通信的p2p聊天协议。它所关心的只是群的连接图具有足够高的连通度

换句话说,让NAT背后的客户机互相交谈是有点可取的,但这并不是为了实现这一目标而花费大量资源,如流量转发。失败是一种选择

因此,它不使用sip/turn/etc

各种客户端使用以下方法的某种组合来改善批量传输连接的连接性:

  • ,或在应用程序运行期间与网关协商
  • 对于TCP,可以使用(传出连接)和(侦听+传出)套接字选项为所有要利用的连接使用相同的本地端口(也称为全锥NAT)
  • 类似地,对于UDP,应该结合使用单个套接字和/或等效API,通过单个端口多路传输所有应用程序级连接,而不是为每个对等方创建一个套接字
  • 主要是使用相互可到达的swarm成员来代替stun服务器
  • 可选的基于UDP的传输协议(),可与前面的几点结合使用。通常,使用udp更容易实现nat遍历
  • ,原则上允许客户端升级其连接,然后通过PEX/DHT谈论v6对等机
  • 提示用户执行手动端口转发

对于DHT,只使用前两点(网关协商和端口重用)。在一个请求-应答周期内尝试nat遍历的开销将大于100%,不值得这样做。

BitTorrent不需要连接到swarm中的任何特定成员,它不是两个特定端点想要彼此对话的p2p聊天协议。它所关心的只是群的连接图具有足够高的连通度

换句话说,让NAT背后的客户机互相交谈是有点可取的,但这并不是为了实现这一目标而花费大量资源,如流量转发。失败是一种选择

因此,它不使用sip/turn/etc

各种客户端使用以下方法的某种组合来改善批量传输连接的连接性:

  • ,或在应用程序运行期间与网关协商
  • 对于TCP,可以使用(传出连接)和(侦听+传出)套接字选项为所有要利用的连接使用相同的本地端口(也称为全锥NAT)
  • 类似地,对于UDP,应该结合使用单个套接字和/或等效API,通过单个端口多路传输所有应用程序级连接,而不是为每个对等方创建一个套接字
  • 主要是使用相互可到达的swarm成员来代替stun服务器
  • 可选的基于UDP的传输协议(),可与前面的几点结合使用。通常,使用udp更容易实现nat遍历
  • ,原则上允许客户端升级其连接,然后通过PEX/DHT谈论v6对等机
  • 提示用户执行手动端口转发

对于DHT,只使用前两点(网关协商和端口重用)。在单个请求-应答周期内尝试nat遍历的开销大于100%,不值得。

你知道libtorrent是否与TURN/STUN/ICE服务器兼容吗?@Gubatron问题尚不清楚。你的意思是说libtorrent是否可以作为一个stun服务器,或者它是否可以作为一个客户端来利用这些服务器进行nat遍历?你知道libtorrent是否与TURN/stun/ICE服务器兼容吗?@Gubatron问题尚不清楚。你的意思是说libtorrent是否可以充当stun服务器,或者它是否可以充当客户机来利用这些服务器进行nat遍历?