Data caching is an optimization for any peer-to-peer application that is transmitting bulk data; it would be a significant advance to make sure that a program does not have to retransmit or resend data to another host a problem solved in the disclosed application. [0046] If a user runs a Gnutella node at home, they may want to specify that it can use only 50% of my bandwidth.