It is quite complicated and interesting. I'm sure I have some details, but the overview is as follows:
Programs can already talk to each other through the Joel server so that they can exchange information with each other and with the Joel server. In addition, Joel has its own external IP addresses, and they provide information about their internal IP addresses.
They decide to try this hole punch technique. Computer A initiates a TCP connection with computer B using an external IP address B. It will not pass, but what it does tells the router that it needs to allow incoming packets from B on this port.
B , A, /ip, , B ( - , - , ).
B , B A IP, A B .
, , , , TCP-, NAT TCP . , .
-Adam