Improving Performance Of Peer-To-Peer Systems By Caching