STUN (session traversal utilities for NAT)
A client, typically inside a private network, sends a binding request to a STUN server on the public internet. The STUN server responds with a success response that contains the IP address and port number of the client, as observed from the server's perspective.
STUN messages are UDP, reliability is achieved by application-controlled retransmission of the STUN requests.
When a client has evaluated its external address, it can use this as a candidate for communicating with peers by sharing the external NAT address rather than the private address.
If both peers are located in different private networks, each behind a NAT, the peers must coordinate to determine the best communication path. ICE protocol provides a structured mechanism to determine the optimal communication path between two peers. SIP extensions are defined to enable the use of ICE when setting up a cool between two hosts.