[OS] 클라이언트-서버 환경 통신

Socket

소켓은 네트워크 양단간 End Point를 뜻한다. 각 소켓은 IP 주소와 포트번호 두가지를 접합하여 구별한다. 특정 서비스를 구현하는 서버는 well-known port로부터 메세지를 기다린다. 클라이언트 프로세스가 연결을 요청하면 호스트 컴퓨터가 포트번호를 부여하는데 일반적으로 1024 이상으로 할당된다. 그 이하는 포트 번호에 따라 사용 목적이 있기 때문에 관례상 잘 할당하지 않는다. 메세지는 바이트 스트림으로 이루어진다.

Remote Procedure Calls

RPC란 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 리모트의 함수나 프로시저를 실행할 수 있게 해주는 프로세스간 통신이다. RPC는 IPC의 한 종류이다.

Pipes

파이프는 두 프로세스가 통신할 수 있게 하는 전달자로서 동작한다. 파이프를 구현하기 위해서는 다음의 제약 사항을 고려해야한다.

  1. 파이프가 단방향 통신 또는 양방향 통신을 허용하는가
  2. 양방향 통신이 허용된다면 Half Duplex(반이중)인가 Full Duplex(전이중)인가
  3. 통신하는 두 프로세스간에 부모-자식과 같은 특정 관계가 존재해야만 하는가
  4. 파이프는 네트워크를 통하여 통신이 가능한가 아니면 동일한 기계 안에 존재하는 두 프로세스 끼리만 통신가능한가
Author: Song Hayoung
Link: https://songhayoung.github.io/2020/07/21/OS/server-client-communication/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.