[어플리케이션 계층] 쿠키 세션 캐시

수영·2022년 3월 30일
1

네트워크

목록 보기
4/5

쿠키 Cookie

: 웹사이트 접속 시 사용자의 브라우저에 저장되는 기록

  • Why? 같은 사이트 재접속 시 사용자의 상태 유지(로그인 유지)를 위해 (HTTP의 Stateless를 보완하고자)
  • What? 이름, 값, 유효기간, 도메인, 경로를 텍스트 파일로 저장함

HTTP는 무상태 프로토콜(stateless)로, 클라이언트와 서버의 연결 상태는 유지되지 않는다. 즉 파일 전송은 1번으로 제한되어있어 페이지 이동 시 다시 연결을 맺어야한다. 쿠키를 이용하면 접속한 곳을 식별하여 여러 웹페이지에서도 처리 가능하다. 즉 stateful 하게 된다.

ex) 로그인 했을때 해당 사이트의 로그인 상태(비번 제외)가 내 쿠키에 저장됨. 브라우저를 껐다 새로 켜도 로그인 상태 유지됨. 혹은 웹페이지 열람 이력이 저장되어 다음에 열었을때도 해당 페이지가 열림.

쿠키 생성 과정

  1. 최초 접속 시 서버에서 Set-Cookie를 만들어서 보냄
  2. 웹 브라우저의 쿠키 저장소에 쿠키를 저장함
  3. 이후 클라이언트는 요청 시 해당 쿠키를 HTTP 헤더에 실어서 보냄

특징

  • 서버에서 쿠키 생성 시 유효기간 지정하여 함께 전송한다.
  • 브라우저를 닫아도 저장된다. (유효기간 미설정시 브라우저 닫으면 쿠키 삭제)
  • 보안에 취약하다.
  • EX) 로그인 상태 정보(비번 제외), 광고 정보 트래킹, 장바구니

세션 Session

: 서버측에서 저장하는 클라이언트의 상태나 값(ex. 로그인 상태 정보)

  • Why? 같은 사이트 재접속 시 사용자의 상태 유지(로그인 유지)를 위해 (HTTP의 Stateless를 보완하고자)
  • What? 세션 ID, 세션 생성 시간, 세션의 최근 접근 시간을 저장함

웹브라우저가 요청시 서버에서 세션을 생성함. 이때, 서버측에서 클라이언트를 구분하고자 세션ID를 생성함. (이후 세션 ID는 쿠키를 통해서 서로 전달)

세션 생성 과정

  1. 클라이언트에서 서버에 최초 로그인 시,
    서버측에서 세션 생성하고 세션 ID를 쿠키에 넣어 보냄
    (ex. set-cookie : session_id = 12345)
  2. 이후 요청시 클라이언트는 쿠키안에 세션 ID도 함께 전송함

특징

  • 기본적으로 브라우저를 닫으면 소멸된다.
  • 보안이 강함 (서버가 해킹당하거나 세션 ID를 감청당하지 않으면)

쿠키와 세션 비교

쿠키세션
저장위치클라이언트서버
보안보안 취약보안이 강함
라이프 사이클유효기간 설정가능, 브라우저 종료 시에도 유지 가능유효기간 설정가능, 브라우저 종료시 삭제
속도빠름느림 (서버에서 전송해오기 때문에)

캐시 Cache

: 사용자의 로컬 PC에 저장되는 웹사이트의 데이터들

  • Why? 같은 사이트에 재접속시 중복되는 데이터를 빠르게 받기 위해서
  • What? 주로 이미지 파일, css, js, 배너 등 변경 사항이 크지 않고, 용량이 큰 파일들을 저장함

캐시 생성 과정 :

  1. 최초 접속시 브라우저 캐시에 응답결과를 저장
  2. 이후 접속부터는 먼저 캐시보관소를 찾아봄 (정해진 시간 안에 접속시)

특징

  • 서버가 아니라 로컬 PC의 캐시에서 불러오기에 속도가 빠르고 네트워크 비용도 절약함

Reference

https://penguingoon.tistory.com/118
https://maivve.tistory.com/180
https://velog.io/@gwanuuoo/%EC%BF%A0%ED%82%A4-%EC%84%B8%EC%85%98-%EC%BA%90%EC%8B%9C%EB%9E%80
https://youngjinmo.github.io/2020/03/web-session-cookie-cache/

profile
🎵🎵🎵🎶🎵

0개의 댓글