The file is split into fixed-size chunks. Each chunk's real bytes are hashed with FNV-1a into a checksum before it is ever sent — that checksum is the contract the server checks on receipt:
h = 0x811c9dc5
for each byte b: h = (h XOR b) * 0x01000193
checksum = h >>> 0
Every send attempt can independently drop (never arrives) or get corrupted in transit (one byte flips) with probability equal to the packet-loss slider. On arrival the server recomputes FNV-1a over the bytes it actually received and compares it to the expected checksum; a mismatch is a genuine hash inequality, not a scripted flag, so only chunks that truly round-trip intact get acknowledged. A failed attempt is retried with exponential backoff, min(0.5 * 2^k, 6) seconds, up to 5 attempts before the chunk is abandoned.
The server keeps a bitmap of which chunk indices it has actually acknowledged — this is the real resumability mechanic. Hitting Drop connection tears down the link mid-transfer: any chunk still in flight or backing off reverts to pending, but every bit already set in the server's bitmap stays set. Resume upload re-opens the connection and re-queues only chunks the bitmap still marks missing; the bytes behind already-set bits are counted as "saved" instead of being re-uploaded, which is the entire point of resumable transfer over restart-from-zero.
- Chunk size — smaller chunks lose less work per drop but add more round trips.
- Parallel connections — more concurrent chunks finish faster but each shares the same loss probability independently.
- Packet loss — probability any single attempt is dropped or corrupted in transit.
- Latency — round-trip time for one attempt to resolve, success or failure.