브라우저에는 값을 저장할 수 있는 브라우저 저장소들이 있다.

웹 스토리지

웹 스토리지는 LocalStorage와 SessionStorage로 나뉜다. 둘다 Map 즉 key-value 타입으로 저장한다. 로컬스토리지의 경우 강제로 지우지 않는 한 정보가 계속 저장되어있고, 세션스토리지의 경우 세션이 만료되면 지워진다.

캐시

캐시는 서버와 계속 통신한다. 웹 스토리지에 비해 저장 용량이 적다.

Session

  • 통로(DB): 클라이언트와 서버 사이의 유일하게 개방되어있는 통로
  • 시간(WEB): 클라이언트가 서버의 어플리케이션을 사용하고 있는 동안을 한 세션으로 정의 (최초의 요청 ~~~ 종료)

쿠키

쿠키: 웹 서버가 클라이언트에 전송하는 작은 데이터 조각.

HTTP: stateless(대화가 불가능하다)

  • HTTP 프로토콜은 기본적으로 상태가 없다. = 요청, 응답이 끝나면 그걸로 끝이다.
  • connectless('세션'이 web에선 '시간'이라는 의미로 쓰이는 이유. 비연결지향형: 웹에서 통로로 계속 열어놓으면 부하가 너무 크니 사용이 끝나면 다 끊어버린다)
  • (HTTP1.1 은 connectful, 연결지향형 버전이긴 함)

세션과 쿠키의 차이점

  • 만약 알라딘에서 장바구니 담을때 정보를 클라이언트쪽에 저장하면 쿠키, 서버쪽에 저장하면 세션
  • 세션의 경우 브라우저가 다르면 다름, 세션 ID존재

Session Tracking Mode

  • 세션 ID를 통해 세션을 식별하는 방법
  • 클라이언트한테서 요청이 왔는데 ID가 없으면 최초의 요청으로 인식하고 새로운 ID를 만든다. 그 후 응답데이터에 세션 ID를 포함시켜 보내면 클라이언트쪽에서 다시 그 세션 ID를 담아서 보냄
  1. COOKIE: e.g. JSESSIONID 와 같은 세션 아이디를 식별할 수 있는 쿠키를 C-S 사이에서 주고 받는다.
  2. SSL : Secure Layer를 통해 세션 아이디를 주고받는 방법. 전송 계층을 보안 처리하여 데이터를 보호하는 방법의 일종 (http: non-secure, https: secure)
  3. URL: 세션 식별을 위한 아이디를 request line을 통해 주고받는 방법 (보안에 취약)

세션 종료 조건

  1. timeout 이내에 동일한 클라이언트로부터의 새로운 요청이 없을 때 / 톰캣: 30분
  2. 브라우저 종료
  3. 더이상 쿠키(JSESSIONID) 전송이 없을 때 **세션과 쿠키의 차이점 기술면접 잘나옴
  4. *직접 로그아웃을 했을 때 (session을 invalidation)

세션이 종료될 때 session scope도 사라진다.