공부/Web

[Web] Session vs Token vs Cookie

비렴 2022. 5. 30. 17:22

[HTTP 프로토콜]

1. HTTP(Hypertext Transfer Protocol)이란?
    - 인터넷 상에서 데이터를 주고 받기 위한 프로토콜.

    - 클라이언트의 요청을 보내면 서버가 요청을 해석해서 응답을 하는 것!

2. 특징
    1) Stateless
       - 서버로 가는 모든 요청이 다른 요청과 독립적으로 다뤄진다는 의미
       - 즉, 요청이 끝나면 같은 클라이언트라고 해도 서버는 클라이언트의 이전 상태 정보를 알 수 없다

    2) Connectionless 
       - 서버에 연결하고 요청해서 응답을 받으면 연결을 끊어버린다
       - 기본적으로 한 자원에 하나의 연결
       - 데이터를 유지해야할 때는 단점으로 작용

 

[Cookie]

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

   2) 구성요소
       - 이름 : 각각의 쿠키를 구별하는 데 사용되는 이름
      - 값 : 쿠키의 이름과 관련된 값
      - 유효시간 : 유지 시간
      - 도메인 : 쿠키를 전송할 도메인 ( 도메인은 제한이 있다. 예를 들면 유튜브에서 준 쿠키는 유튜브에만 보낼 수 있다)
      - 경로 : 쿠키를 전송할 경로

   3) 방식
        클라이언트가 서버에 요청(Request)
        쿠키 X                                              쿠키 O
             |                                                       |
       서버는 쿠키를 생성                            응답 
             |                                           
      응답할때 쿠키와 함께 돌려줌    
             |
      로컬PC에 저장

 

 

 

[Session]

1. Session
   1) Session이란?
       - 쿠키를 기반으로, 서버에서 사용자 정보 파일을 관리하는 것
       - 클라이언트를 구분하기 위해 Session ID를 부여하며 브라우저를 종료할 때까지 인증상태 유지
       - 브라우저에 저장하는 쿠키와 달리 서버에 두기 때문에 보안에 좋지만 사용자가 많아질수록 서버 메모리를 많이 차지
       - 동접자가 많을수록 서버에 과부하 -> 성능 저하

   2) 방식
       클라이언트가 서버에 요청(Request)
                                   |
      서버는 쿠키를 확인해서 세션 ID가 있는 지 확인
             |                                                       |
        세션ID X                                      세션ID O
             |                                                       |
       서버는 세션ID를 생성                   세션DB에서 세션ID를 확인
             |                                                       |
       세션 DB에 저장                             클라이언트에 응답
             |
       클라이언트에게 응답 및 세션ID 보냄

 

 

 

[쿠키와 세션의 차이]

세션도 결국 쿠키를 사용하기 때문에 동작원리가 비슷하며 역할도 비슷하다.
차이점은?
   1) 사용자 정보가 저장되는 위치
       쿠키 : 로컬; 서버의 자원을 전혀 사용X
       세션 : 서버
    2) 보안 - 세션 > 쿠키
    3) 요청 속도 - 세션 < 쿠키
    4) 유지 시간
        쿠키 : 파일로 저장되기 때문에 브라우저를 종료해도 계속해서 정보가 남을 수 있다
        세션 : 만료 시간이 있지만 브라우저가 종료하게 되면 만료시간에 상관없이 삭제