US20070150552A1 - Peer to peer network communication - Google Patents

Peer to peer network communication Download PDF

Info

Publication number
US20070150552A1
US20070150552A1 US11/708,988 US70898807A US2007150552A1 US 20070150552 A1 US20070150552 A1 US 20070150552A1 US 70898807 A US70898807 A US 70898807A US 2007150552 A1 US2007150552 A1 US 2007150552A1
Authority
US
United States
Prior art keywords
client system
network
address
nat device
local
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US11/708,988
Inventor
Adam Harris
Jeremy Gordon
Mark Jacob
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment America LLC
Original Assignee
Harris Adam P
Gordon Jeremy J
Mark Jacob
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Harris Adam P, Gordon Jeremy J, Mark Jacob filed Critical Harris Adam P
Priority to US11/708,988 priority Critical patent/US20070150552A1/en
Publication of US20070150552A1 publication Critical patent/US20070150552A1/en
Assigned to SONY COMPUTER ENTERTAINMENT AMERICA LLC reassignment SONY COMPUTER ENTERTAINMENT AMERICA LLC CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: SONY COMPUTER ENTERTAINMENT AMERICA INC.
Assigned to SONY INTERACTIVE ENTERTAINMENT AMERICA LLC reassignment SONY INTERACTIVE ENTERTAINMENT AMERICA LLC CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: SONY COMPUTER ENTERTAINMENT AMERICA LLC
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/085Retrieval of network configuration; Tracking network configuration history
    • H04L41/0853Retrieval of network configuration; Tracking network configuration history by actively collecting configuration information or by backing up configuration information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/085Retrieval of network configuration; Tracking network configuration history
    • H04L41/0853Retrieval of network configuration; Tracking network configuration history by actively collecting configuration information or by backing up configuration information
    • H04L41/0856Retrieval of network configuration; Tracking network configuration history by actively collecting configuration information or by backing up configuration information by backing up or archiving configuration information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0866Checking the configuration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2514Translation of Internet protocol [IP] addresses between local and global IP addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2521Translation architectures other than single NAT servers
    • H04L61/2532Clique of NAT servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/255Maintenance or indexing of mapping tables
    • H04L61/2553Binding renewal aspects, e.g. using keep-alive messages

