본문 바로가기

프로그래밍/네트워크

네트워크(4) - 프로세스 간 통신(Processes Communicating)

이번 글에서는 프로세스 간에 어떻게 통신을 하는가에 대해 알아보자.

 

 


 

알아보기 전 운영체제에서 배우는 프로그램, 프로세스에 대해 한 번 짚고 넘어가보자.

 

프로그램이란 우리가 일반적으로 생각하는 프로그램이 맞다. 카카오톡도 프로그램이고 워드 엑셀 역시 프로그램이다.

프로세스란 호스트 내에서 돌아가고 있는 프로그램이다. 같은 호스트 내에서 복수개의 프로세스가 돌아갈 수 있는데,

두 개의 프로세스가 내부적으로 통신이 가능하다.

 

전에 배웠던

client-server 구조는 server는 데이터를 제공하기 위해, client 는 데이터를 받기 위해 둘의 프로세스가 다르다.

P2P 구조는 서버 모듈 클라이언트 모듈 모두 가지고 있다.

 

다른 호스트들에 있는 프로스세와는 메세지 교환을 통해 통신이 가능한데

소켓(Socket)을 통해 메세지를 보내고 받는다.

 

 

 

 


Socket

간단하게 생각해서 messages를 주고받는 경로라고 생각하면 된다.

socket을 통해서 어떻게 갈까? 아래 transport를 통해서 전달시켜준다.

application 입장에서는 process가 메시지를 툭 던진다. 아래에 있던 transport가 받아서 다음 과정으로 전달시킨다.

 

 

 

 


Addressing processes

특정 목적지로 우편 메일을 보내기 위해서는 목적지가 주소를 가지고 있어야 한다.

마찬가지로 메시지를 받기 위해 process는 id가 필요하다. 이것은 port number이다.

필요한 것은 (1) 호스트의 주소(IP), (2) 그 목적지 호스트 내의 수신 프로세스를 명시하는 식별자(port number)

 

 

예를 들어, 한 집에 여러 식구가 산다고 해보자. 그 집에 각 사람들을 어떻게 구별할까?

집주소는 하나만 쓰고 각 식구마다 이름을 붙이자.

이 때 집주소는 IP주소이고, 그 집의 각 사람들에게 붙힌 이름은 port number이다.