beautypg.com

Niversal, Lug and, Universal plug and play (upnp) – Compex Technologies NetPassage 18A User Manual

Page 107

background image

98

Universal Plug and Play (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 access point 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