Definitions

  • NAT server network address translation server
  • This NAT server acts as a gateway between a local network and an external network, such as the Internet.
  • This NAT server is a network device that allows one or more machines (e.g., computers) in the local network to share one public or external network address, such as an Internet address.
  • the NAT server maintains a set of unique local or internal network addresses for the machines in the local network. Accordingly, each machine in the local network has a local network address and a public network address.
  • the NAT server For communication between the local network and the external network, the NAT server translates back and forth between the public network address and the local network addresses for each of the machines.
  • this network address translation is transparent to the individual machines within the local network and so the machines are not aware of the public address used by the NAT server.
  • a network system includes: a first network address translation device, connected to a network and having a first public network address; a first client system, connected to the first network address translation device and having a first local network address established by the first network address translation device; a second network address translation device, connected to the network and having a second public network address; a second client system, connected to the second network address translation device and having a second local network address established by the second network address translation device; an address server, connected to the network; a matching server, connected to the network; where the first network address translation device, the second network address translation device, the address server, and the matching server can send data to each other through the network, where the address server determines a public network address for a client system from data received from the client system and returns the derived public network address to the client system, where the matching server includes a registry table for registering client systems and storing the public network address and local network address for one or more registered client systems, where the first client system
  • a method of communicating between a first client system and a second client system includes: discovering first address information for a first client system connected to a first network address translation device; sharing the first address information with a second client system; receiving second address information for the second client system; and establishing communication between the first client system and the second client system using the second address information.
  • FIG. 1 shows a network system architecture
  • FIG. 2 is a block diagram of one implementation of a client system.
  • FIG. 3 is a flowchart of establishing and maintaining peer to peer network communication between two client systems.
  • FIG. 4 is a flowchart of a client system discovering its local and public network addresses.
  • FIG. 5 is a flowchart of two client systems sharing their local and public network addresses.
  • FIG. 6 is a flowchart of a first client system establishing communication with a second client system.
  • FIG. 7 is a flowchart of the second client system establishing communication with the first client system.
  • FIG. 8 is a flowchart of a client system maintaining the mapping assigned by a connected NAT device.
  • FIGS. 9A-9C show alternative network configurations.
  • the present invention provides methods and apparatus for peer to peer network communication.
  • the present invention allows two peer or client systems (e.g., network-enabled video game console systems) to communicate with each other across a network (e.g., the Internet) even though one or both client systems are behind respective NAT devices (network address translation devices).
  • the network communication uses a four part process: (1) discovery—each client system discovers its public address on the network, (2) sharing/distribution—each client system shares its address information with other systems that wish to communicate, (3) communication establishment—the client systems establish communication, and (4) mapping maintenance—each client system maintains its current address mapping in the corresponding NAT device.
  • FIG. 1 shows a network system architecture 100 .
  • a first client system 105 is connected to a first NAT device (network address translation device) 110 , forming a first local or internal network 115 .
  • the first client system 105 is a network-enabled system, such as a video game console system including a network adapter or a computer system.
  • the first client system 105 includes hardware and/or software providing video game functionality and hardware and/or software providing network communication as described below.
  • the first client system 105 is a “Playstation 2”TM game console by Sony Computer Entertainment Inc.TM
  • the first NAT device 110 is a typical NAT box or NAT server, or alternatively is a type of proxy server or part of a gateway, router, or firewall.
  • One or more additional systems or network devices may also be connected to the first NAT device 110 and be within the first local network 115 .
  • Each system in the first local network 115 has a local network address assigned and maintained by the first NAT device 110 .
  • a local network address in the first local network 115 includes an address number and a port number, such as according to UDP/IP (e.g., where the address number is an IP address).
  • the first local network 115 uses a different communication protocol and so the local network address includes different information to identify a system.
  • the first NAT device 110 is connected to an external or public network 120 , such as the Internet.
  • Each addressable system or device connected to the external network 120 has a public network address.
  • a “public” network address is used on the external network 120 and “local” network addresses are used within local networks, such as the first local network 115 .
  • a public network address includes an address number and a port number, such as according to UDP/IP.
  • the external network 120 uses a different communication protocol and so the public network address includes different information to identify a system.
  • the local network addresses of the first local network 115 are not compatible with the external network 120 (e.g., the local network addresses are not recognizable in the communication protocol of the external network 120 ).
  • the first NAT device 110 has a public network address.
  • the first client system 105 is indirectly connected to the external network 120 through the first NAT device 110 and does not have a public network address.
  • the first client system 105 shares the public network address of the first NAT device 110 with other systems in the first local network 115 (if any are present).
  • the first NAT device 110 assigns a local network address to each system in the first local network 115 .
  • the first NAT device 110 translates between the public network address and local network addresses to route data between the external network 120 and the first local network 115 .
  • the first NAT device 110 has a two or more public network addresses to share among systems in the first local network 115 .
  • the first NAT device 110 maps port numbers to systems in the first local network 115 , such as by using a PAT technique (Port Address Translation).
  • the first NAT device 110 assigns a port number to a local system in the first local network 115 when the local system sends data to a destination on the external network 120 .
  • the first NAT device 110 stores the port number as a port mapping between the port number and the local system.
  • the first NAT device 110 assigns and stores a single port number for all outgoing data from a single local system.
  • the first NAT device 110 includes the assigned port number with the outgoing data and so the recipient can use the port number when responding.
  • the first NAT device 110 determines which system in the first local network 115 is the intended recipient of incoming data by comparing the port number attached to the incoming data with the port mappings stored within the first NAT device 110 .
  • the first NAT device 110 establishes and adjusts the port mappings dynamically according to data sent and received using the mapping. If the first NAT device 110 does not receive data from a local system or from the external network 120 including a port number for a period of time, the first NAT device 110 releases the port mapping for that port number (a “timeout”). As described below, the first client system 105 can prevent this timeout by periodically sending messages out to the external network 120 .
  • the first NAT device 110 screens incoming data (e.g., for security reasons) by comparing the network address of the sender of the incoming data with addresses of recipients of data sent by the local system indicated by the port number.
  • the first NAT device 110 sends data from a local system to a recipient on the external network 120
  • the first NAT device 110 records the destination address along with the port mapping for the local system.
  • the first NAT device 110 does not forward incoming data to a local system on the first local network 115 if the local system has not already sent data to a recipient at the same network address as that of the incoming data.
  • the first NAT device 110 compares the network address of the sender of incoming data with the recorded destination address(es) of outgoing data using the port included with the incoming data. As described above, the first NAT device 110 records destination addresses along with port mappings, so the first NAT device 110 can use a port number as an index to find destination addresses to which data has been sent by a local system. If there is not a match, the first NAT device 110 does not forward the incoming data into the first local network 115 . As described below, the first client system 105 uses this security functionality to “approve” a system on the external network 120 by sending data to that system and so causes the first NAT device 110 to allow data from that approved system into the first local network 115 .
  • the first NAT device 110 maps a port number to the first client system 105 .
  • the first NAT device 110 includes the public network address for the first NAT device 110 and the mapped port number for the first client system 105 with the outgoing data.
  • the first NAT device 110 also records the address of the recipient.
  • the first NAT device 110 compares the address of the sender with the recorded address of the destination for the previously sent outgoing data. If the addresses match, the first NAT device 110 forwards the data to the first client system 105 using the local network address of the first client system 105 .
  • a second client system 125 is connected to a second NAT device 130 , forming a second local network 135 .
  • the second client system 125 is a network-enabled system, such as a video game console system including a network adapter.
  • the second NAT device 130 is a typical NAT box or NAT server, or alternatively is a type of proxy server or part of a gateway or router.
  • the second client system 125 and the second NAT device 130 operate similarly to the first client system 105 and the first NAT device 110 , respectively (e.g., in terms of port mapping and screening incoming data).
  • One or more additional network devices may also be connected to the second NAT device 130 and be within the second local network 135 .
  • Each system or device in the second local network 135 has a local network address assigned and maintained by the second NAT device 130 , similar to the first local network 115 .
  • the first local network 115 and the second local network 135 are the same type of network and so use the same communication protocol, however, in alternative implementations, the local networks 115 , 135 can be different types.
  • the second NAT device 130 is connected to the external network 120 . Accordingly, the second client system 125 is indirectly connected to the external network 120 through the second NAT device 130 .
  • the NAT devices 110 , 130 can send data to each other through the external network 120 according to the protocols of the external network 120 .
  • Each of the server systems 140 , 145 , 150 is a network server system, such as a computer system or a mainframe system. Alternatively, some or all of the server systems 140 , 145 , 150 are included within a single system connected to the external network 120 .
  • Each of the server systems 140 , 145 , 150 has a respective network address on the external network 135 . These server network addresses are known to the client systems 105 , 125 .
  • the address server 140 assists the client systems 105 , 125 with address discovery.
  • the matching server 145 assists the client systems 105 , 125 with address sharing.
  • the mapping maintenance server 150 assists the client systems 105 , 125 with maintaining the address mapping of the NAT devices 110 , 130 , respectively. In an alternative implementation, the maintenance mapping server is omitted.
  • FIG. 2 is a block diagram of one implementation of a client system 200 , such as first client system 105 in FIG. 1 .
  • the client system 200 includes four managers: a network address manager 205 , a network registration manager 210 , a network sharing manager 215 , and a network mapping maintenance manager 220 .
  • Each of the managers 205 , 210 , 215 , 220 is implemented as a software component of the client system 200 .
  • some or all of one or more of the mangers 205 , 210 , 215 , 220 is implemented in hardware.
  • the network address manager 205 controls communication between the client system 200 and the address server 140 to discover a public network address associated with the client system 200 by a connected NAT device, such as the first NAT device 110 .
  • the network registration manager 210 controls communication between the client system 200 and the matching server 145 to register the client system 200 with the matching server 145 .
  • the network sharing manager 215 controls communication with the matching server 145 to determine the public and local network addresses of another client system that has requested communication with the client system 200 .
  • the mapping maintenance manger 220 controls communication with the mapping maintenance server 150 to prevent the NAT device connected to the client system 200 from timing out the mapping established for the client system 200 .
  • the client system 200 does not include a mapping maintenance manager 220 .
  • the client system 200 includes a network interface 225 for connecting to and communicating with the local network of the client system 200 .
  • the network interface 225 includes a network communication device, such as a network adapter or modem.
  • the client system 200 also includes components for general operation, such as a CPU 230 , memory 235 , and an I/O interface 240 .
  • the client system includes additional video, sound, and application specific software and/or hardware (“game components”).
  • game components such as a “Playstation 2”TM by Sony Computer Entertainment Inc.TM including hardware and software for network communication as described herein.
  • FIG. 3 is a flowchart of establishing and maintaining peer to peer network communication between two client systems, such as the first client system 105 and the second client system 125 in FIG. 1 .
  • Each client system discovers its address information, block 305 .
  • a client system such as the client systems 105 , 125 in FIG. 1 , has associated address information including a public network address and a local network address.
  • a client system discovers its public network address by communicating with the address server (recall the address server 140 in FIG. 1 ).
  • a client system discovers its local network address by accessing locally stored information or by querying the corresponding NAT device.
  • the client systems share their discovered address information with each other, block 310 . As described below referring to FIG.
  • one or both of the client systems register with the matching server (recall the matching server 145 in FIG. 1 ).
  • One of the client systems requests communication with the other registered client system and the matching server shares the address information between the client systems.
  • the client systems establish communication with each other using the received address information, block 315 .
  • each client system sends messages to the other client system using the shared address information so that the NAT devices recognize the incoming messages as “approved.” While the client systems are communicating, the client systems maintain the mapping established by the corresponding NAT devices, block 320 .
  • each client system periodically sends messages to the mapping maintenance server (recall the mapping maintenance server 150 in FIG. 1 ) so that the corresponding NAT device does not change or timeout the established port mapping for the client system.
  • the client systems do not maintain this mapping using a mapping maintenance server.
  • FIG. 4 is a flowchart of a client system discovering its local and public network addresses (recall block 305 of FIG. 3 ).
  • the local network address is the network address of the client system in a local network and is assigned by a NAT device connected to the local network.
  • the public network address is the network address on the external network shared by a NAT device among the systems in the local network connected to the NAT device.
  • a local or public network addresses includes an address number and a port number.
  • the client system uses its network address manager component to discover its public and local network addresses (recall network address manager 205 in FIG. 2 ).
  • a client system first discovers its local network address, block 405 .
  • a client system discovers its local public address by accessing local storage, such as by querying the network stack software used by the client system.
  • the client system establishes the local port number when the client system initiates communication with the NAT device and so the client system is already aware of the port number.
  • the client system can request the local network address from the corresponding NAT device.
  • the client system sends an address request to the address server to discover the public network address, block 410 .
  • the client system sends the address request to the address server through the NAT device.
  • the NAT device adds the public network address to the address request, such as in header information for the address request.
  • the NAT device assigns a port number and includes the port number in the public network address in the address request (e.g., in the UDP header).
  • the address server extracts the public network address from the address request and stores the public network address, block 415 .
  • the public network address is located within the address request at a known location (e.g., within the header) so the address server can find the public network address in the address request.
  • the address server does not store the public network address or only stores the public network address temporarily.
  • the address server returns the public network address to the client system by generating an address report and sending the address report to the client system, block 420 .
  • the address report includes the extracted public network address as part of the data or payload of the message as well as in the addressing portion of the message (e.g., in the header).
  • the NAT device converts the public network address to the client system's local network address according to the port number and forwards the address report to the client system. For example, the NAT device accesses the port mapping for the client system according to the port number of the public network address and retrieves the local network address. The NAT device then replaces the public network address in the message's header information with the local network address. Accordingly, the NAT device modifies the header by removing the public network address, but does not modify the data portion of the message.
  • the client system receives the address report and stores the included public network address, block 425 . The client system has now discovered its local and public network addresses.
  • FIG. 5 is a flowchart of two client systems sharing their local and public network addresses (recall block 310 of FIG. 3 ).
  • a first client system registers with the matching server, block 505 .
  • a client system uses its network registration manager component to manage registering with the matching server (recall network registration manager 210 in FIG. 2 ).
  • the first client system sends a registration request to the matching server.
  • the registration request includes the first client system's discovered local and public network addresses.
  • the registration request indicates to the matching server that the sending client system is available for communication using the provided address information.
  • the matching server registers the first client system in a registry table, block 510 .
  • the matching server maintains a registry table with entries storing address information for registered systems.
  • the matching server creates an entry in the registry table for the first client system and records the provided address information in the entry.
  • the second client system sends a matching request to the matching server, block 515 .
  • a client system uses its network sharing manager component to manage obtaining the address information for another client system from the matching server (recall network sharing manager 215 in FIG. 2 ), both to select a registered client system and to receive address information after registering, as described below.
  • the matching request indicates to the matching server that the second client system is requesting information to establish communication with another client system.
  • the matching server sends registry information to the second client system, block 520 . In one implementation, the matching server sends the registry table to the second client system.
  • the matching server communicates with the second client system so that the second client system can access the registry table to identify a registered client system with which to communicate, such as by accepting search queries from the second client system.
  • the second client system selects the first client system from among the registered client systems, block 525 .
  • the second client system stores the address information for the first client system, block 530 .
  • the registry information sent to the second client system includes address information for the registered client systems.
  • the second client system separately requests the address information for the selected client system from the matching server.
  • the second client system sends a matching selection to the matching server, block 535 .
  • the matching selection indicates with which of the registered client systems the second client system is to communicate (in this case, the first client system).
  • the matching selection also includes the second client system's address information.
  • the matching selection also serves as a request for the address of the first client system.
  • the matching server sends the second client system's address information to the first client system as the selected client system, block 540 .
  • the first client system receives and records the second client system's address information, block 545 .
  • Each of the two client systems have now shared their address information with the other client system through the matching server.
  • FIG. 6 is a flowchart of a first client system establishing communication with a second client system (recall block 315 of FIG. 3 ).
  • the first client system sends one or more test messages to the second client system, block 605 .
  • the first client system sends some of the test messages to the second client system using the public network address for the second client system (outgoing public address test messages) and some of the test messages using the local network address for the second client system (outgoing local address test messages).
  • the first client system received the public and local network addresses for the second client system when the two client systems shared address information (recall FIG. 5 ).
  • the first client system does not send test messages using the local network address.
  • the first client system continues to send test messages to the second client system until the first client system receives a confirmation message from the second client system in block 630 , as described below.
  • the NAT device connected to the first client system records the destination addresses of the outgoing test messages, block 610 .
  • the NAT device connected to the first client system (e.g., the first NAT device 110 in FIG. 1 ) is a gateway between the local network of the first client system and the external network. Accordingly, the outgoing test messages pass through the NAT device. As described above, the NAT device screens incoming data and does not allow data to enter the NAT device's local network unless the local network destination of the incoming data has already attempted to communicate with the sender of the incoming data.
  • the NAT device records the destination address of outgoing data from the systems on the local network as “approved” addresses for the sender of the outgoing data.
  • the NAT device compares the origin address of the incoming data (i.e., the address of the sender) with recorded “approved” addresses for the intended recipient on the local network.
  • the NAT device only forwards incoming data to the local recipient when the origin address matches one of the “approved” addresses for the local recipient.
  • the NAT device records the destination addresses of the outgoing test messages as “approved” addresses of systems with which the first client system is attempting to communicate.
  • the NAT device receives data for the first client system that is from the same address as the destination address of one of the first client system's outgoing test messages, the NAT device forwards the incoming data to the first client system.
  • the first client system is sending test messages to addresses for the second client system, so the NAT device will forward data from the second client system to the first client system.
  • the second client system While the first client system is sending test messages to the second client system, the second client system is sending test messages to the first client system as well, as described below referring to FIG. 7 .
  • the second client system sends outgoing public address test messages (and outgoing local address test messages if appropriate) using the address information for the first client system.
  • the NAT device connected to the second client system e.g., the second NAT device 130 in FIG. 1 ) records the destination addresses for the outgoing test messages and so will forward incoming data for the second client system received from the first client system.
  • the first client system receives a test message from the second client system, block 615 .
  • the NAT device connected to the first client system forwards an incoming test message from the second client system to the first client system because the NAT device matches the origin address of the incoming test message with a recorded “approved” address.
  • the first client system records the origin address of the received test message, block 620 .
  • the first client system sends a confirmation message to the second client system using the recorded origin address, block 625 .
  • the outgoing confirmation message indicates to the second client system that the first client system has received a test message from the second client system.
  • the second client system receives a test message from the first client system and sends a confirmation message to the first client system using the origin address of that test message.
  • the first client system receives a confirmation message from the second client system, block 630 .
  • the first client system stops sending test messages to the second client system.
  • the first client system has now established communication with the second client system.
  • the second client After the second client receives the confirmation message from the first client system, the second client system will have established communication with the first client system.
  • the client systems have confirmed an address to which each system can send data and have that data successfully pass through the NAT device of the recipient system.
  • the first client system By first sending test messages addressed to the second client system so that the NAT device will forward messages from the second client system to the first client system, the first client system is “punching holes” in the security features of the NAT device. Accordingly, this technique is referred to as “hole punching.” Using “hole punching” the first and second client systems can establish communication without altering the operation of the NAT devices.
  • FIG. 7 is a flowchart of the second client system establishing communication with the first client system. The actions of FIG. 7 occur in conjunction with those described above referring to FIG. 6 .
  • the second client system sends test messages to the first client system using the address information received when the client systems shared address information, block 705 .
  • the second client system sends outgoing public address test messages using the first client system's public network address and also sends outgoing local address test messages if the local network address is compatible with the external network.
  • the second client system continues to send test messages to the first client system until the second client system receives a confirmation message from the first client system in block 730 , as described below.
  • the NAT device connected to the second client system records the destination addresses for the outgoing test messages as “approved” addresses, block 710 .
  • the first client system is also sending test messages to the second client system and the second client system receives a test message from the first client system, block 715 .
  • the second client system records the origin address of the received test message, block 720 , and sends a confirmation message to the first client system using the origin message, block 725 .
  • the first client system also sends a confirmation message to the second client system after receiving a test message from the second client system and the second client system receives the confirmation message, block 730 .
  • the second client system stops sending test messages to the first client system.
  • the second client system has now established communication with the first client system.
  • FIG. 8 is a flowchart of a client system maintaining the mapping assigned by a connected NAT device (recall block 315 of FIG. 3 ).
  • a client system uses its network mapping maintenance manager component to manage maintaining the address mapping of a connected NAT device with the mapping maintenance server (recall network mapping maintenance manager 220 in FIG. 2 ).
  • a NAT device assigns local network addresses to the systems on the local network of the NAT device.
  • the NAT device also assigns port numbers for the public network address used by local systems.
  • the NAT device assigns a port number to the local system and stores the port number.
  • the NAT device When the NAT device receives incoming data, the NAT device checks the port number in the target address for the incoming data (e.g., in the header information) to determine which local system is the intended recipient. As described above the NAT device also uses the port number to confirm that the sender of the incoming data is “approved” before forwarding the data to the local system. Once the NAT device has assigned a port number to a local system, the NAT device begins counting down a timer. If the local system sends more data to the external network, the NAT device uses the same port number and resets the timer. Similarly, if the NAT device receives incoming data using the port number, the NAT device resets the timer.
  • mapping maintenance server is included within the address server or the matching server and so the client system sends mapping maintenance messages to the appropriate server. In one implementation not including a mapping maintenance server, the client system does not send mapping maintenance messages.
  • the client system sends a mapping maintenance message to the mapping maintenance server through the connected NAT device, block 805 .
  • the first client system 105 sends a mapping maintenance message through the first NAT device 110 to the mapping maintenance server 150 .
  • the NAT device receives the mapping maintenance message and resets the timer for the port number assigned to the client system, block 810 .
  • the NAT device sends the mapping maintenance message to the mapping maintenance server, block 815 .
  • the client system evaluates whether to maintain the current address, block 820 . If the client system is communicating with another client system or attempting to communicate with another client system, the client system sends another mapping maintenance to the mapping maintenance server to preserve the current port mapping, returning to block 805 .
  • the client system does not send another mapping maintenance message and allows the port mapping to timeout, block 825 .
  • the mapping maintenance server does not respond to the client system.
  • the mapping maintenance server sends a mapping maintenance confirmation message to the client system.
  • FIGS. 9A-9C show alternative network configurations.
  • a first client system 905 is behind a NAT device 910 while a second client system 915 is not connected to a NAT device.
  • both client systems 930 , 935 are not connected to NAT devices.
  • both client systems 970 , 975 are behind the same NAT device 980 in the same local network 985 .
  • the client systems and server systems can interact in substantially the same way as described above.
  • each client system 105 , 125 and server system 140 , 145 , 150 includes one or more programmable computers implementing the respective aspects of the network system described above.
  • each computer includes one or more processors, one or more data-storage components (e.g., volatile or non-volatile memory modules and persistent optical and magnetic storage devices, such as hard and floppy disk drives, CD-ROM drives, and magnetic tape drives), one or more input devices (e.g., mice and keyboards), and one or more output devices (e.g., display consoles and printers).
  • the computer programs include executable code that is usually stored in a persistent storage medium and then copied into memory at run-time.
  • the processor executes the code by retrieving program instructions from memory in a prescribed order.
  • the computer receives data from the input and/or storage devices, performs operations on the data, and then delivers the resulting data to the output and/or storage devices.

