This article should only give you a little introduction to the hole punching process and not a complete composition of all technical details.
First I want to show you why peer to peer (P2P) networks are very important for many Internet applications.
One of the most important P2P applications is Skype, originally named “Sky peer-to-peer”, but many other applications like chats, VoIP or multiplayer games need fast, direct connections between peers. But for most Internet users direct connections are not possible because their IP is hidden by a NAT router. Routers use NAT to provide all users on a LAN with an Internet connection using only one public IP address. Such a router acts like a firewall because only the public IP is reachable from the Internet. If a user behind a NAT router wants to be accessible from the Internet, the router has to be manually configured by adding a port forwarding rule.