제 6장 웹 서버에 도착하여 응답 데이터가 웹 브라우저로 돌아간다.

  1. 서버의 개요
  2. 서버의 수신 동작
  3. 웹 서버 소프트웨어가 리퀘스트 메세지의 의미를 해석하여 요구에 응한다.
  4. 웹 브라우저가 응답 메세지를 받아 화면에 표시한다.

패킷이 웹 서버에 도착하면 웹 서버는 이것을 수신하여 도착한 패킷을 처리하는데, 웹 서버의 동작이 여기에서 갑자기 시작되는 것은 아니다.

서버를 기동한 후 여러 가지 준비 동작을 하기 시작하여, 클라이언트에서의 엑세스에 응하는 상태가 된다. 클라이언트에서 도착한 패킷을 수신하여 처리하는 것은 이러한 준비 작업이 끝난 후의 일.

클라이언트가 접속할 때마다 새로 서버 프로그램을 작동하여, 서버 애플리케이션이 클라이언트와 1대 1로 대화하는 방식이 일반적인 방법.

서버프로그램을 작동해서 설정 파일 (config) 읽기 등의 초기화 동작을 마치고 (a)부분을 실행

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/8e135f3f-1cca-4388-8924-d0653a209530/IMG_4227.jpg

(a) 부분에서 소켓을 작성하고 소켓을 클라이언트에서의 접속 동작을 기다리는 상태로 만든 채 쉬는 상태가 됨. 클라이언트가 접속했을 때 다시 작동하여 접속을 기다림.

(b)를 작동시켜서 그곳에 접속이 끝난소켓을 건네주고 동작을 계속하면 클라이언트와 대화하는 부분은 접속이 끝난 소켓을 사용하여 클라이언트와 대화하기 시작. 대화가 끝나면 연결을 끊고 종료.

(b)는 새 클라이언트가 접속할 때마다 기동되므로 각각의 클라와 1대1 대응

미리 (b)를 여러개 작동시켜두고 클라가 접속했을 때, 비어있는 부분에 소켓을 전달하여 대응하는 방법도 있음

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/9a48eed4-1f86-46d8-958b-628208cb53b3/IMG_4228.jpg

(1) 소켓을 호출하여 소켓을 만든다.

(2) bind를 호출하여 소켓에 포트 번호를 기록

(3) listen을 호출하여 소켓에 접속하기를 기다리는 상태