분산 시스템에서는 상호 프로세스 간 통신
이 핵심이다.
이 통신은 항상 기본 네트워크에서 제공하는 저수준 메시지 전달(low-level message passing)
을 기반으로 한다.
현재 컴퓨터 네트워크의 통신 기능을 사용하여 대규모 분산 애플리케이션을 개발하는 것은 매우 어렵다.
세 가지 널리 사용되는 통신 모델이 있다.
첫째는 원격 프로시저 호출(Remote Procedure Call, RPC)
이다.
이 모델은 메시지 전달의 복잡성을 숨기는 것을 목표로 한다.
둘째는 메시지 지향 미들웨어(Message-Oriented Middleware, MOM)
이다.
이 모델은 고수준 메시지 큐 모델을 사용한다.
셋째는 데이터 스트리밍
이다.
이 모델은 다양한 타이밍 제약 조건에 따라 연속적인 메시지 흐름을 지원할 수 있다.
또한 멀티캐스트는 데이터 전파를 위한 혁신적이고 우아한 솔루션이다.
Layered protocols
분산 시스템에서의 통신은 공유 메모리의 부재로 인해 모두 메시지를 송수신하는 것에 기반한다.
통신하는 프로세스 간의 합의
는 여러 측면에서 필요하다. 이는 전송되는 비트의 의미, 0비트와 1비트를 나타내기 위해 사용되는 전압, 수신자가 메시지의 마지막 비트를 어떻게 알 수 있는지, 메시지가 손상되거나 손실된 경우 수신자가 어떻게 감지할 수 있는지, 숫자, 문자열 및 기타 데이터 항목의 길이와 표현 방법 등이 포함된다.
이러한 합의는 다양한 수준에서 필요하다. 국제 표준화 기구(ISO)는 각 수준을 명확하게 식별하고 표준 이름을 부여하며, 각 수준이 어떤 작업을 수행해야 하는지를 지침으로 제공하는 참조 모델인 개방 시스템 상호 연결 참조 모델(Open System Interconnection Reference model, OSI 모델)
을 개발했다.
OSI 모델은 현재 사실상 사용되지 않는다. 그러나 기본 모델 자체는 컴퓨터 네트워크를 이해하는 데 매우 유용하다. 이 모델은 전송 및 수신되는 메시지의 형식, 내용 및 의미를 규정하는 표준 규칙을 위해 설계되었다. 이러한 규칙은 프로토콜로 형식화된다.
통신은 일반적으로 연결 지향 프로토콜(예: 전화)
과 비연결 지향 프로토콜(예: 편지)
로 나뉜다. OSI 모델은 일곱 개
의 계층으로 구성된다.
송신 측 절차
는 다음과 같다. 소스 기계의 프로세스가 메시지
를 구성하고, 응용 계층에서 메시지를 소스 기계의 응용 계층으로 전달한다. 응용 계층 소프트웨어는 메시지 앞에 헤더를 추가하고, 결과적으로 생성된 메시지를 하위 계층
으로 전달한다. 메시지가 하위 계층에 도달하면 실제로 메시지를 전송한다.
수신 측 절차
는 다음과 같다. 수신된 메시지가 상위 계층
으로 전달되고, 각 계층은 자체 헤더를 제거
하고 분석한다. 마지막으로 메시지는 대상 프로세스에 도달한다. 각 계층의 헤더에 있는 정보는 해당 계층의 프로토콜에 사용된다.
계층화된 프로토콜의 장점은 각 계층이 다른 계층과 독립적
으로 작동하고 변경될 수 있다는 것이다. 예를 들어, 두 회사 간의 통신에서 사장님들은 우편 서비스를 통해 명령을 내리고 비서들은 서로를 거슬러 통신하도록 한다. 그러나 우편 서비스가 저하되면 두 비서는 상사들에게 거지 않고 이메일을 통해 통신하도록 결정할 수 있다. 상사들은 결정에 영향을 주지 않고 메시지 내용을 변경할 수 있다.