WWW

  • 분산 클라이언트-서버 서비스
  • 브라우저를 사용하는 클라이언트가 서버와 연결하여 서비스 제공 받는다
  • 제공되는 서비스는 사이트라고 하는 여러 장소에 분산되어 있다
  • 각 사이트는 웹 페이지라고 불리는 하나 또는 그 이상의 문서들을 유지
  • 웹페이지
    • 웹페이지는 이름과 주소를 갖춘 파일
    • 단일 웹 페이지 : 다른 웹페이지로의 연결이 없음
    • 복합 웹 페이지 : 다른 웹페이지로 하나 혹은 그 이상의 연결을 가진다

단일 웹 페이지 예제

  • 유명한 인물의 사진과 이력이 포함된 웹페이지 접근
  • 사진들을 분리된 파일로 저장하지 않은 경우 -> 전체문서가 단일 웹페이지

복합 웹페이지 예제

  • 과학문서를 검색하는 경우
  • 문서는 다른 텍스트 파일과 큰 이미지에 대한 참조 포함 -> 복합 웹페이지

클라이언트(브라우저)

  • 다양한 상용 브라우저 존재 -> 그러나 구조는 거의 동일
  • 세 부분으로 구성
    • 제어기 -> 키보드나 마우스로 입력을 받아 클라이언트 프로토콜을 이용하여 서버의 문서에 접근
    • 클라이언트 프로토콜 -> HTTP, FTP, TELNET 등 프로토콜
    • 해석기 -> 문서 획득 후, 제어기는 해석기 중 하나를 사용하여 문서를 화면에 표현

웹서버

  • 웹 페이지를 저장하는 컴퓨터
  • 속도 향상을 위해 요청된 파일을 메모리의 캐시에 저장
  • 효율을 위해 다중 쓰레드나 다중 프로세스 사용
    • 한번에 하나 이상의 요청에 응답
  • 유명한 웹 서버
    • 아파치
    • Microsoft Internet information service(IIS)

균일한 위치 지정자(URL : Uniform Resource Locator)

  • 클라이언트가 웹 페이지를 액세스하기 위한 주소
  • HTTP는 위치 지정자라는 개념 사용
  • URL은 인터넷에서 어떤 종류의 정보의 위치도 지정할 수 있는 표준
  • URL = 프로토콜 + 호스트 컴퓨터 + 포트+ 경로로 구성
    • 프로토콜 : 문서를 불러오는데 사용되는 클라이언트/서버 응용, ex) 고퍼, FTP, HTTP, News, Telnet
    • 호스트 : 정보가 위치하고 있는 서버의 도메인네임
    • 포트번호
    • 경로 : 정보가 위치하고 있는 파일의 경로 이름
    • Protocol://Host:Port/Path

