코가손의 블로그

[운영체제] 프로세스간 통신 소켓(Socket)과 RPC 본문

운영체제

[운영체제] 프로세스간 통신 소켓(Socket)과 RPC

Cogason 2021. 12. 26. 16:56

소켓(Socket)

네트워크상 존재하는 컴퓨터 2대의 컴퓨터 A, B의 존재를 특정해야 하는 상황을 생각해보자.

컴퓨터는 IP주소를 통해 특정한다.

그리고 Port로 컴퓨터 A, B를 잇는 파이프를 특정한다.

 

컴퓨터 A와 B의 통신을 위해 파이프 형태의 연결을 생성한다.

일종의 Pipe이며 IP주소와 Port로 바인딩 된 것을 소켓이라고 한다.

 

RPCs(Remote Procedure Calls)

A컴퓨터는 32비트 빅-엔디안 방식으로 "Hello B"를 보내고

B컴퓨터는 64비트 리틀-엔디안 방식이라고 가정한다면

통신이 이루어지기 전에 이 규격의 호환성을 맞추는 작업을 해야 할 것이다.

이것을 위해 등장한 개념이 RPC이다.

 

RPC는 네트워크 상의 다른 PC의 프로시저를 추상화한다.

쉽게말하자면 클라이언트가 원격에 있는 컴퓨터의 함수를 호출하는 것이다.

 

함수를 호출하기 위한 과정에는 함수명, 매개변수 전달, 리틀엔디안/빅엔디안 방식의 조율 등이 있을 것이고

원격 서비스를 이용하기 위해 주고받을 이 묶음 데이터를 정리해야한다.

이것을 marshals 라고 한다.

marshaling된 데이터를 클라이언트->서버, 서버->클라이언트로 전송하게 된다.

 

 

 

 

 

Comments