Abstract

Methods and apparatus for peer to peer network communication. In one implementation, a method of communicating between a first client system and a second client system includes: discovering first address information for a first client system connected to a first network address translation device; sharing the first address information with a second client system; receiving second address information for the second client system; and establishing communication between the first client system and the second client system using the second address information.

Description

    RELATED APPLICATIONS
  • This application claims the benefit of U.S. Provisional Application No. 60/380,396 filed May 13, 2002, the disclosure of which is incorporated herein by reference.
  • BACKGROUND
  • One typical type of NAT server (network address translation server) acts as a gateway between a local network and an external network, such as the Internet. This NAT server is a network device that allows one or more machines (e.g., computers) in the local network to share one public or external network address, such as an Internet address. The NAT server maintains a set of unique local or internal network addresses for the machines in the local network. Accordingly, each machine in the local network has a local network address and a public network address. For communication between the local network and the external network, the NAT server translates back and forth between the public network address and the local network addresses for each of the machines. Typically this network address translation is transparent to the individual machines within the local network and so the machines are not aware of the public address used by the NAT server.
  • SUMMARY
  • The present disclosure provides methods and apparatus for peer to peer network communication. In one implementation, a network system includes: a first network address translation device, connected to a network and having a first public network address; a first client system, connected to the first network address translation device and having a first local network address established by the first network address translation device; a second network address translation device, connected to the network and having a second public network address; a second client system, connected to the second network address translation device and having a second local network address established by the second network address translation device; an address server, connected to the network; a matching server, connected to the network; where the first network address translation device, the second network address translation device, the address server, and the matching server can send data to each other through the network, where the address server determines a public network address for a client system from data received from the client system and returns the derived public network address to the client system, where the matching server includes a registry table for registering client systems and storing the public network address and local network address for one or more registered client systems, where the first client system includes: a first network address manager for communicating with the address server to determine the first public network address, a first network registration manager for registering the first client system with the matching server, a first network sharing manager for sharing the first public network address and the first local network address with the second client system, where the second client system includes: a second network address manager for communicating with the address server to determine the second public network address, a second network registration manager for registering the second client system with the matching server, a second network sharing manager for sharing the second public network address and the second local network address with the first client system. In another implementation, the network system also includes a mapping maintenance server connected to the network.
  • In another implementation, a method of communicating between a first client system and a second client system includes: discovering first address information for a first client system connected to a first network address translation device; sharing the first address information with a second client system; receiving second address information for the second client system; and establishing communication between the first client system and the second client system using the second address information.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 shows a network system architecture.
  • FIG. 2 is a block diagram of one implementation of a client system.
  • FIG. 3 is a flowchart of establishing and maintaining peer to peer network communication between two client systems.
  • FIG. 4 is a flowchart of a client system discovering its local and public network addresses.
  • FIG. 5 is a flowchart of two client systems sharing their local and public network addresses.
  • FIG. 6 is a flowchart of a first client system establishing communication with a second client system.
  • FIG. 7 is a flowchart of the second client system establishing communication with the first client system.
  • FIG. 8 is a flowchart of a client system maintaining the mapping assigned by a connected NAT device.
  • FIGS. 9A-9C show alternative network configurations.
  • DETAILED DESCRIPTION
  • The present invention provides methods and apparatus for peer to peer network communication. The present invention allows two peer or client systems (e.g., network-enabled video game console systems) to communicate with each other across a network (e.g., the Internet) even though one or both client systems are behind respective NAT devices (network address translation devices). As described below, in one implementation, the network communication uses a four part process: (1) discovery—each client system discovers its public address on the network, (2) sharing/distribution—each client system shares its address information with other systems that wish to communicate, (3) communication establishment—the client systems establish communication, and (4) mapping maintenance—each client system maintains its current address mapping in the corresponding NAT device.
  • FIG. 1 shows a network system architecture 100. A first client system 105 is connected to a first NAT device (network address translation device) 110, forming a first local or internal network 115. The first client system 105 is a network-enabled system, such as a video game console system including a network adapter or a computer system. As a video game console system, the first client system 105 includes hardware and/or software providing video game functionality and hardware and/or software providing network communication as described below. In one implementation, the first client system 105 is a “Playstation 2”™ game console by Sony Computer Entertainment Inc.™ The first NAT device 110 is a typical NAT box or NAT server, or alternatively is a type of proxy server or part of a gateway, router, or firewall. One or more additional systems or network devices, such as a computer, may also be connected to the first NAT device 110 and be within the first local network 115. Each system in the first local network 115 has a local network address assigned and maintained by the first NAT device 110. In one implementation, a local network address in the first local network 115 includes an address number and a port number, such as according to UDP/IP (e.g., where the address number is an IP address). In an alternative implementation, the first local network 115 uses a different communication protocol and so the local network address includes different information to identify a system.
  • The first NAT device 110 is connected to an external or public network 120, such as the Internet. Each addressable system or device connected to the external network 120 has a public network address. A “public” network address is used on the external network 120 and “local” network addresses are used within local networks, such as the first local network 115. In one implementation, a public network address includes an address number and a port number, such as according to UDP/IP. In an alternative implementation, the external network 120 uses a different communication protocol and so the public network address includes different information to identify a system. In one implementation, the local network addresses of the first local network 115 are not compatible with the external network 120 (e.g., the local network addresses are not recognizable in the communication protocol of the external network 120).
  • The first NAT device 110 has a public network address. The first client system 105 is indirectly connected to the external network 120 through the first NAT device 110 and does not have a public network address. The first client system 105 shares the public network address of the first NAT device 110 with other systems in the first local network 115 (if any are present). The first NAT device 110 assigns a local network address to each system in the first local network 115. The first NAT device 110 translates between the public network address and local network addresses to route data between the external network 120 and the first local network 115. In an alternative implementation, the first NAT device 110 has a two or more public network addresses to share among systems in the first local network 115.
  • In one implementation, the first NAT device 110 maps port numbers to systems in the first local network 115, such as by using a PAT technique (Port Address Translation). The first NAT device 110 assigns a port number to a local system in the first local network 115 when the local system sends data to a destination on the external network 120. The first NAT device 110 stores the port number as a port mapping between the port number and the local system. The first NAT device 110 assigns and stores a single port number for all outgoing data from a single local system. The first NAT device 110 includes the assigned port number with the outgoing data and so the recipient can use the port number when responding. The first NAT device 110 determines which system in the first local network 115 is the intended recipient of incoming data by comparing the port number attached to the incoming data with the port mappings stored within the first NAT device 110.
  • The first NAT device 110 establishes and adjusts the port mappings dynamically according to data sent and received using the mapping. If the first NAT device 110 does not receive data from a local system or from the external network 120 including a port number for a period of time, the first NAT device 110 releases the port mapping for that port number (a “timeout”). As described below, the first client system 105 can prevent this timeout by periodically sending messages out to the external network 120.
  • In one implementation, the first NAT device 110 screens incoming data (e.g., for security reasons) by comparing the network address of the sender of the incoming data with addresses of recipients of data sent by the local system indicated by the port number. When the first NAT device 110 sends data from a local system to a recipient on the external network 120, the first NAT device 110 records the destination address along with the port mapping for the local system. The first NAT device 110 does not forward incoming data to a local system on the first local network 115 if the local system has not already sent data to a recipient at the same network address as that of the incoming data. The first NAT device 110 compares the network address of the sender of incoming data with the recorded destination address(es) of outgoing data using the port included with the incoming data. As described above, the first NAT device 110 records destination addresses along with port mappings, so the first NAT device 110 can use a port number as an index to find destination addresses to which data has been sent by a local system. If there is not a match, the first NAT device 110 does not forward the incoming data into the first local network 115. As described below, the first client system 105 uses this security functionality to “approve” a system on the external network 120 by sending data to that system and so causes the first NAT device 110 to allow data from that approved system into the first local network 115.
  • For example, when the first client system 105 sends data to a recipient on the external network 120 the first NAT device maps a port number to the first client system 105. The first NAT device 110 includes the public network address for the first NAT device 110 and the mapped port number for the first client system 105 with the outgoing data. The first NAT device 110 also records the address of the recipient. When the first NAT device 110 receives data including that port number, the first NAT device 110 compares the address of the sender with the recorded address of the destination for the previously sent outgoing data. If the addresses match, the first NAT device 110 forwards the data to the first client system 105 using the local network address of the first client system 105.
  • A second client system 125 is connected to a second NAT device 130, forming a second local network 135. Similar to the first client system 105, the second client system 125 is a network-enabled system, such as a video game console system including a network adapter. Similar to the first NAT device 110, the second NAT device 130 is a typical NAT box or NAT server, or alternatively is a type of proxy server or part of a gateway or router. The second client system 125 and the second NAT device 130 operate similarly to the first client system 105 and the first NAT device 110, respectively (e.g., in terms of port mapping and screening incoming data). One or more additional network devices may also be connected to the second NAT device 130 and be within the second local network 135. Each system or device in the second local network 135 has a local network address assigned and maintained by the second NAT device 130, similar to the first local network 115. In one implementation, the first local network 115 and the second local network 135 are the same type of network and so use the same communication protocol, however, in alternative implementations, the local networks 115, 135 can be different types.
  • Similar to the first NAT device 110, the second NAT device 130 is connected to the external network 120. Accordingly, the second client system 125 is indirectly connected to the external network 120 through the second NAT device 130. The NAT devices 110, 130 can send data to each other through the external network 120 according to the protocols of the external network 120.
  • Three server systems are connected to the external network 120 as well: an address server 140, a matching server 145, and a mapping maintenance server 150. Each of the server systems 140, 145, 150 is a network server system, such as a computer system or a mainframe system. Alternatively, some or all of the server systems 140, 145, 150 are included within a single system connected to the external network 120. Each of the server systems 140, 145, 150 has a respective network address on the external network 135. These server network addresses are known to the client systems 105, 125. The address server 140 assists the client systems 105, 125 with address discovery. The matching server 145 assists the client systems 105, 125 with address sharing. The mapping maintenance server 150 assists the client systems 105, 125 with maintaining the address mapping of the NAT devices 110, 130, respectively. In an alternative implementation, the maintenance mapping server is omitted.
  • FIG. 2 is a block diagram of one implementation of a client system 200, such as first client system 105 in FIG. 1. The client system 200 includes four managers: a network address manager 205, a network registration manager 210, a network sharing manager 215, and a network mapping maintenance manager 220. Each of the managers 205, 210, 215, 220 is implemented as a software component of the client system 200. Alternatively, some or all of one or more of the mangers 205, 210, 215, 220 is implemented in hardware. The network address manager 205 controls communication between the client system 200 and the address server 140 to discover a public network address associated with the client system 200 by a connected NAT device, such as the first NAT device 110. The network registration manager 210 controls communication between the client system 200 and the matching server 145 to register the client system 200 with the matching server 145. The network sharing manager 215 controls communication with the matching server 145 to determine the public and local network addresses of another client system that has requested communication with the client system 200. The mapping maintenance manger 220 controls communication with the mapping maintenance server 150 to prevent the NAT device connected to the client system 200 from timing out the mapping established for the client system 200. In an alternative implementation, the client system 200 does not include a mapping maintenance manager 220. The client system 200 includes a network interface 225 for connecting to and communicating with the local network of the client system 200. The network interface 225 includes a network communication device, such as a network adapter or modem. The client system 200 also includes components for general operation, such as a CPU 230, memory 235, and an I/O interface 240. For a game console client system, the client system includes additional video, sound, and application specific software and/or hardware (“game components”). As noted above, in one implementation, a client system 200 is a “Playstation 2”™ by Sony Computer Entertainment Inc.™ including hardware and software for network communication as described herein.
  • FIG. 3 is a flowchart of establishing and maintaining peer to peer network communication between two client systems, such as the first client system 105 and the second client system 125 in FIG. 1. Each client system discovers its address information, block 305. A client system, such as the client systems 105, 125 in FIG. 1, has associated address information including a public network address and a local network address. As described below referring to FIG. 4, a client system discovers its public network address by communicating with the address server (recall the address server 140 in FIG. 1). A client system discovers its local network address by accessing locally stored information or by querying the corresponding NAT device. The client systems share their discovered address information with each other, block 310. As described below referring to FIG. 5, one or both of the client systems register with the matching server (recall the matching server 145 in FIG. 1). One of the client systems requests communication with the other registered client system and the matching server shares the address information between the client systems. The client systems establish communication with each other using the received address information, block 315. As described below referring to FIG. 6, each client system sends messages to the other client system using the shared address information so that the NAT devices recognize the incoming messages as “approved.” While the client systems are communicating, the client systems maintain the mapping established by the corresponding NAT devices, block 320. As described below referring to FIG. 8, each client system periodically sends messages to the mapping maintenance server (recall the mapping maintenance server 150 in FIG. 1) so that the corresponding NAT device does not change or timeout the established port mapping for the client system. In an implementation that does not include a mapping maintenance server, the client systems do not maintain this mapping using a mapping maintenance server.
  • FIG. 4 is a flowchart of a client system discovering its local and public network addresses (recall block 305 of FIG. 3). As described above, the local network address is the network address of the client system in a local network and is assigned by a NAT device connected to the local network. The public network address is the network address on the external network shared by a NAT device among the systems in the local network connected to the NAT device. In one implementation, a local or public network addresses includes an address number and a port number. The client system uses its network address manager component to discover its public and local network addresses (recall network address manager 205 in FIG. 2).
  • A client system first discovers its local network address, block 405. In one implementation, a client system discovers its local public address by accessing local storage, such as by querying the network stack software used by the client system. The client system establishes the local port number when the client system initiates communication with the NAT device and so the client system is already aware of the port number. Alternatively, the client system can request the local network address from the corresponding NAT device. The client system sends an address request to the address server to discover the public network address, block 410. The client system sends the address request to the address server through the NAT device. As part of the NAT device's network address translation functionality, the NAT device adds the public network address to the address request, such as in header information for the address request. If the NAT device has not already assigned a port number to the client system, the NAT device assigns a port number and includes the port number in the public network address in the address request (e.g., in the UDP header). The address server extracts the public network address from the address request and stores the public network address, block 415. The public network address is located within the address request at a known location (e.g., within the header) so the address server can find the public network address in the address request. In an alternative implementation, the address server does not store the public network address or only stores the public network address temporarily. The address server returns the public network address to the client system by generating an address report and sending the address report to the client system, block 420. The address report includes the extracted public network address as part of the data or payload of the message as well as in the addressing portion of the message (e.g., in the header). The NAT device converts the public network address to the client system's local network address according to the port number and forwards the address report to the client system. For example, the NAT device accesses the port mapping for the client system according to the port number of the public network address and retrieves the local network address. The NAT device then replaces the public network address in the message's header information with the local network address. Accordingly, the NAT device modifies the header by removing the public network address, but does not modify the data portion of the message. The client system receives the address report and stores the included public network address, block 425. The client system has now discovered its local and public network addresses.
  • FIG. 5 is a flowchart of two client systems sharing their local and public network addresses (recall block 310 of FIG. 3). A first client system registers with the matching server, block 505. A client system uses its network registration manager component to manage registering with the matching server (recall network registration manager 210 in FIG. 2). The first client system sends a registration request to the matching server. The registration request includes the first client system's discovered local and public network addresses. The registration request indicates to the matching server that the sending client system is available for communication using the provided address information. The matching server registers the first client system in a registry table, block 510. The matching server maintains a registry table with entries storing address information for registered systems. The matching server creates an entry in the registry table for the first client system and records the provided address information in the entry. The second client system sends a matching request to the matching server, block 515. A client system uses its network sharing manager component to manage obtaining the address information for another client system from the matching server (recall network sharing manager 215 in FIG. 2), both to select a registered client system and to receive address information after registering, as described below. The matching request indicates to the matching server that the second client system is requesting information to establish communication with another client system. The matching server sends registry information to the second client system, block 520. In one implementation, the matching server sends the registry table to the second client system. In another implementation, the matching server communicates with the second client system so that the second client system can access the registry table to identify a registered client system with which to communicate, such as by accepting search queries from the second client system. The second client system selects the first client system from among the registered client systems, block 525. The second client system stores the address information for the first client system, block 530. In one implementation, the registry information sent to the second client system includes address information for the registered client systems. In another implementation, the second client system separately requests the address information for the selected client system from the matching server. The second client system sends a matching selection to the matching server, block 535. The matching selection indicates with which of the registered client systems the second client system is to communicate (in this case, the first client system). The matching selection also includes the second client system's address information. In one implementation, the matching selection also serves as a request for the address of the first client system. The matching server sends the second client system's address information to the first client system as the selected client system, block 540. The first client system receives and records the second client system's address information, block 545. Each of the two client systems have now shared their address information with the other client system through the matching server.
  • FIG. 6 is a flowchart of a first client system establishing communication with a second client system (recall block 315 of FIG. 3). The first client system sends one or more test messages to the second client system, block 605. The first client system sends some of the test messages to the second client system using the public network address for the second client system (outgoing public address test messages) and some of the test messages using the local network address for the second client system (outgoing local address test messages). As described above, the first client system received the public and local network addresses for the second client system when the two client systems shared address information (recall FIG. 5). In an implementation where the local network addresses of the second client system's local network are not compatible with the external network (e.g., the local network addresses are not recognizable under the communication protocol of the external network), the first client system does not send test messages using the local network address. The first client system continues to send test messages to the second client system until the first client system receives a confirmation message from the second client system in block 630, as described below.
  • The NAT device connected to the first client system records the destination addresses of the outgoing test messages, block 610. The NAT device connected to the first client system (e.g., the first NAT device 110 in FIG. 1) is a gateway between the local network of the first client system and the external network. Accordingly, the outgoing test messages pass through the NAT device. As described above, the NAT device screens incoming data and does not allow data to enter the NAT device's local network unless the local network destination of the incoming data has already attempted to communicate with the sender of the incoming data. The NAT device records the destination address of outgoing data from the systems on the local network as “approved” addresses for the sender of the outgoing data. The NAT device compares the origin address of the incoming data (i.e., the address of the sender) with recorded “approved” addresses for the intended recipient on the local network. The NAT device only forwards incoming data to the local recipient when the origin address matches one of the “approved” addresses for the local recipient.
  • Accordingly, the NAT device records the destination addresses of the outgoing test messages as “approved” addresses of systems with which the first client system is attempting to communicate. When the NAT device receives data for the first client system that is from the same address as the destination address of one of the first client system's outgoing test messages, the NAT device forwards the incoming data to the first client system. The first client system is sending test messages to addresses for the second client system, so the NAT device will forward data from the second client system to the first client system.
  • While the first client system is sending test messages to the second client system, the second client system is sending test messages to the first client system as well, as described below referring to FIG. 7. As described above for the first client system, the second client system sends outgoing public address test messages (and outgoing local address test messages if appropriate) using the address information for the first client system. The NAT device connected to the second client system (e.g., the second NAT device 130 in FIG. 1) records the destination addresses for the outgoing test messages and so will forward incoming data for the second client system received from the first client system.
  • The first client system receives a test message from the second client system, block 615. As described above, the NAT device connected to the first client system forwards an incoming test message from the second client system to the first client system because the NAT device matches the origin address of the incoming test message with a recorded “approved” address. The first client system records the origin address of the received test message, block 620. The first client system sends a confirmation message to the second client system using the recorded origin address, block 625. The outgoing confirmation message indicates to the second client system that the first client system has received a test message from the second client system. Similarly, the second client system receives a test message from the first client system and sends a confirmation message to the first client system using the origin address of that test message. The first client system receives a confirmation message from the second client system, block 630. When the first client system receives a confirmation message from the second client system, the first client system stops sending test messages to the second client system. The first client system has now established communication with the second client system. After the second client receives the confirmation message from the first client system, the second client system will have established communication with the first client system. The client systems have confirmed an address to which each system can send data and have that data successfully pass through the NAT device of the recipient system.
  • By first sending test messages addressed to the second client system so that the NAT device will forward messages from the second client system to the first client system, the first client system is “punching holes” in the security features of the NAT device. Accordingly, this technique is referred to as “hole punching.” Using “hole punching” the first and second client systems can establish communication without altering the operation of the NAT devices.
  • FIG. 7 is a flowchart of the second client system establishing communication with the first client system. The actions of FIG. 7 occur in conjunction with those described above referring to FIG. 6. The second client system sends test messages to the first client system using the address information received when the client systems shared address information, block 705. As noted above, the second client system sends outgoing public address test messages using the first client system's public network address and also sends outgoing local address test messages if the local network address is compatible with the external network. The second client system continues to send test messages to the first client system until the second client system receives a confirmation message from the first client system in block 730, as described below. The NAT device connected to the second client system records the destination addresses for the outgoing test messages as “approved” addresses, block 710. As described above, the first client system is also sending test messages to the second client system and the second client system receives a test message from the first client system, block 715. The second client system records the origin address of the received test message, block 720, and sends a confirmation message to the first client system using the origin message, block 725. As described above, the first client system also sends a confirmation message to the second client system after receiving a test message from the second client system and the second client system receives the confirmation message, block 730. When the second client system receives a confirmation message from the first client system, the second client system stops sending test messages to the first client system. The second client system has now established communication with the first client system.
  • FIG. 8 is a flowchart of a client system maintaining the mapping assigned by a connected NAT device (recall block 315 of FIG. 3). A client system uses its network mapping maintenance manager component to manage maintaining the address mapping of a connected NAT device with the mapping maintenance server (recall network mapping maintenance manager 220 in FIG. 2). As described above, in one implementation, a NAT device assigns local network addresses to the systems on the local network of the NAT device. The NAT device also assigns port numbers for the public network address used by local systems. When a local system sends data to the external network, the NAT device assigns a port number to the local system and stores the port number. When the NAT device receives incoming data, the NAT device checks the port number in the target address for the incoming data (e.g., in the header information) to determine which local system is the intended recipient. As described above the NAT device also uses the port number to confirm that the sender of the incoming data is “approved” before forwarding the data to the local system. Once the NAT device has assigned a port number to a local system, the NAT device begins counting down a timer. If the local system sends more data to the external network, the NAT device uses the same port number and resets the timer. Similarly, if the NAT device receives incoming data using the port number, the NAT device resets the timer. If the timer reaches zero, the NAT device frees the port number (a “timeout”) because the port number has not been used recently. To prevent this “timeout” a client system periodically sends mapping maintenance messages to the mapping maintenance server while the client system is communicating or attempting to communicate with another client system. As described above, in one implementation, the mapping maintenance server is included within the address server or the matching server and so the client system sends mapping maintenance messages to the appropriate server. In one implementation not including a mapping maintenance server, the client system does not send mapping maintenance messages.
  • The client system sends a mapping maintenance message to the mapping maintenance server through the connected NAT device, block 805. Referring to FIG. 1, the first client system 105 sends a mapping maintenance message through the first NAT device 110 to the mapping maintenance server 150. The NAT device receives the mapping maintenance message and resets the timer for the port number assigned to the client system, block 810. The NAT device sends the mapping maintenance message to the mapping maintenance server, block 815. After a predetermined period, the client system evaluates whether to maintain the current address, block 820. If the client system is communicating with another client system or attempting to communicate with another client system, the client system sends another mapping maintenance to the mapping maintenance server to preserve the current port mapping, returning to block 805. If the client system is done communicating, the client system does not send another mapping maintenance message and allows the port mapping to timeout, block 825. In one implementation, the mapping maintenance server does not respond to the client system. Alternatively, the mapping maintenance server sends a mapping maintenance confirmation message to the client system.
  • While the description above focuses on a network configuration where two client systems are behind respective NAT devices (recall FIG. 1), the operation of the two client systems and the server systems are independent of the presence of NAT devices. FIGS. 9A-9C show alternative network configurations. In FIG. 9A, a first client system 905 is behind a NAT device 910 while a second client system 915 is not connected to a NAT device. In FIG. 9B, both client systems 930, 935 are not connected to NAT devices. In FIG. 9C, both client systems 970, 975 are behind the same NAT device 980 in the same local network 985. In each of these alternative configurations, as well as other variations, the client systems and server systems can interact in substantially the same way as described above.
  • The various implementations of the invention are realized in electronic hardware, computer software, or combinations of these technologies. Most implementations include one or more computer programs executed by a programmable computer. For example, referring to FIG. 1, in one implementation, each client system 105, 125 and server system 140, 145, 150 includes one or more programmable computers implementing the respective aspects of the network system described above. In general, each computer includes one or more processors, one or more data-storage components (e.g., volatile or non-volatile memory modules and persistent optical and magnetic storage devices, such as hard and floppy disk drives, CD-ROM drives, and magnetic tape drives), one or more input devices (e.g., mice and keyboards), and one or more output devices (e.g., display consoles and printers).
  • The computer programs include executable code that is usually stored in a persistent storage medium and then copied into memory at run-time. The processor executes the code by retrieving program instructions from memory in a prescribed order. When executing the program code, the computer receives data from the input and/or storage devices, performs operations on the data, and then delivers the resulting data to the output and/or storage devices.
  • Various illustrative implementations of the present invention have been described. However, one of ordinary skill in the art will see that additional implementations are also possible and within the scope of the present invention. Accordingly, the present invention is not limited to only those implementations described above.

