2.웹서버 작동원리


  뭐 제목이 너무 거창한 감이 없지 않지만, 일단 웹서버의 작동 원리를 위주로 설명을 하겠다.

  처음에, 웹서버를 설치할 때, 일반적으로 웹서버는 항상 두가지 사항을 반드시 넣어 주어야 하는데, 하나는 IP주소와 Port번호이고, 나머지 하나는 HTML용 Directory와 CGI용 Directory명이다.

  이 두가지가 설정된 후에, 실행하게 되면 항상 떠있어서(Daemon) 사용자의 요구에 대응할 준비를 하고 있게 된다.


  이때, 사용자 PC에서 브라우져를 띄워서 특정 문서를 HTTPD에 요청하게 된다. 그러면, HTTPD는 요청한 URL을 가지고서, 요청 들어온 것이 일반 HTML파일용인지 CGI용인지 확인을 하게 된다.

  먼저, HTML문서일 경우는 단순히 문서를 브라우저에 전송해 주게 되면, 브라우저는 해당 문서내부를 뒤져서 추가로 필요한 그림이나 멀티미디어파일을 다시 요청하게 되고, 모든 파일이 다 내려요면 서버와의 연결을 끊게 된다.

    Connect/Disconnect  앞에서 설명하면서, 하나의 HTML문서에 들어있는 다른 이미지나 멀티미디어 파일을 가져오는데, HTTP1.0 스펙에서는 매 요청시마다 연결(Connect)과 종료(Disconnect)를 수행하게 되어있어서 브라우저와 웹서버가 네트워크상에서 하나의 HTML문서를 보기위해서 연결과 종료를 수없이 반복한다. HTTP1.1에서는 이러한 방식이 위에서 설명한 것처럼 한번의 요청에 모든 요구를 담아서 한번에 처리하는 기능이 추가되었다.
  CGI를 요청한 경우는 HTTPD가 먼저 CGI 실행파일을 실행시키는데, 이때, HTTPD는 CGI프로그램에 다음과 같은 것들을 입력 정보로써 제공한다.

  • 브라우저의 정보

  • 브라우저의 화면에서 사용자가 입력한 정보

  • 브라우저에 저장했던 Cookie정보


  이와 같은 정보를 이용하여 CGI가 실행되고, 결과가 출력된다. 물론, 이때에 이 CGI프로그램이 DataBase를 사용하게 된다면, CGI실행시에 사용하면 되는 것이다. 여하튼, CGI가 실행하면서 화면에 출력되는 모든 정보를 Browser로 전송하게 되는 것이다.

  여기서 주의할 것은 CGI가 출력하는 내용이 발생할 때마다 즉시즉시 전송되는 것은 아니다. 즉, CGI가 출력하는 모든 내용을 별도로 저장하였다가 CGI가 완전히 종료가 되고 나서야, 한꺼번에 전송이 된다는 점이다.

    Cache  일부 웹서버는 이렇게 CGI가 출력하는 내용을 cache에 담아두어서 나중에 이를 한꺼번에 전송한다. 또한, 캐쉬의 사이즈를 지정할수 있으며, CGI가 종료되거나, 캐쉬가 꽉찬 경우에 이를 브라우저로 내려보내게 된다.
  자 이렇게 볼 때, HTML, GIF, JPG, MPEG, MID와 같은 모든 것들은 누가 언제 보든 항상 같은 정보를 보게 되어있다. 그래서 이걸 정적인(static) 문서라고 부르며 웹서버 설정시 일반 HTML 디렉토리에 두면 된다. 반면, CGI의 경우는 앞에서 살펴본 바대로 3가지의 정보를 가지고 사용자마다 다른 화면을 보여줄 수 있는 것이다. 그래서 동적인(Dynamic) 문서라 부른 것이다.

    CGI/HTML   CGI 디렉토리에 일반 HTML문서를 놓고서 그 문서를 요청하게 되면 에러가 발생하는데, 이유는 CGI 디렉토리 밑에 있기 때문에 모든 파일은 실행가능으로 여기고 무조건 실행하려다보니 에러가 발생하는 것이다. 그러므로 일반 문서는 반드시 HTML용 디렉토리 밑에 위치시켜야 한다.
  그럼, 이제부터 HTML을 하나씩 배워보자.

  잠깐! 중요한 것을 빠뜨릴 뻔했는데, 다름이 아니라 권한 설정 문제이다. UNIX용 웹서버를 설치하게 되면 해당 서버의 사용자 이름을 할당해야 한다. 즉, 웹용으로 사용자가 존재해야하고, 서비스되는 모든 문서에 대하여 읽기 권한을, 그리고 모든 디렉토리에 접근 권한을, CGI 파일은 실행권한이 있어야만 한다.   Window용 웹서버의 경우는 별도의 조치가 필요하지는 않다. 그렇지 않으면 에러가 발생하게 된다. CGI같은 경우는 외부에서 실행시키기 때문에 시스템에 피해를 줄 수 있으므로 보안에 각별히 신경을 써야만 한다.

- Last Update : 2001.6.19 by Deadfire(http://www.deadfire.net)

HTML 강좌
HTML이란?
웹서버 작동원리
HTML 기초
     - 전체 구조
     - 기본 태그
     - 속성 추가
     - Link/Anchor
     - 목록 Tag
     - 문자와 스타일
     - 기타 Tag
     - 특수 문자 표기
     - 이미지 표기
HTML 활용
     - Table
     - Frame
     - Form
     - Elements
기 타
     - MIME Type
     - 이미지 맵
     - 클라이언트 풀
마치며

Copyright ⓒ 1997 ~, Deadfire Program Master