1. A network communications system, comprising: at least one processor executing computer executable instructions to provide: a resolution provider configured to: receive a Simple Object Access protocol message and store address information for a least one network device including one or more of a service friendly name, a GUID, a routable public address and port pair, an address lease time, or a tunnel lease time provided by the Simple Object Access protocol message; and automatically determine a network address and port information for at least one network device providing a target service in response to receiving a resolution request from a client device; facilitate opening ports behind a network address translator (NAT) arranged in a cascade of network address translators (NATs), by processing security credentials of the client device to access the NAT and returning an external address and port information for communication with the NAT if the client device is authorized; and a discovery component configured to: map the external address and port information of the client device to an external port of the NAT; and facilitate determination of the network address for the at least one network device by: receiving a first probe message from the client device, wherein the first probe message includes at least one desired characteristic related to the target service; and sending a second probe message to the at least one network device providing the target service having the at least one desired characteristic, the second probe message comprising information including the at least one desired characteristic and an address of the client device to enable the at least one network device to respond to the first probe message by sending a response message directly to the client device using the address.