ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [원격 프로시서 호출] [RPC 개념] RPC란 무엇인가??
    C_C++ 프로그래밍/뇌를 자극하는 TCP_IP 2019. 6. 16. 21:15

          로재의 개발 일기      

    RPC란?



    네트워크로부터 떨어져 있는 컴퓨터에서 코드를 실행하는 방식으로,

    원격 프로시저 콜 (Remote procedure call) 줄여서 RPC입니다.

    네트워크 서버 프로그램에서, 작업 코드를 메인 코드와 독립을 시켜

    경우에 따라서 Code1과 Code2를 실행이 가능하게 됩니다.

    이때 Code1은 네트워크 연결, Code2는 코드의 실행을 담당하는 부분으로 세부적으로 나눌 수 있게 됩니다.

    이를 위해서 만들어진 네트워크 프로그래밍 개발 도구가 RPC입니다.


      RPC 작동 방식

      RPC는 외부의 프로그램을 실행시키는 개념이기 때문에, 프로그램의 이름과 실행 인자가 필요하게 됩니다.

    따라서 RPC를 이용한 네트워크 프로그램은 실행 인자와 실행할 코드를 명확하게 해야 할 필요가 있습니다.

    하지만, 이것은 XDR이라는 표준화된 양식에 따라서 작성하면 됩니다.


    External Data Representation (XDR)을 사용하는 이유?

    클라이언트의 요청은 XDR이라는 이름을 가진 필터를 통과해서 인코딩이 된 이후에 전달이 됩니다.

    이때 컴퓨터마다 계산 처리 방식이 다르기 때문에, 표준화 처리 작업이 필요하게 됩니다.

    그래서 등장한 것이 XDR이며

    이를 통해서 서로 다른 컴퓨터에서도 데이터가 정확히 해석될 수 있도록 합니다.




      RPC 환경 구축

    1
    sudo apt-get install portmap
    cs

    portmap을 설치합니다.

    ( RPC Program의 Number를 인터넷 Port Number로 변환해 준다)


    이후에 prog.x 파일을 생성하여 코드를 작성한다.

    ( XDR 파일의 주석은 /* */만 가능하다)


    1
    rpcgen prog.x
    cs

    이제 ls 명령을 통해서 프로그램 목록을 확인 해보면 4개의 파일이 생성되었을 것이다.

    prog.h : prog의 해석을 통해서 만들어진 각종 함수와 값들이 담긴다.

    prog_clnt.c : prog를 해석해서 만들어진 클라이언트 프로그램이다. (코드를 추가하자)

    prog_svc.c :  prog를 해석해서 만들어진 서버 프로그램이다. (코드를 추가하자)

    prog_xdr.c : 서버와 클라이언트에서 사용할 xdr 코드가 들어있다. (개발자가 수정할 필요는 없다)






    마무리

    - RPC에 대해서 공부를 더 진행하고 이후에 코드를 작성하여 실습을 진행해 보겠습니다.

    생각보다 어렵네요.


    관련글

    1.xdr references

    https://tools.ietf.org/html/rfc1014

    2. rpc references

    https://web.cs.wpi.edu/~cs4514/b98/week8-rpc/week8-rpc.html

    https://users.cs.cf.ac.uk/Dave.Marshall/C/node33.html


    ※ 본 글은 개인 포트폴리오 혹은 공부용으로 사용하기 때문에, 무단 복사 유포는 금지하지만, 개인 공부 용도로는 얼마든지 사용하셔도 좋습니다




    반응형
Designed by Tistory.