oh something i remembered about having a master server, its actually part of a NAT (network address translation, most people are connected to the internet via lan through a router) traversal technique. if nilllzz wants to make the connection process fool-proof later on a server for managing friends and communicating with them can also be used for hole punching. the wikipedia summary of hole punching
Hole punching is a
computer networking technique for establishing communications between two parties in separate organizations who are both behind restrictive
firewalls. Used for applications such as online gaming,
P2P and
VoIP, both clients establish a connection with an unrestricted third-party server that uncovers external and internal address information for them. Since each client initiated the request to the server, the server knows their IP addresses and port numbers assigned for that session, which it shares one to the other. Having valid port numbers causes the firewalls to accept the incoming packets from each side.
ICMP hole punching,
UDP hole punching and
TCP hole punching respectively use
Internet Control Message,
User Datagram and
Transmission Control Protocols. Using TCP nefarious hole punching, it's possible to send compressed SYN packets through into a common ACK path. Numerous software does this.
basically what its doing is both players connect to the server, the server then has an open port, and it tells the clients eachothers addresses and ports, client sends data through that instead of just their external ip and the packets make it through the NAT, no hamachi no port forwards. its actually how hamachi works. their word for the technique is 'direct tunnel' but its the same thing