5. Overview of web server architectures

[학습목표]

웹 서버는 WWW 의 일꾼이다.

  • 여러 종류의 SW, HW 웹서버를 조사한다.

  • HTTP 통신을 진단해주는 간단한 웹 서버를 펄(Perl)로 작성해본다.

  • 웹서버가 HTTP 트랜잭션을 처리하는 방법에 대해 단계별로 확인한다.

  • 이해를 위해 아파치 웹 서버를 이용해본다.(예제로 활용한다.)

1) 다채로운 웹서버

'웹 서버' : 웹서버 소프트웨어 & 웹페이지 제공에 특화된 장비 [2개다 가리킨다.]

웹 서버는 기능, 형태, 크기가 다양하다.

기능이 다르더라도 모든 웹 서버는 리소스에대한 HTTP 요청을 받아서 클라이언트에 콘텐츠를 돌려준다.

① 웹서버 구현

  • 웹서버는 HTTP 및 관련된 TCP 처리를 구현한 것이다.

  • 웹서버는 HTTP 프로토콜을 구현하고, 웹리소스를 관리하고, 웹 서버 관리기능을 제공한다.

  • 웹서버는 TCP 관리에 대한 책임을 운영체제와 나눠갖는다.

    [OS: 하드웨어관리, 파일시스템(웹 리소스 유지), 프로세스관리(현재 연산 활동제어), 네트워크지원(TCP/IP)]

  • 여러가지 형태 예

    • 다목적 소프트웨어 웹서버

      • 네트워크에 연결된 표준 컴퓨터 시스템에서 동작한다.

      • 오픈 소스 소프트웨어: 아파치, W3C의 직소 등

      • 상용소프트웨어: 마이크로소프트, 아이플래닛,...

      • 거의 모든 컴퓨터와 운영체제에서 동작한다.

      • 웹서버 시장점유율: Apache, Nginx, .. 참조

    • 임베디드 웹 서버

      • 일반 소비자용 제품에 내장 목적으로 만들어진 작은 웹서버 (예: 프린터,가전제품)

2) 간단한 펄 웹 서버

완전한 기능을 갖춘 HTTP 서버를 만들려면 할일이 많다.

최소한으로 기능하는 HTTP 서버라면 30줄 이하의 펄(Perl) 코드로 만들 수 있다.

참조링크: https://www.tutorialspoint.com/perl/perl_socket_programming.htm

[joe's 가게 사이트(책에있는 사이트) 로 예제를 실행할 수 없어서 위 링크로 소켓통신 실습 진행함]

왼쪽) 서버스크립트 실행, 오른쪽) 클라이언트 스크립트 실행 화면

참조링크에 client 맨 첫번째줄에 # 이 빠져있어서 이것만 제대로 하면 위처럼 통신이 되는걸 확인할 수 있다.

3) 진짜 웹 서버가 하는 일

  1. 커넥션을 맺는다 - 클라이언트 접속을 받아들이거나, 원치 않는 클라이언트라면 닫는다.

  2. 요청을 받는다 - HTTP 요청 메시지를 네트워크로부터 읽어들인다

  3. 요청을 처리한다. - 요청 메시지를 해석하고 행동을 취한다.

  4. 리소스에 접근한다. - 메시지에 지정한 리소스에 접근한다.

  5. 문서의 루트를 지정할 수 있다.예: Documentroot /usr/local/httpd/files

  6. 파일이 아닌 디렉터리를 가리키는 요청을 받았을 때에 어떤 행동을 취할지 설정할 수 있다.

    예: DirectoryIndex index.html index.htm home.html 하지만 색인기능이 꺼져있거나 기본 색인 파일이 없는 경우에는 디렉터리 내부 파일들의 크기, 변경일, html 파일들을 반환한다. 단, 원치않는 파일 정보가 드러날 수 있으니 색인 파일 자동 생성을 끄는 옵션을 사용할 수도 있다.(Options-Indexed )

  7. 응답을 만든다. - 올바를 헤더를 포함한 HTTP 응답 메시지를 생성한다.

  8. 응답을 보낸다. - 응답을 클라이언트에 돌려준다.

  9. 트랜잭션을 로그로 남긴다 - 로그 파일에 트랜잭션 완료에 대한 기록을 남긴다.

Last updated

Was this helpful?