- 프로세스 기반의 다중접속 서버의 구현 모델
- 동시에 둘 이상의 클라이언트에게 서비스를 제공하는 에코 서버
: 클라이언트의 연결 요청이 있을 때마다 에코 서버는 자식 프로세스를 생성해 클라이언트에게 서비스 제공
- 에코서버
: 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 할당
- 하나의 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 |