Claims (7)

1-25. (canceled)
26. A network client system, comprising:
a network connection interface for connecting to a network;
a network address manager for sending an address request to an address server connected to the network to determine address information for the network client system;
a network registration manager for registering the address information of the client system with a matching server connected to the network;
a network sharing manager for sharing the address information with a second client system connected to the network,
wherein the network connection interface is connected to a network address translation device,
wherein the address information includes a local network address and a public network address,
wherein the local network address corresponds to the network client system and is established by the network address translation device,
wherein the public network address corresponds to the network address translation device, and
wherein said network address translation device establishes said local network address for said network client system by mapping a port number associated with said network client system using port address translation and attaching the port number to said public network address.
27. The network client system of claim 26, further comprising a network mapping maintenance manager for regularly sending messages to a mapping maintenance server connected to the network.
28. (canceled)
29. The network client system of claim 27, where the public network address includes a port number assigned by the network address translation device to correspond to the network client system.
30. The network client system of claim 27, further comprising game components for providing video game console functionality.
31-52. (canceled)
US11/708,988 2002-05-13 2007-02-21 Peer to peer network communication Abandoned US20070150552A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/708,988 US20070150552A1 (en) 2002-05-13 2007-02-21 Peer to peer network communication

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US38039602P 2002-05-13 2002-05-13
US10/215,899 US7676579B2 (en) 2002-05-13 2002-08-08 Peer to peer network communication
US11/708,988 US20070150552A1 (en) 2002-05-13 2007-02-21 Peer to peer network communication

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/215,899 Division US7676579B2 (en) 2002-05-13 2002-08-08 Peer to peer network communication

