쿠키/세션/캐시

송승찬·2020년 11월 17일
0

TIL

목록 보기
51/52

클라이언트 - 서버 간 통신 규칙을 Http라 할 수 있다.
HTTP의 특징은 2가지로 볼 수 있는데 다음과 같다.
1. Stateless

  • 서버는 클라이언트의 상태를 기억하고 있을 필요가 없다.
    데이터를 주고 받았어도, 그 다음 통신에서는 이전 데이터나 상태를 기억할 필요가 없다.
  1. Connectionless
  • 클라이언트가 서버에 요청(Request)을 했을 때,그 요청에 맞는 응답(Response)을 보낸 후 연결을 끊는 처리방식이다.
    HTTP 1.1 버전에서 연결을 유지하고, 재활용 하는 기능이 Default 로 추가되었다. (keep-alive 값으로 변경 가능)

그러나 실제로는 클라이언트(브라우저)의 데이터를 유지해야 할 필요한 경우가 굉장히 많다.
예를 들어 페이지를 이동시마다 로그인을 새로 해야한다거나 내가 담아놓은 상품이 장바구니에 없다면?
이런 일들을 방지하기 위해 statefull하게 브라우저의 정보를 저장할 필요가 있는데 이런 일들을 도와주는 게 쿠키와 세션이다

쿠키와 세션

쿠키

  • 클라이언트 -> 서버로 데이터 요청시 request header에 담겨 전송되는 텍스트 데이터 조각
  • 사용자의 브라우저(클라이언트 혹은 로컬이라 부름)에 저장,
  • 보안에 취약
  • 브라우저 종료시에도 쿠키는 그대로 유지된다.(만료 기한 종료시 사라짐)
    -이름,값,만료일(저장 기간 설정), 경로 정보로 구성

세션

  • 데이터를 서버에 저장
  • 쿠키보다 보안에서 안전
  • 브라우저 종료시 -> 세션 정보도 안녕
  • 상태를 일정하게 유지시키기 위해 사용,저장 데이터에 제한이 없고 각 클라이언트의 고유 세션 ID를 부여한다.이를 통해 클라이언트를 구분해서 각 클라이언트 요구에 맞는 서비스 제공 가능

세션의 통신 과정

  • 클라이언트 -> 서버 요청시 세션 아이디 발급
  • 세션 아이디를 쿠키를 통해 클라이언트에 전달
  • 이후에는 클라이언트 -> 서버 요청시 request header에
    저장된 세션 아이디를 통해 특정 클라이언트의 로그인 유무나 여러
    정보를 확인

세션만 쓰면 서버자원 너무 잡아먹기에 쿠키도 사용

캐시

  • 자주 쓰이는 정보들을 임시 저장해놓는 곳
  • CSS/JS/이미지 파일같이 자주 쓰이는 것들을
    매번 서버에서 불러올 필요없이 사용자의 컴퓨터에 저장 후
    필요할 때 마다 사용
  • 서버를 거쳐 데이터를 불러올 때보다 속도 향상
profile
superfly

0개의 댓글