IP Library Granted Patent US 12665945
Granted Patent B2
US 12665945 · App. 18/776,192 · Granted Jun 23, 2026

Peer-to-peer (P2P) downloading

Inventor: Yoav Landman (Netanya, IL)
Assignee: JFrog Ltd.
H04L67/1074H04L9/3263
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12665945
App. No.
18/776,192
Granted
Jun 23, 2026
Kind
B2
Abstract

The present disclosure provides a method, system, and device for peer-to-peer downloading across a network. To illustrate, a server may receive a request from a peer device for at least a portion of a file. The server may send, to the peer device, download information including a checksum corresponding to the portion of the file, a token corresponding to authorization for the peer device to perform P2P communication, an indicator that identifies at least one device that includes the portion of the file, or a combination thereof. The server may update tracking information to indicate that the peer device received the portion of the file.

Claims (77)

1 . A method for peer-to-peer (P2P) downloading, comprising:

receiving, by a peer device, a signed public key of the peer device;

sending, from the peer device, a download request for a file;

receiving, at the peer device, download information and an indicator, where the download information includes a checksum corresponding to at least a portion of the file, and where the indicator identifies at least one device that stores the portion of the file;

requesting, by the peer device, the portion of the file from the at least one device based on a peer group size of a group of peer devices that store one or more portions of the file, wherein requesting the portion of the file from the at least one device uses a selected window size that is based on the peer group size of the group of peer devices that store the one or more portions of the file; and

receiving, at the peer device from the at least one device, the portion of the file via encrypted communication using the signed public key of the peer device.

2 . The method of claim 1 , further comprising: sending, from the peer device, downloaded file information indicating that the peer device verified, based on the checksum, receipt of the portion of the file from the at least one device.

3 . The method of claim 1 , further comprising: prior to receiving the signed public key, sending, by the peer device, a public key of the peer device.

4 . The method of claim 1 , wherein requesting the portion of the file from the at least one device based on the peer group size includes:

sending, from the peer device, a first request for the portion of the file to a first device of the at least one device, wherein a first size of the portion of the file is based on the peer group size; and

sending, from the peer device, a request for a second portion of the file to a second device of the at least one device.

5 . The method of claim 1 , where the download information includes: a corresponding checksum for each portion of the file; and a total checksum for the entirety of the file.

6 . The method of claim 1 , where the file comprises a container file.

7 . The method of claim 1 , further comprising:

receiving, by the peer device, a container-layer download command; and

translating, by the peer device, the container-layer download command to a direct file download request.

8 . The method of claim 1 , wherein the indicator comprises a bitset that indicates which portions of the file are at the at least one device.

9 . The method of claim 1 , further comprising:

receiving, at the peer device, a token; determining, by the peer device, whether the token is valid; and

based on a determination that the token is expired, sending, from the peer device, a request to renew the token.

10 . The method of claim 1 , further comprising:

identifying, by the peer device, the at least one device based on the indicator; and

establishing, by the peer device, an encrypted communication link to enable P2P communications between the peer device and the at least one device.

11 . The method of claim 1 , further comprising:

determining, by the peer device, a number of peer devices with which the peer device has established connections;

comparing the number to a threshold; and

based on the number being less than or equal to the threshold, sending, from the peer device, a request to identify one or more additional peer devices that store the portion of the file.

12 . The method of claim 1 , further comprising:

selecting, by the peer device, the portion to be requested from multiple portions of the file based on an index value corresponding to the portion.

13 . The method of claim 1 , where the encrypted communication with the at least one device comprises a Secure Sockets Layer (SSL)-encrypted P2P communication.

14 . The method of claim 1 , wherein requesting the portion of the file includes requesting one or more windowed portions of the file, wherein a windowed portion of the one or more windowed portions includes two or more portions of the file, and wherein the download information includes a checksum for each portion of the two or more portions, of each windowed portion.

15 . The method of claim 14 , wherein the one or more windowed portions of the file are determined based on a window size selected by the peer device, and wherein the window size is determined based on the peer group size of the group of peer devices.

