본문 바로가기
CS/네트워크

[네트워크] 응용 계층 Application Layer : Web과 HTTP - 쿠키와 캐시

by DenverAlmighty 2024. 12. 11.

1. 쿠키

많은 웹 사이트가 쿠키를 사용한다.

1) 쿠키 정의와 특징

쿠키란?

: 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 사용자의 웹 브라우저를 통해 인터넷 사용자의 컴퓨터나 다른 기기에 설치되는 작은 기록정보 파일을 말한다.

 

활용 분야

인증, 장바구니, 추천, 사용자 세션 유지(웹 이메일)

 

사용자는 장바구니 기능 등을 이용할 수 있고, 인증을 하지 않아도된다. 

서버는 사용자 정보를 수집해 추천 시스템 등에 활용할 수 있다.

 

 

2) 쿠키의 4 요소

  • HTTP 응답 메세지의 쿠키 헤더 라인
  • 다음 요청 메세지의 쿠키 헤더 라인
  • 사용자 호스트에 보관된 쿠키 파일. 사용자 브라우저가 관리한다.
  • 웹사이트의 백엔드 데이터베이스

 

3) 쿠키 동작 과정

웹사이트에 최초 접속 시,

서버에 HTTP 요청이 처음 도착하면, 웹사이트는 Unique ID와 ID에 해당하는 백엔드 데이터베이스에 entry를 만든다.

response 메세지 header에 set-coocke : <사용자ID> 를 추가해 보낸다.

그 이후 클라이언트는 request 요청 메세지에 coockie 헤더 라인을 추가해 보낸다.

백엔드 데이터베이스에 해당 ID로 어떤 transaction이 있는지 기록한다.

 

 

 

2. 웹 캐시 (Proxy Server)

1) 웹 캐시란?

웹 캐시의 목적은 서버 없이 클라이언트 요청에 응답하는 것이다.

캐시는 클라이언트와 서버 둘 다의 역할울 한다. 서버와에서는 클라이언트 역할이고, 클라이언트와 관계에서는 서버 역할이다.

캐시는 주로 ISP(대학, 회사 residential ISP)가 설치한다. 

 

2) 웹 캐싱을 하는 이유?

클라이언트 요청에 대한 응답 시간을 감소할 수 있다.

기관의 접속 링크의 트래픽을 줄일 수 있다. (비용 절감)

"열악한" 콘텐츠 제공업체가 콘텐츠를 효과적으로 전달할 수 있게된다.(P2P 파일 공유도 마찬가지)

 

 

3) Conditional GET

원래 서버에 데이터가 수정 될 수 있다. 그러므로 웹 캐시에 있는 데이터가 최신인지 확인하는 작업이 필요하다. 이 때 Conditional GET을 사용한다.

 

웹 캐시가 Conditional GET으로,  헤더에  if-modified-since 를 포함해 origin 서버에 요청을 보낸다.

if-modified-since에 들어가는 값은 데이터를 받을 때 Last Modified 헤더의 값을 저장해둔 것이다.

 

서버는 데이터가 수정되지 않았다면 304 Not Modified 로 응답한다. 이 때 객체는 보내지 않는다.

수정된 경우 200 OK로 응답하고 객체를 보낸다.