본문 바로가기
Develop/Web

[HTTP] 쿠키, 세션 그리고 캐시는 무엇일까?

by Tarra 2022. 4. 12.

 

쿠키 vs 세션 vs 캐시


쿠키?

쿠키란 하이퍼 텍스트의 기록서(HTTP)의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일을 일컫는다. HTTP 쿠키, 웹 쿠키, 브라우저 쿠키라고도 한다.

+ 웹 페이지를 받을 때, 같이 해당 정보를 쿠키에 담아 로컬에 저장하고, 다시 요청을 보내면 서버에서 쿠키 안의 정보를 확인하여 쿠키를 업데이트 한 후 HTTP 헤더에 포함시켜 응답한다.

 

 

세션?

웹 서버에서 임시로 클라이언트의 데이터를 갈무리하는 것을 뜻한다. 쿠키와 역할이 비슷한데, 쿠키는 클라이언트 측에 데이터를 갈무리하는 반면에 세션은 서버 측에 데이터를 갈무리해 놓는다는 차이점이 있다. 주로 로그인, 온라인 쇼핑몰의 장바구니 등에 쓰인다.

+ 사이트와 브라우저 사이의 상태를 유지하는 것을 의미한다.
특히 우리가 배우는 django에선느 특정 session id를 포함하는 쿠키를 활용해 각 브라우저와 사이트가 연결된 세션을 알아낸다.

 

 

 

캐시?

캐시는 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다.

+ 이미지, css, js 파일을 브라우저 혹은 서버단의 캐시 메모리에 저장하여 사용한다.
가까운 시일 내에 다시 사용될 확률이 높은 것을 임시적으로 저장해, 다시 재요청이 들어왔을 때,
해당 요청에 대하여 빠른 응답이 가능토록 한다.

 

1) HTTP


1. HTTP

- Hyper Text Transfer Protocol

- HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 클라이언트, 서버간의 프로토콜(규칙, 규약)으로,

웹에서 이루어지는 모든 데이터 교환의 규약을 의미한다.

 

 

2. 요청과 응답

 - 요청 (request)

    - 클라이언트(브라우저)에 의해 전송되는 메세지를 의미한다.

 

- 응답 (response)

    - 서버에서 응답으로 전송되는 메세지를 의미한다.

 

 

3. 특징

- 비연결 지향(Connectionless)

    - 서버는 클라이언트의 요청에 대한 응답을 보낸 후 클라이언트와의 연결을 해제한다.

 

- 무상태성(Stateless)

    - 연결을 끊는 순간 클라이언트와 서버 간의 통신이 끝나며 상태 정보가 유지되지 않는다.

    - 클라이언트와 서버가 주고 받는 메세지들은 서로 완전히 독립적이다.

 

 

+ 이러한 서버와 클라이언트간의 관계를 지속적으로  유지시키기 위한 방법이 

 쿠키와 세션이다.

 

 

 

 

 

2) 쿠키 (Cookie)


1. 쿠키란?

사용자의 브라우저에 저장되고, 통신할 때 HTTP 헤더에 포함되는 텍스트 데이터 파일을 의미한다.
일반적으로 이름, 값 만료기간(지정 가능), 경로 정보가 있고 키와 값으로 구성되어 있으며,
해당 사용자의 컴퓨터를 사용한다면 누구나 쿠키에 입력된 값을 쉽게 확인 가능하기 때문에 보안성이 낮은편이다.


 

2. 구성 요소

 - 이름 : 쿠키의 구분

 - 값 : 쿠키의 이름과 관련된 값

 - 유효시간 : 쿠키의 유지시간

 - 도메인 : 쿠키를 전송하기 위한 도메인

 - 경로 : 쿠리를 전송할 요청 경로

 

 

3. 동작 방식

  (1) 최초의 통신에서는 쿠키가 없으므로 클라이언트가 요청을 한다.

 

  (2) 서버에서 쿠키를 생성한다.

 

  (3) 서버가 HTTP 헤더에 쿠키를 포함시켜 응답한다.

 

  (4) 브라우저가 종료되어도 쿠키 만료 기간이 남아있다면 로컬에 쿠키를 보관한다.

 

  (5) 같은 사용자가 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보낸다.

 

  (6) 서버에서 쿠키를 읽어 이전 상태 정보를 변경할 필요가 경우,

      쿠키를 업데이트 하여 변경된 쿠키를 HTTP 헤더에 포함시켜 응답한다.

 

 

4. 사용목적

    1) 세션관리 (Session management)

        - 로그인, 아이디 자동완성, 공지 하루 안보기등의 정보 관리를 한다.

 

    2) 개인화 (Personalization)

      - 사용자 선호, 테마등의 설정을 한다.

 

   3) 트래킹 (Tracking)

      - 사용자의 행동을 기록하고 분석한다.

 

 

 

 

 

3) 세션 (Session)


1. 세션이란?

간단하게 말하면 사이트와 특정 브라우저 사이의 상태를 유지시키는 것을 말한다.

서버에 저장되는 쿠키. 클라이언트와 서버의 통신 상태. 주로 중요한 데이터를 저장 시에 주로 사용되며,
브라우저를 종료할 때까지 유지 됨
사용자 로컬이 아닌 서버에 직접 저장되므로 보안성이 쿠키에 비해 높다.

 

2. 동작 방식

  (1) 클라이언트가 서버에 접속 후 로그인 하면 세션 ID를 발급받는다.

 

  (2) 클라이언트는 세션 ID를 쿠키에 저장하여 로컬에 보관한다.

 

  (3) 클라이언트는 서버에 요청을 할 때, 세션 ID가 담긴 쿠키를 서버에 함께 전달한다.

 

  (4) 서버는 쿠키에 저장된 세션 ID를 받아, 서버 측 세션에 있는 클라이언트 정보를 가져온다.

 

  (5) 해당 정보가 일치하는지의 여부를 판단하여 클라이언트에게 응답한다. ( 로그인 상태등을 유지할지 )

 

 

3. 세션의 특징

  - 사용자에 대한 정보를 클라이언트(브라우저 , 로컬)이 아닌 서버에 보관하기 때문에 보안성은 높으나,

    사용자가 늘어날 경우에 서버 메모리를 많이 차지하게 된다.

    따라서 동접자가 많을 수록 성능이 떨어지는 특성을 보인다.

 

 

 

 

4) 캐시 (Cache)


1. 캐시란?

간단히 리소스 파일들의 임시 저장소를 의미한다.

같은 웹 페이지에 접속할 때, 특정한 데이터를 미리 저장한 사용자의 PC에서 로드하므로 서버를 거치지 않아 빠르다.

다시 말해 이전에 사용되었던 데이터 중 다시 사용될 가능성이 높은 데이터를 PC에 저장해, 

필요시 빠른 속도로 가져오는 것을 의미한다.


'Develop > Web' 카테고리의 다른 글

[정리] bootstrap gird  (0) 2022.02.14
[정리] CSS 요약  (0) 2022.02.14
[정리] HTML 요약  (0) 2022.02.13