목표 : 응용 프로그램이 어떤 일을 수행하는지 알기
##월드 와이드 웹과 HTTP 목차
#월드 와이드 웹(Wrold Wide Web)
#하이퍼텍스트 전송 프로토콜(HTTP)
- 영속적 연결 대 비영속적 연결
- 메시지 형식들
- 조건부 요청
- 쿠키
#웹 캐싱: 프록시 서버
#HTTP 보안
- 자체적으론 보안 제공 안함
- HTTPS : SSL을 사용시 기밀성, 인증, 데이터 무결성 제공
##월드 와이드 웹
#구조
- 분산 클라이언트-서버 서비스
- 브라우저를 사용하는 클라이언트가 서버로부터 서비스를 제공받음
- 제공되는 서비스는 사이트에 분산
- 웹 페이지- 각 사이트에 저장
- 웹 페이지는 동일한 사이트 또는 다른 사이트에 있는 웹 페이지들의 링크 포함
- 각 웹페이지는 이름과 주소를 갖는 파일
**웹 클라이언트(브라우저)
**웹 서버
- 웹 페이지 저장
- 클라이언트 요청이 오면 해당 문서를 클라이언트에 전송
- 효율성 위해 요청 파일 캐시에 저장
#자원 위치 지정자(URL)
- 웹 페이지를 구별하기 위한 식별자 필요
- 프로토콜 : 웹페이지를 접속하기 위한 클라이언트 서버 응용 프로그램
- 호스트 : 서버 이름 또는 서버에게 주어진 IP주소
- 포트 : 16비트 정수
- 경로 : 파일의 위치와 이름 식별
#웹문서
- 정적문서
- 서버에 생성되어 저장된 고정 내용 문서
- 사용언어 : HTML, XML, XSL, SHTML
- 동적문서
- 브라우저가 문서를 요청할 때 마다 서버에 의해 생성
- 스크립트를 이용하여 동적 문서 생성 기술 : JSP, ASP, ..
- 액티브 문서
- 클라이언트 사이트에서 수행될 프로그램 또는 스크립트를 필요로 하는 문서
- 브라우저가 액티브 문서를 요청하면 서버는 문서의 복사본이나 스크립트를 클라이언트에게 전송 되어 클라이언트에서 실행
- 액티브 문서 생성에 사용되는 언어 : 자바 스크립트, 자바 애플릿
##하이퍼텍스트 전송 프로토콜 (HTTP)
- 클라이언트-서버 프로그램이 웹으로부터 웹 페이지를 검색하기 위해 작성하는 방법을 규정하는데 사용하는 프로토콜
- HTTP 클라이언트가 요청하면 HTTP서버가 응답
- 연결지향적(연결설정, 서비스제공, 연결종료), 신뢰성(오류 제어 기능)있는 프로토콜
- 연결방법 : 비영속 대 영속
#영속적 연결 대 비영속적 연결
- 비영속적 연결
- 각 요청/응답에 대해 하나의 연결이 만들어짐
- 클라이언트가 TCP 연결을 열고 요청을 보낸다
- 서버는 응답을 보내고 연결을 닫는다
- 클라이어트는 end-of-file 표시가 나타날 때까지 데이터를 읽고, 연결을 닫는다.
- 영속적 연결
- HTTP 버전 1.1에서 기본
- 서버는 응답을 한 후 추후 연결 요청을 위해 열어놓은 상태유지
- 클라이언트 요청이나 타임아웃이 되면 연결을 닫는다
#메시지 형식들
-
메시지 형식 사진
-
메시지 예시
-
요청 메시지
- 요청라인(첫줄) : 메소드, URL, 버전으로 구성
- 메소드 : 요청 유형을 나타냄
- 버전 : HTTP 1.1
- 요청 헤더라인 : 클라이언트로부터 서버로 추가 정보 전송에 사용
-
응답 메시지
- 구성 : 상태라인, 헤더라인, 공백라인, 몸체
- 상태라인: 버전, 상태코드, 상태문구로 구성
- 버전 : HTTP 1.1
- 상태코드 : 요청 상태 정의
- 상태문구 : 문자 형태로 상태 코드 설명
- 헤더라인 : 서버에서 클라이언트로 추가정보 전송
#조건부 요청
- 클라언트는 자신의 요청에 조건추가 가능
- 서버는 조건이 충족되면 웹 페이지 전송, 그렇지 않으면 클라이언트에게 이를 통보
#쿠키
- 쿠키 생성과 저장
- 서버가 클라이언트로부터 요청을 받았을 때, 클라이언트에 관한 정보(도메인이름, 이름 등)를 파일이나 문자열로 저장
- 서버는 클라이언트에게 보내는 응답에 쿠키포함
- 클라이언트가 응답을 받으면, 브라우저는 쿠키를 도메인이름에 따라 정렬되는 쿠키 디렉토리에 저장
- 쿠키사용
- 클라이언트가 서버에게 요청을 보낼 때 > 브라우저는 쿠키를 검색 > 서버가 보낸 쿠키를 찾음 > 있으면 요청에 포함
- 서버가 만들고, 서버가 사용
- ex) 전자상점 : 쇼핑 고객이 상품을 카트에 담으면, 관련정보를 저장한 쿠키를 브라우저로 보냄
##웹 캐싱 : 프록시 서버
- 프록시 서버는 최신 요청에 대한 응답의 복사본을 가지고 있는 컴퓨터
- 서버부하 경감, 트래픽 감소, 지연 개선 효과
- 서버와 클라이언트 역할 동시 수행
#프록시 서버 위치
- 클라이언트 컴퓨터를 프록시 서버로 사용
- 회사내에서 LAN에 설치되어 전송 부하를 줄임
- ISP가 송수신 부하를 줄이기 위해 사용
**프록시서버 과정 :
- 프록시 서버는 로컬 네트워크에 설치된다.
- 클라이언트(브라우저)에 의해HTTP요청이 생성
- 요청을 프록시서버가 먼저 감지
- 프록시서버가 해당 웹페이지를 이미 가졌다면 클라이언트에게 응답보냄
- 프록시 서버 없으면, 프록시 서버는 클라이언트와 같이 수행하며 인터넷에 웹서버로 요청을 보냄
- 요청이 되돌아 올 떄 프록시 서버는 복사본을 만듬, 이를 요청한 클라이언트에게 보내기 전에 캐시에 저장
#캐시 갱신
- 프록시 서버는 정보를 언제까지 두느냐가 중요한 문제
##HTTP 보안
- 자체적으론 보안 제공 안함
- HTTPS : SSL을 사용시 기밀성, 인증, 데이터 무결성 제공