Patent ID: 7970835
Filing Date: 2011-06-28
Classification: H04L

Abstract:
1. A peer-to-peer filing sharing method comprising: sharing data by peers in a distributed peer-to-peer network that is without a centralized server, comprising: broadcasting a first request by a first peer of a plurality of peers on a network, wherein the first request is broadcast to the plurality of peers and includes a filter describing at least a first and second data segment of a file having a plurality of data segments that is requested by the first peer, wherein the at least first and second data segments are smaller than the file, wherein each peer of the plurality of peers includes a hardware processor, and wherein it is not required that any single peer of the plurality of peers include a complete copy of said file; wherein the requested first data segment is identified by a notation specifying a length of the requested first data segment, and wherein the notation is (x,y), where x specifies an offset at which the requested first data segment begins and y specifies the length of the requested first data segment; selecting by a second peer of at least two second peers a segment from the at least first and second data segments described in the filter based on a statistical analysis of segments that have already been provided from the second peer to the plurality of peers on the network to increase the chance of availability amongst the plurality of peers on the network of an entire set of segments making up the entire file; responding by the second peer to the request with notification of availability of the selected segment; receiving notification by the first peer that an incomplete portion of the first data segment of the at least first and second data segments is stored in the at least two second peers of the plurality of peers; requesting by the first peer that the incomplete portion of the requested first data segment be provided to the first peer by a peer selected from the at least two second peers; receiving by the first peer the incomplete portion of the requested first data segment from said selected peer; buffering by the first peer the incomplete portion in a temporary buffer; broadcasting by the first peer a second request including a single filter describing at least third and fourth non-contiguous data segments of the file requested by the first peer that do not include the received incomplete portion; wherein the single filter is identified by a notation {(p,q),(r,s)}, wherein (p,q) identifies the third non-contiguous data segment of the file and (r,s) identifies the fourth non-contiguous segment of the file, where p and r specify non-contiguous offsets at which the requested third and fourth data segments being, respectively, and q and s specify the length of the requested third and fourth data segments, respectively; and acquiring by the first peer the remaining portions of the first data segment from the plurality of peers and storing the acquired portions of the first data segment in the temporary buffer until all of the remaining portions of the first data segment is are acquired, after which first data segment is completely stored in a database; wherein said first peer continues to request and receive different segments of said file that it has not received yet, wherein the first peer receives a complete copy of the file by receiving portions of the file and not a complete copy of said file from at least two peers of the plurality of peers.