728x90
구조
- WWW는 분산 클라이언트/서버 서비스
- 브라우저를 사용하는 클라이언트가 서버를 이용하여 서비스를 제공
- 제공되는 서비스는 사이트라는 여러 장소에 분산
- 각 사이트는 웹 페이지라는 하나 이상의 문서를 관리
- 각 웹 페이지는 동일한 사이트 또는 다른 사이트에 있는 웹 페이지들에 대한 링크를 포함
- 하이퍼미디어와 하이퍼텍스트
- 하이퍼텍스트: 다른 문서를 참조하여 문서를 생성
- 텍스트 일부가 다른 문서의 링크로 정의
- 하이퍼미디어: 다른 문자 문서나 사진, 비디오, 소리 등을 포함하는 문서의 링크를 갖는 문서
- 하이퍼텍스트: 다른 문서를 참조하여 문서를 생성
- 웹 클라이언트
- 브라우저는 제어기(controller), 클라이언트 프로토콜, 해석기(interpreter)로 구성
- 웹 서버
- URL
- HTTP는 자원 위치지정자라는 개념을 사용
- 인터넷에서 모든 종류의 정보를 지정할 수 있는 표준
- '프로토콜;//호스트(도메인 이름):포트/경로(파일 경로)'
웹 문서
- 정적 문서
- 저장된 내용이 고정되어 있는 문서
- 클라이언트는 문서의 복사본만 얻을 수 있음
- 동적 문서
- 브라우저가 문서를 요청할 때마다 웹 서버에 의해 생성
- 클라이언트는 문서의 복사본만 얻을 수 있음
- 웹 서버는 동적 문서를 만드는 응용 프로그램이나 스크립트를 수행
- jsp, asp, php 등
- 공통 게이트웨이 인터페이스(CGI) -> 현재 잘 사용 x
- 액티브 문서
- 자바 애플릿
- 자바 스크립트
- 검증용
- PC 브라우저에서 동작하기 때문에 보안 취약점이 있음
HTTP
- 인터넷의 핵심 프로토콜
- 세션층에 위치하는 프로토콜
- 웹 브라우저와 웹 서버가 요청과 응답을 주고 받으며 HTML 형식의 웹 페이지를 보여줌
- HTTP 트랜잭션
- TCP를 이용하지만 상태가 존재하지 않는(stateless) 프로토콜
- 클라이언트는 요청 메시지를 보내어 트랜잭션을 초기화
- 서버는 응답 메시지를 보내어 응답
- 요청 메시지
- 요청 라인: 공백 문자에 의해 분리된 세 개의 필드
- 메소드, URL, 버전
- CR과 LF 문자가 라인을 종료
- 헤더 라인: 서버로 추가 정보를 전송
- 요청 라인: 공백 문자에 의해 분리된 세 개의 필드
- 응답 메시지
- 상태 라인: 상태 코드와 상태 문구로 표현
- 응답 헤더 라인: 클라이언트로 추가적인 정보를 전송
- 조건부 요청
- 영속성
- HTTP 버전 1.0: 비영속적 연결
- 각 요청/응답에 대해 하나의 TCP 연결이 만들어진다.
- HTTP 버전 1.1: 영속적 연결
- 서버는 응답을 전송한 후에 이후의 요청을 위해 연결을 열어놓은 상태로 유지
- 서버는 클라이언트 요청이 있거나 타임아웃이 되면 연결을 닫을 수 있음
- HTTP 버전 1.0: 비영속적 연결
- 쿠키
- 웹의 stateless로 인해 필요, 인증 목적을 달성하기 위해 사용
- 쿠키 생성과 저장
- 클라이언트로부터 요청을 받았을 때 클라이언트에 관한 정보를 파일이나 문자열로 저장
- 서버는 클라이언트에게 보내는 응답에 쿠키를 포함
- 브라우저는 쿠키를 도메인 서버 이름으로 정렬되는 쿠키 디렉터리에 저장
- 웹 캐싱
- HTTP는 프록시 서버(중계 서버)를 지원
- 프록시 서버는 최신 요청에 대한 응답의 복사본을 가지고 있음
- 프록시 서버는 캐시를 검사
- 프록시 서버는 적절한 서버로 요청을 보냄
- 프록시 서버는 주로 암호화하는 데 사용
- HTTP 보안
- HTTP는 SSL(445) 위에서 수행
- HTTPS는 데이터의 무결성과 기밀성, 인증을 제공
- HTTP 헤더 이름