본문 바로가기
IT/데이터베이스_네트워크

윤성우의 열혈 tcp/ip 소켓 프로그래밍 11장 연습문제 솔루션

by nutrient 2021. 5. 23.
728x90
728x170

 

답    안. 

문    제 1.
멀티플렉싱이란 최소한의 물리적인 요소만 사용해서 최대한의 데이터를 전송하는 기술이다. 마찬가지로 IO 멀티플렉싱이란 IO를 필요로 하는 소켓을 한데 묶어서 최소한의 리소스 및 프로세스를 이용해서 데이터를 송수신하는 기술을 의미한다. 


문    제 2.
멀티프로세스 기반의 동시접속 서버는 클라이언트가 연결요청을 해 올 때마다 추가로 프로세스를 생성해서 서비스를 하는 방식이다. 그런데 프로세스의 생성은 매우 부담이 되는 작업이기 때문에 많은 수의 클라이언트에게 서비스를 제공하는 데는 한계가 있다. 반면 멀티플렉싱 서버는 소켓의 파일 디스크립터를 하나로 묶어서 관리하는 방식으로, 하나의 프로세스가 이를 모두 처리하기 때문에 프로세스의 생성에 대한 리소스 소모가 없다. 


문    제 3 b, c


문    제 4
서버 소켓(리스닝 소켓)은 '수신한 데이터가 존재하는가?'에 관심이 있는 파일 디스크립터의 부류로 묶여야 한다. 왜냐하면 클라이언트의 연결요청도 일종의 데이터 전송이기 때문이다. 


문    제 5
리눅스의 fd_set은 비트 배열로 구성되어 있는 반면, 윈도우의 fd_set은 소켓의 핸들을 저장할 수 있는 배열의 형태로 구성되어 있다. 리눅스의 파일 디스크립터는 0에서부터 시작해서 값이 하나씩 증가하는 구조를 지니기 때문에, 생성된 파일 디스크립터의 수와 마지막으로 생성된 파일 디스크립터의 수 사이에 어떠한 관계성을 찾아 낼 수 있다. 그러나 윈도우 기반의 소켓 핸들은 0에서부터 시작하지 않을 뿐 아니라 생성되는 핸들의 정수 값 사이에서도 규칙을 찾아낼 수 없기 때문에 소켓의 핸들을 그대로 저장할 수 있는 배열이 필요하다..


 

728x90
그리드형

댓글