웹 문서의 분류 - 문서의 내용이 결정되는 순간을 기반

  • 정적 문서

    • 서버에서 생성되어 저장된 고정 내용 문서

    • 클라이언트가 문서를 접근할 때 문서의 복사본이 전송

    • 파일의 내용이 파일이 사용될 때가 아닌 생성될 때 결정

    • 다음의 여러 언어 중 하나를 사용

      • HTML(Hypertext Markup Language)
        • 웹페이지를 만드는 언어
        • 마크업 랭귀지
          • 출판사로부터 유래
          • 책이 조판되고 인쇄기 전에, 원고 편집자들이 원고를 읽고 표기를 함
          • 이러한 표기들은 식자공으로 하여금 원문의 판형을 어떻게 짜야 하는지를 알려줌
          • 예 : 물결 모양의 선 -> 굵은 체로 인쇄
            • 유사한 형태로, 웹 페이지에 대한 브라우저의 해석 가능
      • XML
      • XSL
      • XHTML
  • 동적 문서

    • 브라우저가 문서를 요청할 때마다 웹서버에 의해 생성

      • 요청이 들어오면, 웹서버는 동적 문서를 만드는 응용 프로그램이나 스크립트를 수행
      • 서버는 프로그램의 출력이나 스크립트를 그 문서를 요청한 브라우저에게 응답으로 반환
      • 각 요청에 대해, 새로운 문서가 생성되기 때문에, 동적 문서의 내용은 각각의 요청에 따라 달라질 수있음
      • ex) 서버로부터 날짜와 시간을 받는것

      • 공통 게이트웨이 인터페이스(CGI)
        • 동적 문서를 생성하고 처리하는 기술
        • 1) 동적 문서가 어떻게 작성되어야 하는지 2) 입력 데이터가 어떻게 프로그램에 제공되어야 하는지 3) 그리고 출력 결과가 어떻게 사용되어야 하는지를 정의
        • CGI는 새로운 언어가 아님
        • 프로그래머가 C, C++과 같은 언어 중 하나를 사용할 수 있도록 해줌
        • CGI는 프로그래머가 따라야 할 규칙과 용어들의 집합만 정의
      • “Common”의 의미
        • 어떤 언어나 플랫폼에도 공통적으로 적용되는 규칙의 집합임을 의미
      • “Gateway”의 의미
        • CGI프로그램이 데이터베이스, 그래픽 패키지 등과 같은 다른 자원을 액세스하기 위해 사용될 수있음을 의미
      • “Interface”의 의미
        • 임의이 CGI프로그램에서도 사용될 수 있는 미리 정의된 용어, 변수, 함수 등의 집합이 존재함을 의미
      • 입력(Input) : 클라이언트로부터 서버로의 입력
        • URL에서 물음표 앞의 부분은 수행될 프로그램이고, 뒤의 부분은 프로그램에 대한 입력으로 해석
        • 예: http://www.deanza.edu/cgi-bin/prog.pl?23
      • 출력(output)
        • 플레인 텍스트, HTML 구조를 갖는 텍스트
        • 그래픽, 이진 데이터
        • 상태 코드,
        • 결과를 캐시하기 위한 브라우저로의 명령어들 또는 실제 출력 대신 기존의 문서를 전송하기 위한 서버에 대한 명령어들

      CGI 기술의 문제점

      • 생성된 동적 문서의 일부가 고정되어 있고, 요청시마다 변경되지 않는 경우에 발생하는 비효율성
      • 예)
        • 특정 차종에 대한 재고 부품의 목록, 여유분, 가격 등을 포함하는 문서
        • -> 여유분과 가격은 매번 바뀜
        • 그러나 부품의 이름, 설명 및 사진 등은 고정
        • 전체 문서를 항상 동적으로 생성한다면 비효율성 발생
      • 해결방법
        • 문서의 고정부분 -> HTML 생성
        • 분서의 변화 부분 -> 서버에서 수행될 수 있는 스크립트, 즉 소스 코드를 내장하도록 함

      스크립트를 사용하여 동적 문서를 생성하는 기술 예

      • Perl 언어를 사용하는 PHP
      • 자바 언어를 사용하는 JSP
      • 비쥬얼 베이직 언어을 사용하는 ASP
      • HTML 문서에 SQL 데이터베이스 질의를 내장한 ColdFusion
  • 액티브 문서

    • 클라이언트 사이드에서 수행될 프로그램이나 스크립트가 포함된 문서

    • 예)

      • 화면세어 움직이는 그림들을 생성하거나 사용자와 상호작용하는 프로그램
      • 이 프로그램은 클라이언트 사이드에서 수행될 필요
    • 사용 절차

      1. 브라우저가 액티브 문서를 요청
      2. 서버는 문서의 복사본이나 스크립트를 전송
      3. 문서는 클라이언트 사이드에서 수행
    • 자바 애플릿

      • 애플릿 -> 서버에서 자바로 작성된 프로그램, 컴파일되어 수행될 준비가 되어 있는 바이트코드 형태
      • 브라우저는 이 애플릿의 인스턴스르 생성하고 이를 수행
        • 방법1 : 브라우저가 URL에 직접 자바 애플릿 프로그램을 요청하고 바이너리 형태로 애플릿을 수신하여 실행
        • 방법2 : 브라우저가 애플릿의 주소를 태그로 내장한 HTML 파일을 읽어와서 실행
    • 자바 스크립트

      • 동적 문서에서의 스크립트 개념이 액티브 문서에서도 사용 가능

        • 문서의 액티브 부분이 작으면 스크립트 언어로 작성되어 클라이언트에 의해 해석/실행

        스크립트 -> 소스코드 로서 바이너리 형태 아님

        자바스크립트 -> 자바와 닮은 점이 있는 스크립트 언어