In this book, Tanenbaum and van Steen provide full coverage of the field in a systematic way that can be readily used for teaching. It examines the underlying principles - and their applications to a wide variety of practical distributed systems - with this level of depth and clarity.