I would post this in the developer board, but I am stuck here. I would like to know the technique that the official bitcoin client uses to handle NAT traversal and bootstrapping of peers.
The client works without inbound connections, though performance is higher when an incoming port is opened or by enabling UPnP.
UPnP may, or may not be enabled as a default, depending on which version of the GUI software you are using.
When the client does not yet know of any peers (e.g., during the very first time start up) or it cannot contact the peers it does know about the client will then bootstrap to find peers using IRC (or, if the client uses -dnsseed, a DNS lookup).