Computer networks and distributed processing : software techinques, and architecture