Simple Traversal of UDP Through NATs and TCP too (STUNT).
This C# library implement a lightweight protocol that allows applications running behind a NAT to determine external IP and port-binding properties, packet filtering rules and various timeouts associated with TCP connections through the NAT.
Knowing these parameters allows applications to establish TCP sessions between two NAT'ed hosts. As a result P2P and other applications can work through existing NAT infrastructure without sacrificing the benefits of TCP. It is a port of the original STUNT library that allow NAT traversal.
More information at: http://nutss.gforge.cis.cornell.edu/stunt.php