16 . The method of claim 14 , wherein requesting the portion of the file includes requesting a first windowed portion of the file from a first device from among the group of peer devices and a second windowed portion of the file from a second device from among the group of peer devices, and wherein the first windowed portion or the second windowed portion include the portion of the file.

17 . The method of claim 1 , further comprising:

receiving, by the peer device, peer information identifying one or more devices from among the group of peer devices that store the one or more portions of the file and which portion or portion of the one or more portions of the file each of the one or more devices store; and

selecting two or more portions of the file as a windowed portion based on the peer information, and wherein requesting the portion of the file from the at least one device includes requesting the windowed portion from a particular device of the one or more identified devices.

18 . A peer device for peer-to-peer (P2P) downloading, comprising:

at least one memory storing instructions; and

one or more processors coupled to the at least one memory, the one or more processors configured to execute the instructions to:

receive a signed public key of the peer device;

send a download request for a file;

receive download information and an indicator, where the download information includes a checksum corresponding to at least a portion of the file, and where the indicator identifies at least one device that stores the portion of the file;

request the portion of the file from the at least one device based on a peer group size of a group of peer devices that store one or more portions of the file, wherein to request the portion of the file from the peer device uses a selected window size that is based on the peer group size of the group of peer devices that store the one or more portions of the file; and

receive, from the at least one device, the portion of the file via encrypted communication using the signed public key of the peer device.

19 . The peer device of claim 18 , where the indicator comprises a bitset that indicates which portions of the file are available from which devices to enable a request for P2P downloading of the file for streaming.

20 . The peer device of claim 18 , where the one or more processors are further configured to: select the portion to be requested from multiple portions of the file based on a rarity of the portion.

21 . The peer device of claim 18 , where the one or more processors are further configured to:

verify, based on the checksum, the portion of the file received from the at least one device; and

send downloaded file information indicating that receipt of the portion of the file from the at least one device is verified.

22 . The peer device of claim 18 , where the one or more processors are further configured to:

verify, based on the checksum, the portion of the file received from the at least one device; receive one or more remaining portions of the file.

23 . The peer device of claim 18 , where the at least one device comprises a first peer device and a second peer device, and where the one or more processors are further configured to:

receive portions of the file from the first peer device, the second peer device, or both.

24 . A method for facilitating peer-to-peer (P2P) downloading, comprising:

receiving, at a server, a public key from a peer device;

sending a signed public key of the peer device, the signed public key signed by the server;

receiving a download request for a file;

identifying at least one device that stores at least a portion of the file;

generating download information including a checksum corresponding to at least the portion of the file;

generating an indicator that identifies the at least one device;

sending the download information and the indicator; and

sending, from the server to the peer device, a peer group size for the peer device to use when requesting the portion of the file using a selected window size based on the peer group size, the peer group size being of a group of peer devices that store one or more portions of the file.

25 . The method of claim 24 , further comprising:

receiving, at the server from the peer device, downloaded file information indicating that the peer device verified receipt of the portion of the file from the at least one device.

26 . A server for facilitating peer-to-peer (P2P) downloading, comprising:

at least one memory storing instructions; and

one or more processors coupled to the at least one memory, the one or more processors configured to execute the instructions to:

receive a public key from a peer device;

send a signed public key of the peer device, the signed public key signed by the server;

receive a download request for a file;

identify at least one device that stores at least a portion of the file;

generate download information including a checksum corresponding to at least the portion of the file;

generate an indicator that identifies the at least one device;

send, to the peer device, the download information and the indicator; and

send, to the peer device, a peer group size for the peer device to use when requesting the portion of the file using a selected window size based on the peer group size, the peer group size being of a group of peer devices that store one or more portions of the file.

27 . The server of claim 26 , where the one or more processors are further configured to:

receive, from the peer device, downloaded file information indicating that the peer device verified receipt of the portion of the file from the at least one device.