본문 바로가기
Develop/Network

[윤성우의 열혈 TCP/IP 소켓 프로그래밍] Chapter24 - 내용 확인 문제 풀이

by Tarra 2023. 7. 2.

 

 

 

 

 [윤성우의 열혈 TCP / IP 소켓 프로그래밍] 책을 기반으로 개인적으로  문제 풀이 및 개념을 정리한 내용입니다.

모든 소스 코드와 강의, 확인 문제의 정확한 답안은 (23년 7월 1일부터 전면 무료화 예정)

http://www.orentec.co.kr/

 

====== 오렌지 미디어 ======

 

www.orentec.co.kr

에서 확인할 수 있습니다.

 

 


 

 

01. 웹 서버와 웹 서버의 접속에 사용되는 웹 브라우저에 대한 설명으로 옳지 않은 것을 모두 고르면?

a. 웹 브라우저는 소켓을 생성하고 이 소켓으로 서버에 접속하는 클라이언트 프로그램으로 보기 어렵다.

웹 브라우저는 클라이언트 프로그램으로 소켓을 생성하고 서버에 접속하는 역할을 수행한다.

웹 브라우저는 사용자가 웹 페이지를 요청하고 서버로부터 응답을 받아 화면에 표시하는 역할을 한다.

 

b. 웹 서버는 TCP 소켓을 생성해서 서비스한다. 그 이유는 클라이언트와의 연결을 일정시간 이상 유지한 상태에서 각종 정보를 주고 받기 때문이다.

웹 서버는 클라이언트와의 연결을 TCP 소켓을 통해 유지하지만, 연결을 유지하는 시간에 대해 일정한 제한이 있는 경우도 있다.

일반적으로 HTTP 프로토콜은 요청과 응답을 주고받기 때문에 연결을 유지한 상태에서 데이터를 주고받는 시간이 짧다.

 

c. Hypertext와 일반 text의 가장 큰 차이점은 이동성의 존재유무이다.

 

d. 웹 서버는 웹 브라우저가 요청하는 파일을 전송해주는 일종의 파일전송 서버로 볼 수 있다.

 

e. 웹 서버에는 웹 브라우저가 아니면 접속이 불가능하다.

웹 서버는 웹 브라우저를 통해 접속하는 것이 일반적이지만, 다른 클라이언트 애플리케이션을 통해서도 접근할 수 있다.

웹 브라우저 이외에도 API 호출, 커맨드 라인 도구 등 다양한 클라이언트 애플리케이션이 웹 서버에 접속할 수 있다.

 

정답 a. b. e

 

 

02. HTTP 프로토콜과 관련된 설명으로 옳지 않은 것을 모두 고르면?

a. HTTP 프로토콜은 상태를 유지하지 않은 Stateless 프로토콜이다. 따라서 TCP가 아닌 UDP를 기반으로 구현해도 문제되지 않는다.

HTTP는 신뢰성 있는 데이터 전송을 필요로하기 때문에 TCP를 사용하는 것이 일반적이다.

UDP는 비연결형 프로토콜로 데이터의 신뢰성이 보장되지 않으며, 패킷의 손실이나 순서 변경 등의 문제가 발생할 수 있다.

 

b. HTTP 프로토콜을 가리켜 상태를 유지하지 않는 Stateless 프로토콜이라 하는 이유는, 한번의 요청과 응답의 과정을 마치고 나면 연결을 끊어버리기 때문이다. 따라서 동일한 웹 서버와 동일한 웹 브라우저가 총 세 번의 요청 및 응답의 과정을 거치는 경우에는 총 세 번의 소켓생성 과정을 거치게 된다.

 

c. 서버가 클라이언트에게 전송하는 상태코드에는 클라이언트 요청에 대한 결과정보가 담겨있다.

 

d. HTTP 프로토콜은 인터넷을 기반으로 하는 프로토콜이다. 때문에 인터넷 기반에서 많은 클라이언트에게 서비스를 제공할 수 있도록 HTTP를 Stateless 프로토콜로 설계한 것이다.

 

정답 a

 

 

03. IOCP와 epoll은 우수한 성능을 보장하는 대표적인 서버 모델들이다. 그런데 HTTP 프로토콜을 기반으로 하는 웹 서버에 이 모델을 적용하는 경우에는, 다른 모델에 비해 우수한 성능을 보장한다고 말할 수 없다. 그렇다면 그 이유는 무엇인가?

1. HTTP 프로토콜의 특성

HTTP 프로토콜은 상태를 유지하지 않는 Stateless 프로토콜로, 각 요청과 응답이 독립적이고 연결을 유지하지 않는다.

따라서 IOCP와 epoll 모델에서 제공하는 연결 지향성 기능(연결 상태의 유지 등)이 HTTP 프로토콜에서는 필요하지 않을 수 있따.

HTTP 요청이 독립적이고 연결을 끊어버리기 때문에, 각 요청마다 새로운 소켓 연결을 생성하는 것이 일반적이다.

 

2. HTTP의 직렬적 특성

HTTP 요청과 응답은 직렬적으로 처리되는 특성을 가지고 있다.

클라이언트는 요청을 하나씩 보내고, 서버는 순차적으로 요청을 처리하고 응답을 보낸다.

이러한 특성은 IOCP와 epoll 모델의 동시성 처리 능력을 최대한 활용하기 어렵게 만들 수 있따.

다수의 쓰레드 또는 프로세스가 동시에 처리해야하는 상황이 아니기 때문에, IOCP와 epoll의 비동기 처리 기능을 효과적으로 활용하기 어려울 수 있다.

 

더보기

모범 답안

IOCP와 epoll 모두 둘 이상의 소켓을 관리할 수 있는 서버 모델이다.

즉, 관찰의 대상이 되는 소켓들 중에서 IO와 관련된 이벤트가 발생한 소켓을 감지해서 IO를 처리하는 서버 모델이다.

그런데 웹 서버의 경우에는 둘 이상의 소켓을 계속해서 관리할 필요가 없다.

왜냐하면 단 한번의 요청 및 응답의 과정을 거치고 나면, 연결을 종료하기 때문이다.

따라서 IOCP와 epoll을 통한 추가적인 성능의 향상을 기대하는데 한계가 있다.

 

 

 


출처 : [윤성우의 열혈 TCP / IP 소켓 프로그래밍] / 윤성우 저 / 오렌지 미디어

https://cafe.naver.com/cstudyjava

 

윤성우의 프로그래밍 스터디그룹 [C/... : 네이버 카페

윤성우의 스터디 공간입니다. C와 JAVA를 공부하시는 분들은 모두 들어오세요. ^^

cafe.naver.com