As I was reading this I realised that everything here had already been solved - by torrents.
Everything is split into chunks. Downloads and uploads happen whenever connections can happen. If someone local has a copy, they can seed it to you without you needing an external connection. You can have a cache server that downloads important stuff for everyone.
Everything is split into chunks. Downloads and uploads happen whenever connections can happen. If someone local has a copy, they can seed it to you without you needing an external connection. You can have a cache server that downloads important stuff for everyone.