Patent ID: 9444784
Filing Date: 2016-09-13
CPC Classification: H04L

Claim Text:
1. A method of communication by a first communication device, comprising: establishing, by the first communication device, a proximity-based connection with a second communication device without using a centrally administered network component, wherein the proximity-based connection is out-of-band of a TCP/IP connection and established based on the first communication device and the second communication device being within a predefined distance from each other; determining a trigger condition to establish a wide area connection between the first communication device and the second communication device, wherein the wide area connection utilizes a TCP/IP protocol; generating, by the first communication device, a first candidate network address list comprising network addresses associated with each network interface of the first communication device, a host candidate address of the first communication device that is used when the first communication device communicates with a communication device on a same subnet as the first communication device and is not separated by a network address translation device; and a server reflexive candidate address of the first communication device that is used when the first communication device communicates with a communication device on a different subnet than the first communication device and is separated by at least one network address translation device, the server reflexive candidate address of the first communication device learned by the first communication device querying a first STUN server external to a first network address translation device arranged between the first communication device and the public Internet; transmitting, by the first communication device, the first candidate network address list to the second communication device directly over the proximity-based connection without using a centrally administered network component; receiving, by the first communication device, a second candidate network address list from the second communication device transmitted directly over the proximity-based connection without using a centrally administered network component, wherein the second candidate network address list includes at least: a host candidate address of the second communication device that is used when the second communication device communicates with a communication device on a same subnet as the second communication device and is not separated by a network address translation device; and a server reflexive candidate address of the second communication device that is used when the second communication device communicates with a communication device on a different subnet than the second communication device and is separated by at least one network address translation device, the server reflexive candidate address of the second communication device learned by the second communication device querying a second STUN server external to a second network address translation device arranged between the second communication device and the public Internet; performing iterative attempts to establish the wide area connection between the first communication device and the second communication device using different combination pairs of addresses from the first candidate network address list and the second candidate network address list to determine that the wide area connection can be established between an acceptable candidate pair; establishing, by the first communication device, a communication session between the first communication device and the second communication device over the wide area connection using the acceptable candidate pair, the acceptable candidate pair comprising a first public network address selected from the first candidate network address list and a second public network address selected from the second candidate network address list, and wherein at least one of the first public network address and the second public network address of the acceptable candidate pair is the server reflexive candidate address of the first communication device or the server reflexive candidate address of the second communication device transmitted or received over the proximity-based connection; maintaining both the proximity-based connection and the wide area connection, wherein the proximity-based connection and the wide area connection differ in their communication characteristics; and for each communication message between the first communication device and the second communication device, selecting one of the proximity-based connection or the wide area connection for transmission of the communication message based on a closest match between a communication characteristic of the communication message and the communication characteristics of each of the proximity-based connection and the wide area connection.