Publications (1)

Publication Number Publication Date
US20070150552A1 true US20070150552A1 (en) 2007-06-28

Family

ID=29406404

Family Applications (2)

Application Number Title Priority Date Filing Date
US10/215,899 Active 2024-12-16 US7676579B2 (en) 2002-05-13 2002-08-08 Peer to peer network communication
US11/708,988 Abandoned US20070150552A1 (en) 2002-05-13 2007-02-21 Peer to peer network communication

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US10/215,899 Active 2024-12-16 US7676579B2 (en) 2002-05-13 2002-08-08 Peer to peer network communication

Country Status (9)

Country Link
US (2) US7676579B2 (en)
EP (2) EP2285072B1 (en)
JP (1) JP4083737B2 (en)
KR (1) KR100760802B1 (en)
CN (1) CN1586065B (en)
AU (1) AU2003234391B8 (en)
DE (1) DE60336052D1 (en)
TW (1) TWI251413B (en)
WO (1) WO2003096653A1 (en)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030212795A1 (en) * 2002-05-13 2003-11-13 Harris Adam Pierce Peer to peer network communication
US20040136511A1 (en) * 2003-01-15 2004-07-15 Microsoft Corporation Extensible communication controls
US20060129678A1 (en) * 2004-11-29 2006-06-15 Sony Corporation Information processing system, information providing apparatus and method, electronic device and method used therefor, information processing apparatus and method, recording medium, and program
WO2006082576A2 (en) * 2005-02-01 2006-08-10 Kayote Networks Inc. A method and apparatus for server-side nat detection
US20060274741A1 (en) * 2005-06-07 2006-12-07 Wing Daniel G Managing devices across NAT boundaries
US20080069102A1 (en) * 2006-09-20 2008-03-20 Nortel Networks Limited Method and system for policy-based address allocation for secure unique local networks
US20080298376A1 (en) * 2007-05-30 2008-12-04 Sony Computer Entertainment Inc. Network communication with path mtu size discovery
US20090028167A1 (en) * 2007-07-27 2009-01-29 Sony Computer Entertainment Inc. Cooperative nat behavior discovery
US20090228593A1 (en) * 2008-03-05 2009-09-10 Sony Computer Entertainment Inc. Traversal of symmetric network address translator for multiple simultaneous connections
US7706371B1 (en) * 2005-07-07 2010-04-27 Cisco Technology, Inc. Domain based routing for managing devices operating behind a network address translator
US8060626B2 (en) 2008-09-22 2011-11-15 Sony Computer Entertainment America Llc. Method for host selection based on discovered NAT type
US8171123B2 (en) 2007-12-04 2012-05-01 Sony Computer Entertainment Inc. Network bandwidth detection and distribution
US8224985B2 (en) 2005-10-04 2012-07-17 Sony Computer Entertainment Inc. Peer-to-peer communication traversing symmetric network address translators
US20130021911A1 (en) * 2011-07-21 2013-01-24 Microsoft Corporation Wireless synchronization testing

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2362482A (en) * 2000-05-15 2001-11-21 Ridgeway Systems & Software Lt Direct slave addressing to indirect slave addressing
GB2365256A (en) 2000-07-28 2002-02-13 Ridgeway Systems & Software Lt Audio-video telephony with port address translation
GB2369746A (en) * 2000-11-30 2002-06-05 Ridgeway Systems & Software Lt Communications system with network address translation
US7937471B2 (en) 2002-06-03 2011-05-03 Inpro Network Facility, Llc Creating a public identity for an entity on a network
US7139840B1 (en) * 2002-06-14 2006-11-21 Cisco Technology, Inc. Methods and apparatus for providing multiple server address translation
US8234358B2 (en) * 2002-08-30 2012-07-31 Inpro Network Facility, Llc Communicating with an entity inside a private network using an existing connection to initiate communication
JP4304593B2 (en) 2002-11-01 2009-07-29 ソニー株式会社 Information processing system, information processing apparatus and method, and program
FR2853187B1 (en) * 2003-03-28 2006-01-13 At & T Corp SYSTEM FOR ALL NETWORK APPLICATION TO OPERATE TRANSPARENTLY THROUGH A NETWORK ADDRESS TRANSLATION DEVICE
US7949785B2 (en) * 2003-03-31 2011-05-24 Inpro Network Facility, Llc Secure virtual community network system
US7596595B2 (en) * 2003-06-18 2009-09-29 Utah State University Efficient unicast-based multicast tree construction and maintenance for multimedia transmission
US7313605B2 (en) 2003-07-03 2007-12-25 At&T Corp. Externally controlled reachability in virtual private networks
US7417981B2 (en) * 2003-10-15 2008-08-26 Vonage Holdings Corp. Method and apparatus for enhanced Internet Telephony
US8234383B2 (en) * 2003-11-07 2012-07-31 Panasonic Corporation Bubble packet port identification using detection packets
EP1677465B1 (en) * 2003-11-07 2014-08-13 Panasonic Corporation Communication system, information processing apparatus and communication method
JP4269226B2 (en) 2003-11-14 2009-05-27 ソニー株式会社 Information communication system and method, information processing apparatus and method, program, and recording medium
US20050228848A1 (en) * 2004-03-22 2005-10-13 Thurston Stacy D Method and system for operating a peer network
JP2008505512A (en) * 2004-04-12 2008-02-21 エックスディエス・インコーポレイテッド System and method for automatically starting and dynamically establishing a secure internet connection between a server having a firewall and a client having a firewall
CN100486193C (en) * 2004-09-29 2009-05-06 腾讯科技(深圳)有限公司 Multi-policy P2P connection establishment method
JP4708036B2 (en) * 2005-01-21 2011-06-22 パナソニック株式会社 Communication system, information processing apparatus, server, and information processing method
US20080259942A1 (en) * 2005-02-18 2008-10-23 Robert Skog Arrangements For Providing Peer-To-Peer Communications In A Public Land Mobile Network
JP4597706B2 (en) * 2005-02-25 2010-12-15 パナソニック株式会社 Information processing system, information processing apparatus, server apparatus, and information processing method
US8041824B1 (en) * 2005-04-14 2011-10-18 Strauss Acquisitions, L.L.C. System, device, method and software for providing a visitor access to a public network
EP1880304A4 (en) * 2005-04-22 2011-12-28 Shrihari B Pandit Methods and systems for communicating voice, audio, video, text and/or multimedia data
JP4557803B2 (en) * 2005-05-27 2010-10-06 富士通株式会社 Network system and communication method
KR100766777B1 (en) * 2005-08-02 2007-10-17 엔에이치엔(주) System for providing game network and method thereof,storage medium
JP4548271B2 (en) * 2005-08-16 2010-09-22 ブラザー工業株式会社 Information communication system, information communication method, node device, and computer program
DE102005043239B4 (en) * 2005-09-09 2014-04-10 Nec Europe Ltd. Method for establishing and managing a connection
US8145733B1 (en) * 2006-02-15 2012-03-27 Trend Micro Incorporated Identification of computers located behind an address translation server
KR100793420B1 (en) * 2006-07-12 2008-01-11 임승빈 Method and system for connecting server to client or client to client in network for data transmitting service
KR100703065B1 (en) * 2006-10-26 2007-04-09 (주)휴리브 Network address translation control system and method for providing multilateral-bidirectional audio communication service
NL1033102C2 (en) * 2006-12-21 2008-06-24 V S N Systemen B V Method for setting up a peer-to-peer connection between two communication media.
US7881318B2 (en) * 2007-02-28 2011-02-01 Microsoft Corporation Out-of-band keep-alive mechanism for clients associated with network address translation systems
US20090055517A1 (en) * 2007-08-21 2009-02-26 D-Link Corporation Method for a plug-and-play network device to acquire dual internet protocol addresses
US20090059788A1 (en) * 2007-08-29 2009-03-05 Motorola, Inc. Method and Apparatus for Dynamic Adaptation of Network Transport
GB2463312A (en) * 2008-09-09 2010-03-17 Skype Ltd Games system with bi-directional video communication
KR100968958B1 (en) * 2008-12-03 2010-07-14 주식회사 케이티 Internet protocol Multimedia Subsystem and Subscriber Authentication method thereof
JP2010170176A (en) * 2009-01-20 2010-08-05 Konami Digital Entertainment Co Ltd Network system for game, program for network, and computer for server
KR101049912B1 (en) * 2009-02-24 2011-07-19 (주)닥터소프트 Connection method between network systems
JP5439036B2 (en) * 2009-05-27 2014-03-12 エヌ・ティ・ティ・コムウェア株式会社 COMMUNICATION SYSTEM, COMMUNICATION MANAGEMENT DEVICE, COMMUNICATION MANAGEMENT METHOD, AND COMMUNICATION MANAGEMENT PROGRAM
CN101605154B (en) * 2009-07-09 2014-08-13 中兴通讯股份有限公司 System and method for determining IP address of network equipment using network address translation
CN102546555B (en) * 2010-12-27 2015-12-16 中兴通讯股份有限公司 User terminal is when plurality of access modes and the interoperability methods of external network and equipment
GB201113942D0 (en) * 2011-08-12 2011-09-28 Nec Corp Communication system
TWI448129B (en) * 2011-11-09 2014-08-01 D Link Corp According to the behavior of the network address translator to establish a transmission control protocol connection method
US8862702B2 (en) 2012-07-18 2014-10-14 Accedian Networks Inc. Systems and methods of installing and operating devices without explicit network addresses
WO2015012900A1 (en) * 2013-07-26 2015-01-29 Intel IP Corporation Signaling interference information for user equipment assistance
CN106303117A (en) * 2015-06-08 2017-01-04 李明 The means of communication of IP based network and communication system
US10567518B2 (en) * 2015-06-26 2020-02-18 Western Digital Technologies, Inc. Automatic discovery and onboarding of electronic devices
CN106487864B (en) * 2015-09-02 2019-09-27 华为终端有限公司 Method for building up, server-side and the mobile terminal of data connection
CN108124022B (en) * 2016-11-28 2020-04-14 中国移动通信有限公司研究院 Network address translation management method and device
US10594829B2 (en) * 2017-05-24 2020-03-17 At&T Intellectual Property I, L.P. Cloud workload proxy as link-local service configured to access a service proxy gateway via a link-local IP address to communicate with an external target service via a private network
CN113411367B (en) * 2020-03-17 2022-07-19 浙江宇视科技有限公司 Method, device, equipment, system and storage medium for establishing connection of monitoring equipment
CN114928616A (en) * 2021-02-03 2022-08-19 上海哔哩哔哩科技有限公司 Transmission method and system of peer-to-peer network
CN114089711B (en) * 2022-01-21 2022-05-17 深圳艾灵网络有限公司 Industrial equipment control management method, electronic equipment and storage medium
US20230328029A1 (en) * 2022-04-11 2023-10-12 Verizon Patent And Licensing Inc. Multi-level and dynamic timers for carrier grade nat

