Packet transfer mechanism over a peer to peer network
First Claim
1. A network method for distributing data to a plurality of computers, comprising:
- sending a first portion of the data to a first computer;
sending a second portion of the data to a second computer, where the second portion includes at least some of the data not sent to the first computer;
after sending to the first computer and the second computer has commenced, sending a request for the data from a requesting computer to a targeted computer system;
accessing a look-up list to identify at least the first and second computers that have previously requested the data;
prior to receiving all of the data at the first and second computers, sending requests to the identified first and second computers;
sending the first portion of the data from the first computer to the requesting computer;
sending at least some of the second portion of the data from the second computer to the requesting computer;
receiving, with the requesting computer, the first portion of the data from the first computer;
receiving, with the requesting computer, at least some of the second portion of the data from the second computer, the data received from the second computer including at least some of the data not sent to the first computer; and
saving the data in memory of the requesting computer to recreate the requested data.
9 Assignments
0 Petitions
Accused Products
Abstract
An apparatus, method and system to improve data transfer across a communications network by employing an acknowledgment independent equalized data packet transfer mechanism on a peer-to-peer basis. The present disclosure teaches how many computers can send data to many other computers, with particularity on a peer-to-peer basis when desired, without requiring acknowledgements of safe receipt by the receiving computer. By aggregating several computers to send data in a collection to a requesting computer, transfer rates may be increased. Further, by not requiring acknowledgment of receipt from the receiving computer, and by treating all data packets with equal utility, the present disclosure teaches a mechanism that reduces file transfer administration bandwidth, increases file transfer scalability on demand, and increases overall network transfer efficiency.
-
Citations
139 Claims
-
1. A network method for distributing data to a plurality of computers, comprising:
-
sending a first portion of the data to a first computer; sending a second portion of the data to a second computer, where the second portion includes at least some of the data not sent to the first computer; after sending to the first computer and the second computer has commenced, sending a request for the data from a requesting computer to a targeted computer system; accessing a look-up list to identify at least the first and second computers that have previously requested the data; prior to receiving all of the data at the first and second computers, sending requests to the identified first and second computers; sending the first portion of the data from the first computer to the requesting computer; sending at least some of the second portion of the data from the second computer to the requesting computer; receiving, with the requesting computer, the first portion of the data from the first computer; receiving, with the requesting computer, at least some of the second portion of the data from the second computer, the data received from the second computer including at least some of the data not sent to the first computer; and saving the data in memory of the requesting computer to recreate the requested data. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method of using a computer for transferring data, comprising:
-
receiving a request for data from a requesting computer; accessing a look-up list to identify peer computers that have previously downloaded at least a portion of the requested data; sending requests to the identified other peer computers, wherein at least two of the identified peer computers have downloaded different partial portions of the requested data upon receiving the requests, and wherein the at least two identified peer computers includes a first peer computer that has downloaded at least a first partial portion and a second peer computer that has downloaded at least a second partial portion without downloading all of the first partial portion; encoding the different partial portions of the requested data at the identified computers for network transmission, and sending the encoded different partial portions of the data from at least two different ones of the peer computers to the requesting computer and completing the download of the data at the identified peer computers. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17)
-
-
18. A method of using a computer for transferring data from a set of peer computers to a requesting computer, comprising:
-
receiving a request for data at a source computer; maintaining a list of peer computers that have previously downloaded at least a portion of the data, wherein the list records which partial portions of the data each of the other computers has received; selecting a set of the peer computers based on the record of which partial portions of the requested data each of the peer computers has downloaded, wherein the set of peers includes a first peer computer that has downloaded at least a first partial portion downloaded and a second peer computer that has downloaded at least a second partial portion without downloading the first partial portion; independently encoding the different portions of the data at the peer computers prior to receiving all of the data at the peer computers; and sending the encoded different portions of the data from at least two different ones of the peer computers to the requesting computer and completing the download of the remaining portions of the data with the peer computers. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25)
-
-
26. A method of using a computer for dynamically transferring data, comprising:
-
sending a request for data to a targeted computer capable of servicing the request; receiving encoded data packets from at least two different sending computers that have previously downloaded different portions of the data from the targeted computer, wherein the sending computers include a first sending computer that has downloaded at least a first partial portion and a second sending computer that has downloaded at least a second partial portion without downloading all of the first partial portion, wherein the sending computers send the downloaded different portions of the data and complete downloading of the remaining portions of the data; decoding the received encoded data; and saving the decoded data in memory. - View Dependent Claims (27, 28, 29, 30, 31, 32, 33, 34)
-
-
35. A system for using a computer for transferring data, comprising:
-
means to send a request for data from a requesting computer to a targeted computer; means to access a look-up list to identify other computers that have previously downloaded at least a portion of the requested data from the targeted computer, wherein the other computers includes a first peer computer that has downloaded at least a first partial portion and a second peer computer that has downloaded at least a second partial portion having at least some data different from the first partial portion; means to send requests to the identified computers; means to send the first partial portion of the data from the first peer computer and at least some of the second partial portion from the second peer computer to the requesting computer and complete downloading of the remaining portions of the data within the identified computers; means to receive the different partial portions of the data from identified computers; means to save the data in memory. - View Dependent Claims (36, 37, 38, 39, 40, 41, 42, 43)
-
-
44. A system for using a computer for transferring data, comprising:
-
means to receive a request for data from a computer; means to access a look-up list to identify a set of peer computers that have previously requested and downloaded at least a portion of the data, wherein the set of peer computers includes a first peer computer that has downloaded at least a first partial portion downloaded and a second peer computer that has downloaded at least a second partial portion without downloading all of the first partial portion; means to initiate transfer of the previously downloaded portions of data from identified computers to the requesting computer, wherein the identified computers have only downloaded different partial portions of the requested data; and means to send the portions of the data from the identified computers to the requesting computer and complete downloading of the remaining portions of the data. - View Dependent Claims (45, 46, 47, 48, 49, 50, 51)
-
-
52. A system for transferring data from a set of peer computers to a requesting computer, comprising:
-
means to receive at a source computer a request to download data, wherein the source computer maintains a list of peer computer that have previously downloaded at least a portion of the data, wherein the list of peer computers specifies a first peer computer and a second peer computer, wherein, at the time of the request, the first peer computer has downloaded a first portion and the second peer computer has downloaded a second portion without downloading all of the first portion; means to encode the data at the peer computers for network data transmission; means to send the encoded data from the peer computers to a requesting computer and complete the download of the remaining portions of the data. - View Dependent Claims (53, 54, 55, 56, 57, 58, 59)
-
-
60. A system for dynamically transferring data from a set of peer computers to a requesting computer, comprising:
-
means to send a request for data to a targeted computer capable of servicing the request; means to receive data packets from sending computers that have previously downloaded different portions of the data from the targeted computer, wherein the sending computers include a first peer computer that has downloaded a first portion and a second peer computer that has downloaded a second partial portion without downloading all of the first portion, wherein the sending computers send the data packets of the downloaded different portions and complete the download of the remaining portions of the data; means to decode the received data; and means to save the decoded data memory. - View Dependent Claims (61, 62, 63, 64, 65, 66, 67, 68)
-
-
69. A program stored on a medium readable by a processor, the program comprising:
-
a module to send a request for data to a targeted computer system; a look-up list that references other peer computers that previously downloaded different partial portions of the requested data and initiates transfer from the identified peer computers to the requesting computer while the identified peer computers complete the download of the remaining portions of the data, the peer computers including a first peer computer that has downloaded a first portion of the data and a second peer computer that has downloaded a second portion of the data without downloading all of the first portion; a module to receive the encoded data from identified peer computers; a module to decode the received encoded data; and a module to save the decoded data in memory. - View Dependent Claims (70, 71, 72, 73, 74, 75, 76, 77)
-
-
78. A program stored on a medium readable by a processor, the program comprising:
-
a module to receive a request for data from a requesting computer having one or more peer computers; a module to identify which of the peer computers have previously requested and downloaded the data; and a module to send requests to the identified peer computers to direct the peer computers to encode the data using an acknowledgement independent equalized data packet encoding scheme and send the encoded data to the requesting computer, wherein the identified computers have received different partial portions of the requested data, wherein the identified computers include a first peer computer has downloaded at least a first portion and a second peer computer that has downloaded a second portion without downloading all of the first portion, and wherein the identified computers send the encoded data to the requesting computer and complete the download of the remaining portions of the requested data. - View Dependent Claims (79, 80, 81, 82, 83, 84, 85)
-
-
86. A program stored on a medium readable by a processor of a first peer computer of a peer to peer network, the program comprising:
-
a module to download data from a source computer; a module to receive a request to transfer at least some of the data to a second peer computer, wherein the module receives the request after downloading a first portion of the data and before completing the download of the data, wherein, at the time of the request, the first peer computer has downloaded the first portion and the second peer computer has downloaded a second portion without downloading all of the first portion; a module to encode the previously downloaded first portion of the data; and a module to send the encoded data to the second peer computer and complete the download of any remaining portion of data. - View Dependent Claims (87, 88, 89, 90, 91, 92, 93)
-
-
94. A program stored on a medium readable by a processor of a computer having a plurality of peer computers, the program comprising:
-
a module to send a request for data to a targeted computer capable of servicing the request; a module to receive encoded data packets from the peer computers that previously downloaded different partial portions of the data from the targeted computer and have not completed the download, the module configured to receive data packets from at least a first peer computer that has downloaded a first portion and a second peer computer that has downloaded a second portion without downloading all of the first portion, wherein the sending computers send the data packets of the downloaded different portions and complete the download of the remaining portions of the data; a module to decode the received encoded data; and a module to save the decoded data in memory. - View Dependent Claims (95, 96, 97, 98, 99, 100, 101, 102)
-
-
103. A network, transmission apparatus comprising:
-
a processor; a memory communicatively connected to the processor; a program, stored in the memory, including, a module to send a request for data to a targeted computer system; a look-up list that references other peer computers that previously downloaded portion of the requested data, wherein the list of peer computers specifies that a first peer computer and a second peer computer, the first peer computing having downloaded at least a first portion and the second peer computer having downloaded at least a second portion without downloading all of the first portion; a module that initiates transfer from the identified peer computers to the requesting computer using an encoding scheme; a module to receive the encoded data from identified peer computers, wherein the identified computers have received different partial portions of the requested data from the targeted computer system, and wherein the identified peer computers send encoded partial portions of the data and complete downloading the remaining portions of the data from the targeted computer system; a module to decode the received encoded data; and a module to save the decoded data in memory. - View Dependent Claims (104, 105, 106, 107, 108, 109, 110, 111)
-
-
112. A network transmission apparatus, comprising:
-
a processor; a memory, communicatively connected to the processor; a program, stored in the memory, including; a module to receive a request for data from a requesting computer having one or more peer computers; a module to identify which of the peer computers have previously requested and downloaded the data; and a module to send requests to the identified peer computers to direct the peer computers to send the data to the requesting computer, wherein the identified peer computers have downloaded different partial portions of the requested data, and the identified peer computers include a first peer computer that has downloaded a first portion and a second peer computer has downloaded a second partial portion without downloading all of the first portion, and wherein the identified computers send the data to the requesting computer and complete downloading the remaining portions of the requested data. - View Dependent Claims (113, 114, 115, 116, 117, 118, 119)
-
-
120. A network transmission apparatus, comprising:
-
a processor; a memory, communicatively connected to the processor; a program, stored in the memory, including, a module to download data from a source computer; a module to receive a request from the source computer to transfer the data to a peer computer that has already downloaded one or more portions of the data, wherein the module receives the request after downloading a portion of the data that includes at least some data different from the data downloaded by the peer computer; a module to encode the previously downloaded partial portion of the data; and a module to send the encoded partial portion of the data to the peer computer and complete the download of the remaining portion of the data. - View Dependent Claims (121, 122, 123, 124, 125, 126, 127)
-
-
128. A network transmission apparatus, comprising:
-
a processor; a memory, communicatively connected to the processor; a program, stored in the memory, including, a module to send a request for data to a targeted computer capable of servicing the request; a module to receive data packets from at least a first peer computer that has downloaded a first portion and a second peer computer that has downloaded a second portion without downloading all of the first portion, a module to decode the received data; and a module to save the data in memory. - View Dependent Claims (129, 130, 131, 132, 133, 134, 135, 136)
-
-
137. A method for distributing a data within a computer network, the method comprising:
-
storing, at a starting computer, original data; maintaining a table to store at least an address of computers that can transmit portions of the stored data; receiving requests for the data from a first requesting computer and a second requesting computer; delivering a first portion of data from the starting computer to the first requesting computer; delivering a second portion of the data to the second requesting computer; and prior to delivering all of the data to either the first requesting computer or the second requesting computer, exchanging the first portion and the second portion of the data between the first requesting computer and the second requesting computer.
-
-
138. A download method for a file in a computer network comprising:
-
storing, at a starting computer, a file; receiving a first file download request from a first computer; downloading, from the starting computer, a first portion of the file to the first computer; upon downloading the first portion of the file at the first computer, updating a table to record that the first portion of the file was received; receiving a second download request from a second computer; downloading a second portion of the file to the second computer, the first portion containing at least some data of the original file not contained within the second portion; upon downloading the second portion of the file at the second computer, updating a table to record that the second portion of the file was received; issuing a request from the second computer to the first computer for the data of the file not contained within the second portion; and prior to downloading the entire file at the first computer, communicating, from the first computer to the second computer, at least some of the data of the original file not contained within the second portion. - View Dependent Claims (139)
-
Specification