프로세스 간 통신

Stormi·2022년 5월 21일
0

네트워크

목록 보기
11/37

프로세스란 운영체제 관점에서 실행되는 프로그램이고 프로그램이란 디스크에 있는 코드 덩어리와 정적 데이터의 집합이다. 이 운영체제 관점에서 실제로 통신하는 것은 프로그램이 아니라 프로세스인데

이 프로세스는 종단 시스템에서 실행되는 프로그램이다. 통신 프로세스가 같은 종단 시스템에서 실행 될 때 서로 프로세스간에 통신한다.

  • 프로세스간의 통신을 위한 규칙은 종단 시스템의 운영체제에 의해 좌우된더.
  • 같은 호스트에서 프로세스가 통신하는 방법 에는 관심이 없고 다른 종단 시스템 (다른 운영체제)에서 실행되는 프로세스와 통신하는 것이 공부할 내용이다.

2개의 다른 종단 시스템에서 프로세스는 컴퓨터 네트워크를 통한 메시지 교환으로 서로 통신한다. 송신 프로세스는 메시지를 만들어서 네트워크로 보낸 교환으로 서로 통신한다. 송신 프로세스는 메시지를 만들어서 네트워크로 보낸다.

클라이언트와 서버 프로세스

두 프로세스 간의 통신 세션에서 통신을 초기화(다른 프로세스와 세션을 시작하려고 접속을 초기화)하는 프로세스를 클라이언트라고 하고, 세션을 시작하기 위해 접속을 기다리는 프로세스를 서버라고한다.

소켓

소켓은 프로세스와 컴퓨터 네트워크 사이의 인터페이스이다.

  • 프로세스는 집이고 소켓은 출입구라고 생각하면 된다. 어떠한 데이터가 집(프로세스)로 들어오는데 출입문(소켓)으로 들어올것이다. 그러면 포트와 개념 혼동이 있을 수 가 있는데 포트는 호실 넘버(그냥 번호!!)라고 생각하면되고 소켓은 그 포트번호와 연결된 프로그래밍 통로라고 생각하면 된다.

  • 우리의 종단시스템 애플리케이션 계층에서 서버(다른 종단시스템 애플리케이션)로 전송 할 때, 트랜스포트 계층에 가기위해서 소켓을 들린다. 여기서 소켓은 사용법이라고 생각하면된다.

  • 카카오 어플리케이션과 네트워크 사이의 인터페이스가 소켓이라고 생각하면된다.

어플리케이션 개발자는 소켓의 어플리케이션 계층에 대한 모든 통제권을 갖지만 소켓의 트랜스포트 계층에 대한 통제권은 거의 갖지 못한다. 이 말은 문을 열때를 생각 할 수 있는데 문을 중심으로 손잡이가 안쪽과 바깥쪽으로 있다고 생각하면 안에있는 나는 안쪽 손잡이의 잠금 및 해제를 컨트롤 할 수 있는데 바깥의 잠금 및 해제는 컨트롤 하기가 제한 된다.

  • 즉, 트랜스포트 계층에 대한 애플리케이션 개발자의 통제는 제한 되는데
    1. 트랜스포트 프로토콜의 선택(tcp, udp중 무엇을 선택할 지.)
    2. 최대 버퍼와 최대 세그먼트 크기와 같은 약간의 트랜스포트 계층 매개변수의 설정

    프로세스의 주소 배정

  • 수신프로세스가 주소를 갖고있어야한다.!!!
    1. 호스트의 주소
    2. 그 목적지 호스트 내의 수신 프로세스를 명시하는 식별자(포트넘버)

  • 수신프로세스는 고정된 IP주소를 가져야한다. 클라이언트인 우리는 요청을 보내는 입장이라서 와이파이가 바뀔때마다 IP주소가 바껴도 된다.

    포트번호(port number)

  • http 웹 서버의 포트 번호 : 80

  • 메일 서버의 포트 번호 : 25

  • ssh : 22

  • https : 443

스프링으로 개발할 때, 웹 서버를 띄울때 왜 8080으로 설정되어있을까? 80이 아니라?? 왜냐면 스프링은 HTML을 돌려주는 서버로 디폴트 되어있는 것이 아니라 거기서 사용될 자원을 보내주는 것이기 때문에 8080으로 되어있다.

0개의 댓글