Citations (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4787051A (en) * 1986-05-16 1988-11-22 Tektronix, Inc. Inertial mouse system
US4843568A (en) * 1986-04-11 1989-06-27 Krueger Myron W Real time perception of and response to the actions of an unencumbered participant/user
US5128671A (en) * 1990-04-12 1992-07-07 Ltv Aerospace And Defense Company Control device having multiple degrees of freedom
US5528265A (en) * 1994-07-18 1996-06-18 Harrison; Simon J. Orientation-operated cursor control device
US5636216A (en) * 1994-04-08 1997-06-03 Metricom, Inc. Method for translating internet protocol addresses to other distributed network addressing schemes
US5793763A (en) * 1995-11-03 1998-08-11 Cisco Technology, Inc. Security system for network address translation systems
US5956485A (en) * 1994-05-05 1999-09-21 Perlman; Stephen G. Network architecture to support real-time video games
US6058431A (en) * 1998-04-23 2000-05-02 Lucent Technologies Remote Access Business Unit System and method for network address translation as an external service in the access server of a service provider
US6128664A (en) * 1997-10-20 2000-10-03 Fujitsu Limited Address-translating connection device
US6128623A (en) * 1998-04-15 2000-10-03 Inktomi Corporation High performance object cache
US6128624A (en) * 1997-11-12 2000-10-03 Ncr Corporation Collection and integration of internet and electronic commerce data in a database during web browsing
US6128627A (en) * 1998-04-15 2000-10-03 Inktomi Corporation Consistent data storage in an object cache
US6138156A (en) * 1998-10-05 2000-10-24 International Business Machines Corporation Selecting and applying content-reducing filters based on dynamic environmental factors
US6151584A (en) * 1997-11-20 2000-11-21 Ncr Corporation Computer architecture and method for validating and collecting and metadata and data about the internet and electronic commerce environments (data discoverer)
US6151601A (en) * 1997-11-12 2000-11-21 Ncr Corporation Computer architecture and method for collecting, analyzing and/or transforming internet and/or electronic commerce data for storage into a data storage area
US6157368A (en) * 1994-09-28 2000-12-05 Faeger; Jan G. Control equipment with a movable control member
US6208649B1 (en) * 1998-03-11 2001-03-27 Cisco Technology, Inc. Derived VLAN mapping technique
US6209003B1 (en) * 1998-04-15 2001-03-27 Inktomi Corporation Garbage collection in an object cache
US6212565B1 (en) * 1998-08-26 2001-04-03 Sun Microsystems, Inc. Apparatus and method for improving performance of proxy server arrays that use persistent connections
US6289358B1 (en) * 1998-04-15 2001-09-11 Inktomi Corporation Delivering alternate versions of objects from an object cache
US6292880B1 (en) * 1998-04-15 2001-09-18 Inktomi Corporation Alias-free content-indexed object cache
US6333931B1 (en) * 1998-12-28 2001-12-25 Cisco Technology, Inc. Method and apparatus for interconnecting a circuit-switched telephony network and a packet-switched data network, and applications thereof
US20020016826A1 (en) * 1998-02-07 2002-02-07 Olof Johansson Firewall apparatus and method of controlling network data packet traffic between internal and external networks
US6353891B1 (en) * 2000-03-20 2002-03-05 3Com Corporation Control channel security for realm specific internet protocol
US6375572B1 (en) * 1999-10-04 2002-04-23 Nintendo Co., Ltd. Portable game apparatus with acceleration sensor and information storage medium storing a game progam
US6389462B1 (en) * 1998-12-16 2002-05-14 Lucent Technologies Inc. Method and apparatus for transparently directing requests for web objects to proxy caches
US6393488B1 (en) * 1999-05-27 2002-05-21 3Com Corporation System and method for supporting internet protocol subnets with network address translators
US20020085097A1 (en) * 2000-12-22 2002-07-04 Colmenarez Antonio J. Computer vision-based wireless pointing system
US20020143855A1 (en) * 2001-01-22 2002-10-03 Traversat Bernard A. Relay peers for extending peer availability in a peer-to-peer networking environment
US20020194308A1 (en) * 2001-06-19 2002-12-19 Robert Hall Web-based communications addressing system and method
US20030009561A1 (en) * 2001-06-14 2003-01-09 Sollee Patrick N. Providing telephony services to terminals behind a firewall and /or network address translator
US20030051052A1 (en) * 2001-09-13 2003-03-13 Koninklijke Philips Electronics N.V. Addressing scheme for wireless mobile clients
US6535511B1 (en) * 1999-01-07 2003-03-18 Cisco Technology, Inc. Method and system for identifying embedded addressing information in a packet for translation between disparate addressing systems
US20030055978A1 (en) * 2001-09-18 2003-03-20 Microsoft Corporation Methods and systems for enabling outside-initiated traffic flows through a network address translator
US6581108B1 (en) * 1999-11-30 2003-06-17 Lucent Technologies Inc. Managing multiple private data networks using network and payload address translation
US20030135625A1 (en) * 2002-01-15 2003-07-17 International Business Machines Corporation Blended SYN cookies
US6618757B1 (en) * 2000-05-17 2003-09-09 Nortel Networks Limited System and method for dynamic IP address management
US6636898B1 (en) * 1999-01-29 2003-10-21 International Business Machines Corporation System and method for central management of connections in a virtual private network
US20040063843A1 (en) * 2002-07-19 2004-04-01 Honeywell International, Inc. Coating solutions
US6779035B1 (en) * 2000-03-06 2004-08-17 Microsoft Corporation Application programming interface and generalized network address translator for translation of transport-layer sessions
US6789126B1 (en) * 2000-05-09 2004-09-07 Sun Microsystems, Inc. Addressing message gates in a distributed computing environment
US20040212589A1 (en) * 2003-04-24 2004-10-28 Hall Deirdre M. System and method for fusing and displaying multiple degree of freedom positional input data from multiple input sources
US20040249891A1 (en) * 2001-12-14 2004-12-09 Hisham Khartabil Method and apparatus for communication
US20050088466A1 (en) * 2003-10-28 2005-04-28 Smith Glenn M. Power supply adjustment
US20050114728A1 (en) * 2003-11-26 2005-05-26 Masaki Aizawa Disk array system and a method of avoiding failure of the disk array system
US20050149481A1 (en) * 1999-12-02 2005-07-07 Lambertus Hesselink Managed peer-to-peer applications, systems and methods for distributed data access and storage
US7016942B1 (en) * 2002-08-05 2006-03-21 Gary Odom Dynamic hosting
US7107348B2 (en) * 2001-03-27 2006-09-12 Fujitsu Limited Packet relay processing apparatus
US20060209822A1 (en) * 2005-03-18 2006-09-21 Moe Hamamoto Communication apparatus, communication system and communication method
US7133368B2 (en) * 2002-02-01 2006-11-07 Microsoft Corporation Peer-to-peer method of quality of service (QoS) probing and analysis and infrastructure employing same
US7155518B2 (en) * 2001-01-08 2006-12-26 Interactive People Unplugged Ab Extranet workgroup formation across multiple mobile virtual private networks
US7216359B2 (en) * 2002-12-19 2007-05-08 International Business Machines Corporation Secure communication overlay using IP address hopping
US7254709B1 (en) * 2001-10-23 2007-08-07 Avanza Technologies, Inc. Managed information transmission of electronic items in a network environment
US20080120404A1 (en) * 2006-11-20 2008-05-22 Funai Electric Co., Ltd Management Server and Content Moving System

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5856974A (en) * 1996-02-13 1999-01-05 Novell, Inc. Internetwork address mapping gateway
FI105753B (en) 1997-12-31 2000-09-29 Ssh Comm Security Oy Procedure for authentication of packets in the event of changed URLs and protocol modifications
US6957346B1 (en) * 1999-06-15 2005-10-18 Ssh Communications Security Ltd. Method and arrangement for providing security through network address translations using tunneling and compensations
US7058973B1 (en) * 2000-03-03 2006-06-06 Symantec Corporation Network address translation gateway for local area networks using local IP addresses and non-translatable port addresses
WO2001097485A2 (en) 2000-06-14 2001-12-20 At & T Wireless Services, Inc. Method for providing transparent public addressed networks within private networks
WO2002003217A1 (en) 2000-06-30 2002-01-10 Net2Phone System, method, and computer program product for resolving addressing in a network including a network address translator
US6661799B1 (en) 2000-09-13 2003-12-09 Alcatel Usa Sourcing, L.P. Method and apparatus for facilitating peer-to-peer application communication
US7676579B2 (en) 2002-05-13 2010-03-09 Sony Computer Entertainment America Inc. Peer to peer network communication

Patent Citations (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4843568A (en) * 1986-04-11 1989-06-27 Krueger Myron W Real time perception of and response to the actions of an unencumbered participant/user
US4787051A (en) * 1986-05-16 1988-11-22 Tektronix, Inc. Inertial mouse system
US5128671A (en) * 1990-04-12 1992-07-07 Ltv Aerospace And Defense Company Control device having multiple degrees of freedom
US5636216A (en) * 1994-04-08 1997-06-03 Metricom, Inc. Method for translating internet protocol addresses to other distributed network addressing schemes
US5956485A (en) * 1994-05-05 1999-09-21 Perlman; Stephen G. Network architecture to support real-time video games
US5528265A (en) * 1994-07-18 1996-06-18 Harrison; Simon J. Orientation-operated cursor control device
US6157368A (en) * 1994-09-28 2000-12-05 Faeger; Jan G. Control equipment with a movable control member
US5793763A (en) * 1995-11-03 1998-08-11 Cisco Technology, Inc. Security system for network address translation systems
US6128664A (en) * 1997-10-20 2000-10-03 Fujitsu Limited Address-translating connection device
US6128624A (en) * 1997-11-12 2000-10-03 Ncr Corporation Collection and integration of internet and electronic commerce data in a database during web browsing
US6151601A (en) * 1997-11-12 2000-11-21 Ncr Corporation Computer architecture and method for collecting, analyzing and/or transforming internet and/or electronic commerce data for storage into a data storage area
US6151584A (en) * 1997-11-20 2000-11-21 Ncr Corporation Computer architecture and method for validating and collecting and metadata and data about the internet and electronic commerce environments (data discoverer)
US20020016826A1 (en) * 1998-02-07 2002-02-07 Olof Johansson Firewall apparatus and method of controlling network data packet traffic between internal and external networks
US6208649B1 (en) * 1998-03-11 2001-03-27 Cisco Technology, Inc. Derived VLAN mapping technique
US6128623A (en) * 1998-04-15 2000-10-03 Inktomi Corporation High performance object cache
US6128627A (en) * 1998-04-15 2000-10-03 Inktomi Corporation Consistent data storage in an object cache
US6209003B1 (en) * 1998-04-15 2001-03-27 Inktomi Corporation Garbage collection in an object cache
US6292880B1 (en) * 1998-04-15 2001-09-18 Inktomi Corporation Alias-free content-indexed object cache
US6289358B1 (en) * 1998-04-15 2001-09-11 Inktomi Corporation Delivering alternate versions of objects from an object cache
US6058431A (en) * 1998-04-23 2000-05-02 Lucent Technologies Remote Access Business Unit System and method for network address translation as an external service in the access server of a service provider
US6212565B1 (en) * 1998-08-26 2001-04-03 Sun Microsystems, Inc. Apparatus and method for improving performance of proxy server arrays that use persistent connections
US6138156A (en) * 1998-10-05 2000-10-24 International Business Machines Corporation Selecting and applying content-reducing filters based on dynamic environmental factors
US6389462B1 (en) * 1998-12-16 2002-05-14 Lucent Technologies Inc. Method and apparatus for transparently directing requests for web objects to proxy caches
US6333931B1 (en) * 1998-12-28 2001-12-25 Cisco Technology, Inc. Method and apparatus for interconnecting a circuit-switched telephony network and a packet-switched data network, and applications thereof
US6535511B1 (en) * 1999-01-07 2003-03-18 Cisco Technology, Inc. Method and system for identifying embedded addressing information in a packet for translation between disparate addressing systems
US6636898B1 (en) * 1999-01-29 2003-10-21 International Business Machines Corporation System and method for central management of connections in a virtual private network
US6393488B1 (en) * 1999-05-27 2002-05-21 3Com Corporation System and method for supporting internet protocol subnets with network address translators
US6375572B1 (en) * 1999-10-04 2002-04-23 Nintendo Co., Ltd. Portable game apparatus with acceleration sensor and information storage medium storing a game progam
US6581108B1 (en) * 1999-11-30 2003-06-17 Lucent Technologies Inc. Managing multiple private data networks using network and payload address translation
US20050149481A1 (en) * 1999-12-02 2005-07-07 Lambertus Hesselink Managed peer-to-peer applications, systems and methods for distributed data access and storage
US6779035B1 (en) * 2000-03-06 2004-08-17 Microsoft Corporation Application programming interface and generalized network address translator for translation of transport-layer sessions
US6353891B1 (en) * 2000-03-20 2002-03-05 3Com Corporation Control channel security for realm specific internet protocol
US6789126B1 (en) * 2000-05-09 2004-09-07 Sun Microsystems, Inc. Addressing message gates in a distributed computing environment
US6618757B1 (en) * 2000-05-17 2003-09-09 Nortel Networks Limited System and method for dynamic IP address management
US20020085097A1 (en) * 2000-12-22 2002-07-04 Colmenarez Antonio J. Computer vision-based wireless pointing system
US7155518B2 (en) * 2001-01-08 2006-12-26 Interactive People Unplugged Ab Extranet workgroup formation across multiple mobile virtual private networks
US20020143855A1 (en) * 2001-01-22 2002-10-03 Traversat Bernard A. Relay peers for extending peer availability in a peer-to-peer networking environment
US7107348B2 (en) * 2001-03-27 2006-09-12 Fujitsu Limited Packet relay processing apparatus
US20030009561A1 (en) * 2001-06-14 2003-01-09 Sollee Patrick N. Providing telephony services to terminals behind a firewall and /or network address translator
US20020194308A1 (en) * 2001-06-19 2002-12-19 Robert Hall Web-based communications addressing system and method
US20030051052A1 (en) * 2001-09-13 2003-03-13 Koninklijke Philips Electronics N.V. Addressing scheme for wireless mobile clients
US20030055978A1 (en) * 2001-09-18 2003-03-20 Microsoft Corporation Methods and systems for enabling outside-initiated traffic flows through a network address translator
US7254709B1 (en) * 2001-10-23 2007-08-07 Avanza Technologies, Inc. Managed information transmission of electronic items in a network environment
US20040249891A1 (en) * 2001-12-14 2004-12-09 Hisham Khartabil Method and apparatus for communication
US20030135625A1 (en) * 2002-01-15 2003-07-17 International Business Machines Corporation Blended SYN cookies
US7133368B2 (en) * 2002-02-01 2006-11-07 Microsoft Corporation Peer-to-peer method of quality of service (QoS) probing and analysis and infrastructure employing same
US20040063843A1 (en) * 2002-07-19 2004-04-01 Honeywell International, Inc. Coating solutions
US7016942B1 (en) * 2002-08-05 2006-03-21 Gary Odom Dynamic hosting
US7216359B2 (en) * 2002-12-19 2007-05-08 International Business Machines Corporation Secure communication overlay using IP address hopping
US20040212589A1 (en) * 2003-04-24 2004-10-28 Hall Deirdre M. System and method for fusing and displaying multiple degree of freedom positional input data from multiple input sources
US20050088466A1 (en) * 2003-10-28 2005-04-28 Smith Glenn M. Power supply adjustment
US20050114728A1 (en) * 2003-11-26 2005-05-26 Masaki Aizawa Disk array system and a method of avoiding failure of the disk array system
US20060209822A1 (en) * 2005-03-18 2006-09-21 Moe Hamamoto Communication apparatus, communication system and communication method
US20080120404A1 (en) * 2006-11-20 2008-05-22 Funai Electric Co., Ltd Management Server and Content Moving System

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030212795A1 (en) * 2002-05-13 2003-11-13 Harris Adam Pierce Peer to peer network communication
US7676579B2 (en) 2002-05-13 2010-03-09 Sony Computer Entertainment America Inc. Peer to peer network communication
US20040136511A1 (en) * 2003-01-15 2004-07-15 Microsoft Corporation Extensible communication controls
US7577705B2 (en) * 2003-01-15 2009-08-18 Microsoft Corporation Extensible communication controls
US20060129678A1 (en) * 2004-11-29 2006-06-15 Sony Corporation Information processing system, information providing apparatus and method, electronic device and method used therefor, information processing apparatus and method, recording medium, and program
WO2006082576A2 (en) * 2005-02-01 2006-08-10 Kayote Networks Inc. A method and apparatus for server-side nat detection
WO2006082576A3 (en) * 2005-02-01 2007-12-06 Kayote Networks Inc A method and apparatus for server-side nat detection
US7515549B2 (en) * 2005-06-07 2009-04-07 Cisco Technology, Inc. Managing devices across NAT boundaries
US20060274741A1 (en) * 2005-06-07 2006-12-07 Wing Daniel G Managing devices across NAT boundaries
US7706371B1 (en) * 2005-07-07 2010-04-27 Cisco Technology, Inc. Domain based routing for managing devices operating behind a network address translator
US8224985B2 (en) 2005-10-04 2012-07-17 Sony Computer Entertainment Inc. Peer-to-peer communication traversing symmetric network address translators
US20080069102A1 (en) * 2006-09-20 2008-03-20 Nortel Networks Limited Method and system for policy-based address allocation for secure unique local networks
US7764677B2 (en) * 2006-09-20 2010-07-27 Nortel Networks Limited Method and system for policy-based address allocation for secure unique local networks
US20080298376A1 (en) * 2007-05-30 2008-12-04 Sony Computer Entertainment Inc. Network communication with path mtu size discovery
US7995478B2 (en) 2007-05-30 2011-08-09 Sony Computer Entertainment Inc. Network communication with path MTU size discovery
US7933273B2 (en) 2007-07-27 2011-04-26 Sony Computer Entertainment Inc. Cooperative NAT behavior discovery
US20110200009A1 (en) * 2007-07-27 2011-08-18 Sony Computer Entertainment Inc. Nat traversal for mobile network devices
US20090028167A1 (en) * 2007-07-27 2009-01-29 Sony Computer Entertainment Inc. Cooperative nat behavior discovery
USRE47566E1 (en) 2007-07-27 2019-08-06 Sony Interactive Entertainment Inc. NAT traversal for mobile network devices
US8565190B2 (en) 2007-07-27 2013-10-22 Sony Computer Entertainment Inc. NAT traversal for mobile network devices
US8943206B2 (en) 2007-12-04 2015-01-27 Sony Computer Entertainment Inc. Network bandwidth detection and distribution
US8171123B2 (en) 2007-12-04 2012-05-01 Sony Computer Entertainment Inc. Network bandwidth detection and distribution
US7856506B2 (en) 2008-03-05 2010-12-21 Sony Computer Entertainment Inc. Traversal of symmetric network address translator for multiple simultaneous connections
US8015300B2 (en) 2008-03-05 2011-09-06 Sony Computer Entertainment Inc. Traversal of symmetric network address translator for multiple simultaneous connections
US20090228593A1 (en) * 2008-03-05 2009-09-10 Sony Computer Entertainment Inc. Traversal of symmetric network address translator for multiple simultaneous connections
US8930545B2 (en) 2008-03-05 2015-01-06 Sony Computer Entertainment Inc. Traversal of symmetric network address translator for multiple simultaneous connections
US8060626B2 (en) 2008-09-22 2011-11-15 Sony Computer Entertainment America Llc. Method for host selection based on discovered NAT type
US8964567B2 (en) * 2011-07-21 2015-02-24 Microsoft Technology Licensing, Llc Wireless synchronization testing
US20130021911A1 (en) * 2011-07-21 2013-01-24 Microsoft Corporation Wireless synchronization testing

Also Published As

Publication number Publication date
TWI251413B (en) 2006-03-11
AU2003234391B2 (en) 2006-03-09
CN1586065A (en) 2005-02-23
CN1586065B (en) 2010-12-22
DE60336052D1 (en) 2011-03-31
KR20040054817A (en) 2004-06-25
AU2003234391B8 (en) 2009-07-30
EP2285072B1 (en) 2018-02-28
EP1508238B1 (en) 2016-04-13
KR100760802B1 (en) 2007-09-20
AU2003234391A1 (en) 2003-11-11
EP2285072A1 (en) 2011-02-16
TW200401540A (en) 2004-01-16
JP4083737B2 (en) 2008-04-30
US20030212795A1 (en) 2003-11-13
WO2003096653A1 (en) 2003-11-20
US7676579B2 (en) 2010-03-09
EP1508238A1 (en) 2005-02-23
JP2005525750A (en) 2005-08-25

Similar Documents

Publication Publication Date Title
US7676579B2 (en) Peer to peer network communication
AU2003229009B2 (en) Network configuration evaluation
US7245622B2 (en) Allowing IPv4 clients to communicate over an IPv6 network when behind a network address translator with reduced server workload
CN102984289B (en) Promote the method that penetrates of NAT and mobile device
US6754716B1 (en) Restricting communication between network devices on a common network
US6822955B1 (en) Proxy server for TCP/IP network address portability
US20080080532A1 (en) Methods and apparatus for managing internet communications using a dynamic STUN infrastructure configuration
US8145788B1 (en) Distributed ISP load balancer
US11924164B2 (en) Cloud access to local network addresses
CN113364741A (en) Application access method and proxy server
US20220337546A1 (en) Method and system for realizing network dynamics, terminal device and storage medium
KR101124635B1 (en) Connecting gateway with ipv4/ipv6
JP2005065204A (en) Personal ip system
GB2442314A (en) Method and system for managing internet communication using a NAT

Legal Events

Date Code Title Description
AS Assignment

Owner name: SONY COMPUTER ENTERTAINMENT AMERICA LLC,CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:SONY COMPUTER ENTERTAINMENT AMERICA INC.;REEL/FRAME:024611/0236

Effective date: 20100401

Owner name: SONY COMPUTER ENTERTAINMENT AMERICA LLC, CALIFORNI

Free format text: CHANGE OF NAME;ASSIGNOR:SONY COMPUTER ENTERTAINMENT AMERICA INC.;REEL/FRAME:024611/0236

Effective date: 20100401

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: SONY INTERACTIVE ENTERTAINMENT AMERICA LLC, CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:SONY COMPUTER ENTERTAINMENT AMERICA LLC;REEL/FRAME:038626/0637

Effective date: 20160331

Owner name: SONY INTERACTIVE ENTERTAINMENT AMERICA LLC, CALIFO

Free format text: CHANGE OF NAME;ASSIGNOR:SONY COMPUTER ENTERTAINMENT AMERICA LLC;REEL/FRAME:038626/0637

Effective date: 20160331