The idea is that two different machines (behind two different NATs) connect to public-server.
And they try to create TCP connection with such public server... Then possible the magic can happens during proxing data stream! Change source and dest address on whole tcp/ip stack during this session.
The goal - to exclude this third part as a proxy from further communication...
First you need a server to which Peer will send a data or something for letting it know that the server needs to send an syn-ack to it.
Then first Peer A send a packet to Peer B's address with low TTL value so that it is dropped in the middle and doesn't reach to B's NAT. It will keep sending this packet until a packet form the server reaches it with syn-ack containing source address of B's (source faking). And A will do the handshaking with the server but A will think he is doing the handshaking with B.
Exactly same thing happens with B. B will handshake with server but will think it is done with A. After the handshaking is complete on both end data transfer begins with between A and B as P2P connection.
This is source faking as server is handshaking with both peers pretending one of the peers. This is how both peers NAT is opened to each other.