www의 구조
- HTTP는 TCP를 사용(신뢰성 좋다)
- HTTP자체는 상태가 존재하지 않는다. 디도스 공격에 취약
- 분산 클라이언트/서버 서비스이다.
- 브라우저를 사용하는 클라이언트는 서버가 제공하는 서비스를 받는다.
- 사이트라는 장소에 분산되어 있다. 각 사이트는 웹페이지라는 하나 또는 그 이상의 문서를 관리
- 요청과 응답은 1번에 1개이다.
hypertext와 hypermedia
- hypertext: 다른 문서를 참조하여 문서를 생성하는 것
- hypermedia: 다른 문서, 사진, 비디오, 소리 링크 갖는 문서
웹 클라이언트
- 브라우저는 제어기, 클라이언트 프로토콜, 해석기로 구성
- 제어기: 키보드나 마우스로부터 입력을 받아 클라 프로그램 사용하여 문서에 접속
- 클라 프로토콜: HTTP,FTP,TELNET같은 응용 프로토콜 중 하나
웹 서버
- 웹 페이지는 서버에 저장된다.
- 클라이언트의 요청이 오면, 해당 문서를 클라이언트에게 전송된다.
- 효율성을 높이기 위해 요청한 파일을 캐시 메모리에 저장
단일 자원 위치기(URL)
- 단일 자원 위치기(URL)는 인터넷에서 모든 정보를 지정할 수 있는 표준이다.
- protocol :// host:port/path
- 프로토콜: 문서를 불러오는데 사용되는 클라이언트/서버 응용 프로그램
- host: 정보가 저장되어 있는 컴퓨터의 도메인 이름
- port: url에 서버의 포트
- path: 정보가 위치한 파일의 경로 이름
웹문서
정적문서
- index, html같은 서버에서 생성되어 저장된 내용이 고정되어있는 문서
- 클라언트가 문서에 접근하면, 문서의 복사본이 전송된다.
동적문서
- 브라우저가 문서를 요청할 때마다 웹 서버에 의해 생성
- 요청이 오면, 웹서버는 동적 문서를 만드는 응용 프로그램이나 스크립트를 수행
- 서버는 프로그램의 출력이나 스크립트를 그 문서를 요청한 브러주에게 응답으로 보냄
- 각 요청에 대해 새로운 문서가 생성되기 때문에, 동적 문서의 내용은 요청할 때마다 달라질 수 있다.
공통 게이트웨이 인터페이스(CGI)
- 동적 문서를 생성하고 처리하는 기술
- CGI는 동적 문서가 어떻게 작성되는지, 입력 데이터가 어떻게 프로그램에 제공되는지, 출력 결과가 어떻게 사용되는지 정의 하는 표준들의 집합
- Common: 표준이 어떤 언어나 플랫폼에도 공통적으로 적용되는 규칙의 집합을 정의함
- Gateway: 데이터베이스, 그래픽 패키지 등과 같은 다른 자원을 접근하기 위해 사용될 수 있는 게이트웨이라는 것 의미
- Interface: 임의의 CGI프로그램에서도 사용될 수 있는 미리 정의돈 용어, 변수, 함수등 집합의 존재
CGI문제점
- 생성된 동적 문서의 일부가 고정되어있고, 요청 시마다 변경되지 않는 경우에 발생하는 비효율성
- CGI사용하면, 프로그램은 요청이 들어올 때마다 전체 문서를 생성해야 한다.
- 고정부분이 들어있는 파일은 HTML로 생성, 변화 부분은 서버에서 수핼될 수 있는 스크립트(소스코드) 내장
액티브 문서
- 클라이언트가 실행, 서버부담은 줄고 클라 부담 커짐
- 클라이언트에서 수행될 프로그램 또는 스크립트를 필요로 한다. 이를 액티브 문서
- 자바애플릿, 자바스크립트가 있다.
HTTP
- 하이퍼텍스트 전송 프로토콜은 브라우저와 서버가 요청과 응답을 주고받으며, HTML형식의 웹페이지를 보여줌
- TCP연결만을 사용한다. 데이터만 클라이언트와 서버 사이에 전송
- 내용을 요청하고 응답을 받는 프로토콜
HTTP 트랜잭션
- HTTP가 TCP서비스를 이요하지만 HTTP 자체는 상태가 존재하지 않는 프로토콜이다.
- 정보가 서버에 저장되어 있지 않다(장:disk용량 단:DDOS공격)
- HTTP메소드 GET, POST, PUT(서버에 파일 업로드) 등등
- 트랜잭션-요청 응답 한덩어리
요청메시지
- 요청라인: cr(케리지 리턴 enter)과 lf(라인 피드)
- 요청 헤더라인: 클라에서 서버로 추가 정보를 전송
- Get /usr/bin/image1 (tcp연결되어 ip,port 생략)
조건부 요청
- if-Modified-Since: thu, sept 04 00:00:00 GMT
(수정날짜와 시간 조건 추가)
- 요청에 조건을 추가할 수 있다.
영속성
- HTTP1.0은 tcp/get/close반복 -비영속
HTTP1.1은 tcp/get/get/get/close -영속
쿠키
- WWW은 statelsee로 설계되었지만 쿠키를 사용하여 클라 정보 저장 가능
- 브라우저는 쿠키 디렉터리를 검색하여 서버가 보낸 쿠키를 찾는다. 만일 있으면 쿠키를 요청에 포함
- privacy문제 야기할수도 있다.
- 전자상거래, 등록된 사용자만 쓰게할 때
웹캐시: 프락시 서버
- 최신 요청에 대한 응답의 복사본을 가지고 있는 컴퓨터
- 프락시 서버로 요청보내고 프락시 서버는 캐시 검사 만일 캐시에 없다면 적절한 서버에 요청, 들어온 응답은 프락시 서버 보내지고 다른 클라요청에 대비해 저장
- 서버의 부하 줄이고, 트래픽 감소, 지연 개선
- HIT: Cach에서 데이터 찾는 확률이 중요 안그러면 RAM까지 갔다와야 한다.
- 원래 인터넷 사용이 늘면 전용선을 확장해야 하지만 proxy서버 사용하면 그 서버에 이용할려는게 있으면 거기서 바로 준다.(냉장고-아이스크림, 아이스크림-가게)