CS

Cookie/Session

쉽코기 2022. 9. 12. 21:49

Connectionless

  • http 프로토콜은 "connectionless, stateless"의 특징을 갖는다.
  • 각각의 서버에서 제공하는 http 프로토콜 버전을 사용하고 있다.
  • HTTP/1.1에서는 keep-alive 헤더를 통해 설정된 횟수 or 시간 만큼 연결상태를 지속한다.
  • HTTP/2.0 에서는 keep-alive 핃르를 무시한다. 대신 웹페이지를 떠날때까지 연결을 열어놓는다.

 

📌 Cookie

  • 키와 값이 저장되어있는 파일이다.
  • 4kb 까지 저장가능
  • 사용자가 설정하지 않아도 브라우저가 request header 에 쿠키를 자동으로 넣어서 서버에 전송한다.
  • 쿠키에는 세션쿠키, 지속쿠키(persistent cookie)가 존재한다.

Cookie 동작 방식

  1. 클라이언트가 페이지를 요청한다.
  2. 서버에서 쿠키를 생성한다.
  3. 서버에서 http header에 정보를 담은 쿠키를 포함시켜 응답한다.
  4. 브라우저가 종료되어도 쿠키의 유효 시간이 남아있다면 클라이언트에서 보관하고 있는다.
  5. 동일 사이트를 재방문하여 동일한 request가 갈 경우 이미 존재하고 있는 쿠키를 http header로 함께 보낸다.
  6. 서버에서 쿠키를 읽어 이전 상태 정보를 변경할 필요가 있을 때 쿠키를 업데이트 하여 변경된 쿠키를 http header에 포함시켜 응답한다.

session cookie

  • 브라우저를 닫는 순간삭제된다.
  • non-persistent cookies 또는 temporary cookies라고 부르기도 한다
  • 메모리에 저장되며 디스크에 절대 저장되지 않는다
  • 유효시간을 설정하지 않는 쿠키를 의미한다.
  • 온라인뱅킹 재접속 상황으로 이해할 수 있음 -> 브라우저가 유저 정보를 기억해선 안됨(재접속자가 초기 접속자와 다를 수 있음)

persistent cookie

  • 유저정보를 디바이스 저장
  • 디스크에 저당되며 유효기간 만료때 파괴된다.
  • 유효기간이 있는것이 persistent cookie / session 으로 명시된 것이 session cookie


📌 Session

  • Session Id 를 부여하여 인증상태를 유지한다.
  • 사용자 정보를 서버에 두어 쿠키보다 보안에 좋지만 서버 메모리를 많이 차지하게 됨
  • 세션은 정보가 서버에 있기 때문에 처가 요구되어지기에 쿠키보다 느린 속도를 갖는다.

Session 동작 방식

  1. 클라이언트가 서버에 접속 시 세션 ID를 발급 받는다.
  2. 클라이언트는 세션 ID에 대해 쿠키를 사용해 브라우저에 저장한다.
  3. 클라이언트는 서버에 요청할 때, 이 쿠키의 세션 ID를 같이 서버에 전달해서 요청한다.
  4. 서버는 세션 ID를 전달받아 세션 ID로 세션에 있는 클라이언트 정보를 가져와서 사용한다.
  5. 클라이언트 정보로 서버 요청을 처리하며 클라이언트에 응답한다.