[운영체제] IPC 통신 방법 (Socket과 RPC)

moonee·2021년 7월 31일
0

운영체제

목록 보기
4/10

1. Socket

  • 통신을 위한 양종단 (endpoints)을 의미하며, 파이프 형태의 연결이다.
  • A 컴퓨터와 B 컴퓨터를 연결 할 때, 각 컴퓨터를 특정하는 것이 IP 주소이고 A컴퓨터와 B컴퓨터를 연결하는 파이프를 특정한 것이 Port 이며, 이 IP 주소와 Port를 하나로 묶어서 특정한 것이 소켓이다.
  • 하지만, 원격지에 있는 컴퓨터와 bit가 다르다면 소켓을 일일이 지정해줘야하는 문제점이 있다.


2. RPC (Remote Procedure Calls)

  • 연결된 컴퓨터에 있는 프로세스 간의 원격 호출을 추상화한 것을 RPC 라고 한다.
  • 원격 프로세스 간 통신 기능을 쉽게 구현할 수 있어서, 분산 처리 환경에서 주로 사용된다.
    - 분산 처리 환경 : 네트워크 상 여러 요소들을 하나의 시스템처럼 활용 가능한 환경
  • 클라이언트에서 서버의 프로시저를 호출하는 기능 제공
  • 원격에 있는 프로그램을 로컬에 있는 것 처럼 사용할 수 있다.
    • 다시 말해서, 연결된 시스템간의 관계가 너무 돈독해지며 독립적인 REST 방식보다 CRUD에 있어서 신속하지 못한 단점으로 작용한다.



RPC 과정

  1. 클라이언트가 클라이언트 스텁 프로시저를 작동시키고, 파라미터를 전송한다
  2. 클라이언트 스텁이 메세지에 파라미터를 Marshall (pack) 한다.
    • Marshall : 파라미터 값을 표준화 된 형식으로 변환시키고, 각 파라미터를 메시지에 복사하는 과정
  3. 클라이언트 스텁이 메시지를 전송 계층에 넘겨준다. 전송계층은 해당 메시지를 원격 서버 기계에 보낸다.
  4. 서버 측에서 전송 계층이 받아온 메시지를 서버 스텁에 넘겨준다. 이 때 서버 스텁은 메시지를 deMarshall (unpack) 한다.
  5. 서버 프로시저가 종료되면, 서버 스텁을 반환하고 서버 스텁은 반환 값을 Marshall 하여 메시지에 담는다. 그리고 이 메세지를 전송 계층에 전달한다.
  6. 전송 계층은 반환 값을 다시 클라이언트 측 전송 계층에 전달하고 , 클라이언트 측 전송 계츠은 ㅂ받은 메시지를 클라이언트 스텁에 전달한다.
  7. 클라이언트 스텁은 받아온 반환 파라미터값을 demashall 하고, 실행한다.


헷갈리는 점

  1. 프로시저와 함수의 차이
    • 함수 : 특정 값을 계산하며 리턴 값이 있다. 함수는 기능을 통해서 어떠한 결과를 수행하는 것을 목적으로 한다.
    • 프로시저 : 특정 작업을 수행하며 리턴 값이 없다. 리턴 값이 없기 때문에 수행하는 절차 그 자체를 목적으로 한다.
  2. 클라이언트 스텁과 서버 스텁
    • 클라이언트 스텁은 메인 프로그램에 의해 호출되어 프로시저 역할과 파라미터를 전송하는 역할
    • 서버 스텁은 데이터를 받고 로컬에 지정된 프로시저를 호출하는 역할
  3. Marshalling
    • 하나의 언어로 작성된 프로그램의 출력 파라미터를 다른 언어로 작성된 프로그램의 입력값으로 전달 할 때 필요하다.
    • 즉 표준화된 형태로 인코딩(XDR)


참고/ 이미지 출처

profile
기록

0개의 댓글