-
클라이언트 서버 환경에서 통신운영체제/프로세스 2018. 2. 3. 16:34
클라이언트 서버에서 사용 가능한 통신 방식은 세 가지가 있다.
이 세가지는 소켓, 원격 프로시저 호출, 파이프 이다.
소켓
소켓은 각 통신의 극점을 정의한다.
각 소켓은 IP주소와 포트 번호 두 가지를 접합해서 구별한다.
두 프로세스가 네트워크상에서 통신하기 위해서는 소켓이 두 개 필요하다.
프로세스들은 소켓을 통해서 네트워크로 메시지를 송수신한다.
소켓의 단점
소켓은 스레드들 간에 구조화 되지 않은 바이트 스트림만을 통신하도록 한다.
원시적인 바이트 스트림 데이터를 구조화하고 해석하는 것은 클라이언트와 서버의 책임이 된다.
원격 프로시저 호출
RPC는 네트워크에 연결되어 있는 두 시스템 사이의 통신을 위해 프로시저 호출을 추상화 하기 위한 방편으로 설계되었다.
RCP는 클라이언트가 원격 호스트의 프로시저를 마치 자신의 프로시저처럼 호출한다.
스텁
RCP에서 원격 프로시저들은 스텁을 가진다.
스텁은 원격 호출을 대행해주는 프록시 역할을 한다.
클라이언트 스텁은 원격 서버의 포트를 찾고 매개변수를 정돈한다.
서버측 스텁은 메시지를 수신한 후 정돈된 매개변수를 해제하고 서버의 프로시저를 호출한다.
파이프
파이프는 두 프로세스가 서로 통신이 가능하도록 전달자 역할을 한다.
일반 파이프
일반 파이프는 생성한 프로세스 이외에는 접근할 수 없다.
일반적으로 부모 프로세스가 파이프를 생성하고 파이프를 사용하여 자식 프로세스와 통신한다.
생산자 - 소비자 형태로 두 프로세스 간의 통신을 허용한다.
일반 파이프는 단 방향 통신만 가능하다.
윈도우 시스템에서는 익명 파이프 라고 한다.
지명 파이프
프로세스들 간에 자유롭게 접근 가능하다.
양방향 통신이 가능하다.
여러 프로세스들이 지명 파이프를 사용하여 통신이 가능하다.
댓글