这个想法是两个不同的机器(在两个不同的NAT后面)连接到公共服务器。
他们尝试与这样的公共服务器建立TCP连接...... 然后可能在代理数据流期间发生魔术! 在此会话期间更改整个tcp / ip堆栈上的源和目标地址。
目标 - 将第三部分作为代理从进一步的沟通中排除......
答案 0 :(得分:3)
首先,您需要Peer将向其发送数据的服务器,以便让它知道服务器需要向其发送syn-ack。
然后,第一个Peer A将数据包发送到具有低TTL值的对等B地址,以便它在中间被丢弃并且不会到达B的NAT。它将继续发送此数据包,直到服务器的数据包到达它,同时包含来自B&#39的源地址的syn-ack(源伪造)。 A将与服务器进行握手,但A会认为他正在与B进行握手。
完全相同的事情发生在B.B将与服务器握手,但会认为它是用A完成的。在两端握手完成后,数据传输开始于A和B之间作为P2P连接。
这是源假装,因为服务器正在握手,两个对等方都假装其中一个对等方。这就是两个对等NAT相互打开的方式。