ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 쿠키(Cookie)와 세션(Session) 정리
    Web 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
Designed by Tistory.