반응형
  • 프로세스 기반의 다중접속 서버의 구현 모델

- 동시에 둘 이상의 클라이언트에게 서비스를 제공하는 에코 서버

다중접속 서버모델

: 클라이언트의 연결 요청이 있을 때마다 에코 서버는 자식 프로세스를 생성해 클라이언트에게 서비스 제공

 

- 에코서버

: 1단계: 에코 서버(부모 프로세스)는 accept 함수호출을 통해 연결요청을 수락

: 2단계: accept함수를 통해 얻은 file descriptor를 자식 프로세스에게 넘김

: 3단계: 자식 프로세스는 전달받은 file descriptor를 바탕으로 서비스 제공

 

 - 다중 접속 에코 서버의 구현

// 실행창_ 서버

// 실행창_클라이언트_1 (24593)

// 실행창_클라이언트_2 (24601)

- 생성된 자식 프로세스에서 클라이언트에게 에코 서비스를 제공하는데 서버 socket의 file descriptor까지 복사되기 때문에 close

- 부모 프로세스에서는 accept함수를 통해 생성된 socket의 file descriptor를 소멸 (다른 클라이언트의 연결 요청이 있을 경우 accept함수를 통해 socket생성)

- 서버의 부모 프로세스에서 클라이언트의 연결요청을 수락

 

  • fork함수를 통한 file descriptor의 복사

- 부모 프로세스에 저장되어 있던 서버 socket, 클라이언트와 연결된 socket의 file descriptor가 자식 프로세스에 복사

- socket은 부모 프로세스가 아닌 운영체제의 소유이므로 socket이 복사되진 않음 (IP, PORT번호로 할당된 socket은 유일)

- 하나의 socket에 두 개의 file descriptor 할당

fork 함수의 호출과 파일 디스크립터의 복사

- 하나의 socket에 두 개의 file descriptor가 존재하는 경우 두 개의 file descriptor가 모두 소멸되어야 socket이 소멸

- 부모 프로세스에서 클라이언트와 연결된 file descriptor를 소멸하지 않으면 자식 프로세스에서 클라이언트와 연결된 file descriptor를 소멸하려 해도 남아있음

반응형

'프로그래밍의 기초 > TCP | IP' 카테고리의 다른 글

프로세스간 통신의 기본 개념  (0) 2022.01.20
TCP의 입출력 루틴 분할  (0) 2022.01.20
시그널 핸들링  (0) 2022.01.19
프로세스 & 좀비 프로세스  (0) 2022.01.18
프로세스와 스케줄러  (0) 2022.01.18

+ Recent posts