System and method for data transfer in a peer-to peer hybrid communication network
First Claim
Patent Images
1. A method for transferring data directly from a first endpoint to a second endpoint in a peer-to-peer network, the method comprising:
- retrieving a profile and a routing table from an access server by the first endpoint during an authentication process, wherein the profile identifies a plurality of endpoints that includes the second endpoint as endpoints that have each previously granted the first endpoint permission to communicate with that endpoint, and the routing table contains address information needed for the first endpoint to communicate directly with each of the plurality of endpoints;
sending a notification message from the first endpoint directly to each of the plurality of endpoints using the address information to inform each of the plurality of endpoints that the first endpoint is online, wherein the notification message results in a status update on each of the plurality of endpoints and includes address information of the first endpoint needed by each of the plurality of endpoints to communicate directly with the first endpoint;
sending a data transfer request message from the first endpoint directly to the second endpoint using the address information needed for the first endpoint to communicate directly with the second endpoint;
establishing a data transfer link directly between the first endpoint and the second endpoint in order to perform a file transfer from the first endpoint to the second endpoint; and
sending a plurality of packets corresponding to the file from the first endpoint to the second endpoint via the data transfer link, wherein the sending includes, for each packet,placing, by the first endpoint, the packet on an unacknowledged list upon sending the packet to the second endpoint;
removing the packet from the unacknowledged (UNACK) list only if an acknowledgment (ACK) response from the second endpoint indicates that the packet was correctly received by the second endpoint; and
resending the packet without waiting for each of the plurality of packets to be sent if an UNACK response from the second endpoint indicates that the packet was not correctly received by the second endpoint;
and wherein the sending includes, for each packet on the UNACK list after each of the plurality of packets is sent a first time,resending all packets that appear on the UNACK list after sending each of the plurality of packets a first time, wherein the packets that appear on the UNACK list are resent even if no response is received for each of the packets that appear on the UNACK list from the second endpoint, and wherein a packet is removed from the (UNACK) list only if an ACK response is received for that packet;
wherein the step of resending packets all packets that appear on the UNACK list is repeated by the first endpoint until either the UNACK list is empty or a timeout occurs;
receiving, by the first endpoint, a notification that a packet was received out of sequence by the second endpoint; and
recalculating, by the first endpoint, an inter-packet delay based on the out of sequence notification.
1 Assignment
0 Petitions
Accused Products
Abstract
An improved system and method are disclosed for peer-to-peer communications. In one example, the method enables an endpoint to transfer data directly to another endpoint.
185 Citations
13 Claims
-
1. A method for transferring data directly from a first endpoint to a second endpoint in a peer-to-peer network, the method comprising:
-
retrieving a profile and a routing table from an access server by the first endpoint during an authentication process, wherein the profile identifies a plurality of endpoints that includes the second endpoint as endpoints that have each previously granted the first endpoint permission to communicate with that endpoint, and the routing table contains address information needed for the first endpoint to communicate directly with each of the plurality of endpoints; sending a notification message from the first endpoint directly to each of the plurality of endpoints using the address information to inform each of the plurality of endpoints that the first endpoint is online, wherein the notification message results in a status update on each of the plurality of endpoints and includes address information of the first endpoint needed by each of the plurality of endpoints to communicate directly with the first endpoint; sending a data transfer request message from the first endpoint directly to the second endpoint using the address information needed for the first endpoint to communicate directly with the second endpoint; establishing a data transfer link directly between the first endpoint and the second endpoint in order to perform a file transfer from the first endpoint to the second endpoint; and sending a plurality of packets corresponding to the file from the first endpoint to the second endpoint via the data transfer link, wherein the sending includes, for each packet, placing, by the first endpoint, the packet on an unacknowledged list upon sending the packet to the second endpoint; removing the packet from the unacknowledged (UNACK) list only if an acknowledgment (ACK) response from the second endpoint indicates that the packet was correctly received by the second endpoint; and resending the packet without waiting for each of the plurality of packets to be sent if an UNACK response from the second endpoint indicates that the packet was not correctly received by the second endpoint; and wherein the sending includes, for each packet on the UNACK list after each of the plurality of packets is sent a first time, resending all packets that appear on the UNACK list after sending each of the plurality of packets a first time, wherein the packets that appear on the UNACK list are resent even if no response is received for each of the packets that appear on the UNACK list from the second endpoint, and wherein a packet is removed from the (UNACK) list only if an ACK response is received for that packet; wherein the step of resending packets all packets that appear on the UNACK list is repeated by the first endpoint until either the UNACK list is empty or a timeout occurs; receiving, by the first endpoint, a notification that a packet was received out of sequence by the second endpoint; and recalculating, by the first endpoint, an inter-packet delay based on the out of sequence notification. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method for transferring data directly from a first endpoint to a second endpoint in a peer-to-peer network, the method comprising:
-
retrieving a profile and a routing table from an access server by the first endpoint during an authentication process, wherein the profile identifies a plurality of endpoints that includes the second endpoint as endpoints that have each previously granted the first endpoint permission to communicate with that endpoint, and the routing table contains address information needed for the first endpoint to communicate directly with each of the plurality of endpoints; traversing, by the first endpoint, a network address translation (NAT) device associated with the second endpoint, wherein the NAT device includes a pinhole maintained between the NAT device and a server, the traversing comprising; determining whether a packet sent to the second endpoint from an external source will only pass through the NAT device if the second endpoint has first sent a packet to the external source; if the determining indicates that the second endpoint must first send a packet, sending a first packet by the first endpoint to a stateless reflector for reflection to the second endpoint, wherein the first packet includes a packet header identifying the stateless reflector as the packet destination and the first endpoint as the packet source; modifying the packet header by the stateless reflector, wherein the modifying inserts the second endpoint as the packet destination and the server as the packet source; and sending the modified first packet to the second endpoint via the pinhole in the NAT device; sending a notification message from the first endpoint directly to each of the plurality of endpoints using the address information to inform each of the plurality of endpoints that the first endpoint is online, wherein the notification message results in a status update on each of the plurality of endpoints and includes address information of the first endpoint needed by each of the plurality of endpoints to communicate directly with the first endpoint; sending a data transfer request message from the first endpoint directly to the second endpoint using the address information needed for the first endpoint to communicate directly with the second endpoint; establishing a data transfer link directly between the first endpoint and the second endpoint in order to perform a file transfer from the first endpoint to the second endpoint; and sending a plurality of packets corresponding to the file from the first endpoint to the second endpoint via the data transfer link, wherein the sending includes, for each packet, placing, by the first endpoint, the packet on an unacknowledged list upon sending the packet to the second endpoint; removing the packet from the unacknowledged (UNACK) list only if an acknowledgment (ACK) response from the second endpoint indicates that the packet was correctly received by the second endpoint; and resending the packet without waiting for each of the plurality of packets to be sent if an UNACK response from the second endpoint indicates that the packet was not correctly received by the second endpoint; and wherein the sending includes, for each packet on the UNACK list after each of the plurality of packets is sent a first time, resending all packets that appear on the UNACK list after sending each of the plurality of packets a first time, wherein the packets that appear on the UNACK list are resent even if no response is received for each of the packets that appear on the UNACK list from the second endpoint, and wherein a packet is removed from the (UNACK) list only if an ACK response is received for that packet; wherein the step of resending packets all packets that appear on the UNACK list is repeated by the first endpoint until either the UNACK list is empty or a timeout occurs. - View Dependent Claims (9)
-
-
10. A peer-to-peer system for directly transferring data comprising:
-
an access server; first and second endpoints; and a plurality of computer executable instructions including instructions for; retrieving a profile and a routing table from an access server by the first endpoint during an authentication process, wherein the profile identifies a plurality of endpoints that includes the second endpoint as endpoints that have each previously granted the first endpoint permission to communicate with that endpoint, and the routing table contains address information needed for the first endpoint to communicate directly with each of the plurality of endpoints; sending a notification message from the first endpoint directly to each of the plurality of endpoints using the address information to inform each of the plurality of endpoints that the first endpoint is online, wherein the notification message results in a status update on each of the plurality of endpoints and includes address information of the first endpoint needed by each of the plurality of endpoints to communicate directly with the first endpoint; sending a data transfer request message from the first endpoint directly to the second endpoint using the address information needed for the first endpoint to communicate directly with the second endpoint; establishing a data transfer link directly between the first endpoint and the second endpoint in order to perform a file transfer from the first endpoint to the second endpoint; and sending a plurality of packets corresponding to the file from the first endpoint to the second endpoint via the data transfer link, wherein the sending includes, for each packet, placing, by the first endpoint, the packet on an unacknowledged list upon sending the packet to the second endpoint; removing the packet from the unacknowledged (UNACK) list only if an acknowledgment (ACK) response from the second endpoint indicates that the packet was correctly received by the second endpoint; and resending the packet without waiting for each of the plurality of packets to be sent if an UNACK response from the second endpoint indicates that the packet was not correctly received by the second endpoint; and wherein the sending includes, for each packet on the UNACK list after each of the plurality of packets is sent a first time, resending all packets that appear on the UNACK list after sending each of the plurality of packets a first time, wherein the packets that appear on the UNACK list are resent even if no response is received for each of the packets that appear on the UNACK list from the second endpoint, and wherein a packet is removed from the (UNACK) list only if an ACK response is received for that packet; wherein the step of resending packets all packets that appear on the UNACK list is repeated by the first endpoint until either the UNACK list is empty or a timeout occurs; receiving, by the first endpoint, a notification that a packet was received out of sequence by the second endpoint; and recalculating, by the first endpoint, an inter-packet delay based on the out of sequence notification. - View Dependent Claims (11, 12, 13)
-
Specification