Web

쿠키(Cookie)와 세션(Session) 정리

개발정리 2021. 9. 4. 22:05

왜 쿠키와 세션을 사용할까? 


HTTP 프로토콜의 특징이면서 약점을 보완하기 위해 사용

  • Stateless (무상태)
     
    • 통신이 끝난 후 상태를 유지하지 않는 특징
    • 연결을 끊는 순간 상태정보는 유지하지 않는다. 
  • Connectinoless (비연결지향)

    • 요청 & 응답 후 연결을 끊어버리는 특징

 

 

 

쿠키란 ?


특징 

  • 브라우저(로컬)에 저장되는 키와 값이 들어있는 데이터 파일이다. 
  • 클라이언트의 상태정보를 로컬에 저장했다가 참조한다. 
  • 클라이언트에 300개까지 저장 가능하며, 하나의 도메인당 20개의 값만 가질 수 있다.
    (하나의 쿠키값은 4KB까지 저장한다.)
  • Response Header 에 Set-Cookie 속성을 사용하면 쿠키를 만들 수 있다. 
  • 사용자가 따로 요청하지 않아도 브라우저가 Request시 Request Header를 넣어서 자동으로 서버에 전송한다. 

 

구성요소

  • Name
  • Value 
  • Expires 

    • 쿠키에 만료일이 보함되어 있으면 브라우저가 종료되어도 인증은 유지된다.
  • Domain

    • 쿠키가 사용되는 도메인을 지정
  • Path

    • 쿠키를 반환할 경로를 결정

 

동작방식

 

 

 

세션이란? 


특징 

  • 쿠키를 기반으로 하지만 서버측에서 관리한다. 
  • 서버는 클라이언트를 구분하기 위해 세션ID 를 부여하여 관리한다. 
  • 정보를 서버에 보관하기 때문에 보안에 좋지만, 메모리를 많이 차지하게 되어 서버 과부하로 성능 저하로 이어질 수 있다. 
  • 유효시간을 정할 수 있지만 브라우저가 종료되면 유효시간에 상관없이 삭제된다. 

동작방식 

  • 클라이언트가 서버에 자원을 요청한다.
  • 서버는 HTTP Request를 통해 쿠키에서 Session ID 를 확인 한 후 없으면 Set-Cookie를 통해 새로 발행한 Session ID를 HTTP Response 에 담아 보낸다.
  • 클라이언트는 HTTP Request 헤더에 Session ID 를 포함하여 원하는 자원을 요청한다. 
  • 서버는 Session ID 를 통해 해당 세션을 찾아 클라이언트의 상태정보를 유지하며 응답을 한다.

참고로 캐시는 이미지나 파일등을 브라우저나 서버 앞 단에 저장해놓고 사용하는 것이므로 쿠키&세션과는 엄연히 다르다. 

 

 

 

참고자료


https://interconnection.tistory.com/74

https://velog.io/@damiano1027/CS-%EC%BF%A0%ED%82%A4Cookie%EC%99%80-%EC%84%B8%EC%85%98Session

https://nesoy.github.io/articles/2017-03/Session-Cookie

'Web' 카테고리의 다른 글

Thread Pool (Java, Tomcat, SpringBoot)  (0) 2024.07.25
XML & JSON & YAML  (0) 2021.10.30
[DB] Connection Pool 정리  (1) 2021.09.11
HTTP 프로토콜 정리  (0) 2021.08.28