DCN-클라이언트 서버 모델
두 개의 원격 애플리케이션 프로세스는 주로 두 가지 다른 방식으로 통신 할 수 있습니다.
Peer-to-peer: 두 원격 프로세스는 동일한 수준에서 실행되고 일부 공유 리소스를 사용하여 데이터를 교환합니다.
Client-Server: 하나의 원격 프로세스는 클라이언트 역할을하며 서버 역할을하는 다른 응용 프로그램 프로세스에서 일부 리소스를 요청합니다.
클라이언트-서버 모델에서 모든 프로세스는 서버 또는 클라이언트로 작동 할 수 있습니다. 서버를 만드는 것은 기계의 유형, 기계의 크기 또는 컴퓨팅 성능이 아닙니다. 기계를 서버로 만드는 것은 요청을 처리하는 능력입니다.
시스템은 서버와 클라이언트로 동시에 작동 할 수 있습니다. 즉, 한 프로세스가 서버 역할을하고 다른 프로세스가 클라이언트 역할을합니다. 이는 클라이언트와 서버 프로세스가 모두 동일한 시스템에 상주하는 경우에도 발생할 수 있습니다.
통신
클라이언트-서버 모델의 두 프로세스는 다양한 방식으로 상호 작용할 수 있습니다.
Sockets
원격 프로 시저 호출 (RPC)
소켓
이 패러다임에서 서버 역할을하는 프로세스는 잘 알려진 (또는 클라이언트에 의해 알려진) 포트를 사용하여 소켓을 열고 일부 클라이언트 요청이 올 때까지 기다립니다. 클라이언트 역할을하는 두 번째 프로세스도 소켓을 열지 만 들어오는 요청을 기다리는 대신 클라이언트가 '먼저 요청'을 처리합니다.
요청이 서버에 도달하면 서비스가 제공됩니다. 정보 공유 또는 리소스 요청 일 수 있습니다.
원격 프로 시저 호출
이것은 프로 시저 호출을 통해 한 프로세스가 다른 프로세스와 상호 작용하는 메커니즘입니다. 한 프로세스 (클라이언트)가 원격 호스트에있는 프로 시저를 호출합니다. 원격 호스트의 프로세스를 서버라고합니다. 두 프로세스 모두 할당 된 스텁입니다. 이 통신은 다음과 같은 방식으로 발생합니다.
클라이언트 프로세스는 클라이언트 스텁을 호출합니다. 로컬 프로그램과 관련된 모든 매개 변수를 전달합니다.
그런 다음 모든 매개 변수가 압축 (마샬링)되고 네트워크의 다른쪽에 전송되도록 시스템 호출이 이루어집니다.
커널은 네트워크를 통해 데이터를 보내고 다른 쪽 끝은 데이터를받습니다.
원격 호스트는 데이터가 마샬링되지 않은 서버 스텁으로 데이터를 전달합니다.
매개 변수가 프로 시저로 전달되고 프로 시저가 실행됩니다.
결과는 동일한 방식으로 클라이언트로 다시 전송됩니다.