Specifications

Page 80
Configure UPnP
The following are issues that can arise when using NAT:
Some network applications assume the IP address and port that the
client has been assigned are global routable values that can be
used on the Internet directly. Often, this is not the case as the client
has been assigned a private IP address that can only be used on the
LAN.
Other network applications send requests using a socket on a port
“A” and expect to receive the reply from a different listening socket
on port “Z”. When the NAT router creates a port mapping for port
“A”, it won't know that it has to match it with the reply packets
addressed to port “Z”.
A number of network protocols assume they will always be able to
use certain globally routable well-known ports. However there are
several clients in the LAN and at any given time, only one client can
be allowed to use a specific well-known port. In the meantime, the
other clients will not be able to run any web service requiring the
same well-known port.
NAT traversal techniques have been developed as a workaround to
allow network-aware applications to discover that they are behind a
NAT-enabled device, to learn the external, globally-routable IP address
and to configure port mappings to automatically forward packets from
the external port of the NAT to the internal port used by the application
– without the user having to manually configure port mapping.
NAT traversal relies on the discovery and control protocols that are part
of the Universal Plug and Play (UPnP) architecture. The UPnP
specification is based on TCP/IP and Internet protocols that let devices
discover the presence and services offered by other UPnP devices in
the network. It also supports the following, which are essential for NAT
traversal:
Learning public IP address
Enumerating existing port mappings
Adding and removing port mappings
Assigning lease times to mappings