Patent ID: 9497160
Filing Date: 2016-11-15
CPC Classification: H04L

Claim Text:
1. A network traversal system for establishing a direct connection between two clients separated by two or more NAT's across a network wherein at least one of the NAT's is a symmetric NAT, the system comprising: a first client behind at least one symmetric NAT in a first LAN, the first LAN connected to the network, and wherein the first client is configured with instructions to cause the first client to: identify a plurality of destination ports of a second client; detect a signal for sending packets to the second client; after detecting the signal, send onto the network one or more packets to each of the identified plurality of destination ports of the second client from a source port of the first client, wherein said packets from the first client make available potential IP address:port combinations for directly connecting the first client with the second client; establish a socket for receiving packets from the second client; after detecting the signal, listen at the established socket for at least a listen period for receipt of one or more packets from a source port of the second client; record in memory an indication of successful receipt of a packet from the second client when one or more packets are received by the first client from the second client within the listen period; and generate a signal indicating successful receipt of the packet from the source port of the second client; and the second client not behind any symmetric NAT in a second LAN, the second LAN connected to the network, and wherein the second client is configured with instructions to cause the second client to: identify a plurality of source ports of the second client; detect a signal for sending packets to the first client; after detecting the signal, send onto the network one or more packets from each of the identified plurality of source ports to a destination port of the first client at least partially within the listen period associated with the first client; and listen for and detect a signal indicating a successful direct connection between the second client and the first client, wherein the direct connection includes (1) an IP address:port combination for use by the first client to reach the second client and (2) another IP address:port combination for use by the second client to reach the first client.