This document discusses communication in distributed systems. It begins with an introduction that describes how distributed computing will be central to many critical applications but also faces challenges around reliability and scalability. The document then covers communication protocols and architectures for distributed systems, including layered, object-based, data-centered, and event-based styles. It also discusses topics like reliability, communication in groups, and order of communication. The conclusion restates that the best architecture depends on application requirements and environment.