Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

세션 vs 토큰 #1

Open
JasonYoo1995 opened this issue Sep 13, 2021 · 2 comments
Open

세션 vs 토큰 #1

JasonYoo1995 opened this issue Sep 13, 2021 · 2 comments

Comments

@JasonYoo1995
Copy link
Member

JasonYoo1995 commented Sep 13, 2021

작성자

@wooyounggggg

제목

세션 vs 토큰

개요

@JasonYoo1995 님의 요청으로 세션 vs 토큰이라는 주제를 제가 준비해서,
다음 주인 9월 12일 스터디에서 이야기 나눠보도록 하겠습니다 😄

@JasonYoo1995
Copy link
Member Author

작성자

@wooyounggggg

HTTP - 비연결성(Connectionless), 무상태(Stateless) 프로토콜

비연결성(Connectionless)

HTTP는 기본적으로 매 통신마다 새로운 커넥션을 맺고 끊는 것을 반복하는 비연결성 프로토콜입니다.
이러한 방식으로 통신을 하는 이유는, 통신에 필요한 리소스를 절약하여 서버가 최대한 많은 클라이언트의 요청을 처리하기 위함입니다.

무상태(Stateless)

HTTP가 비연결성 프로토콜이기 때문에, 매 연결마다 생성된 컨텍스트는 커넥션이 끊어지면서 사라지게 됩니다.
그래서 서버는 동일한 클라이언트가 요청을 보낸다고 할 지라도, 이를 계속해서 새로운 클라이언트로 인식하게 됩니다.

@JasonYoo1995
Copy link
Member Author

JasonYoo1995 commented Sep 13, 2021

작성자

@wooyounggggg

쿠키와 세션

상태 유지의 필요성

하지만 일반적인 웹 서비스만을 고려해보더라도, HTTP의 무상태라는 특성은 대부분의 비즈니스 요구사항을 만족하기 어렵습니다. 따라서, 이것에 대한 보완책으로 쿠키/세션 데이터에 상태를 저장하고, 매 통신마다 이를 함께 전송하여 상태를 구현합니다.

쿠키

쿠키는 요청의 상태를 저장할 필요가 있을 때, 서버가 전송하여 웹 브라우저에 저장되는 데이터입니다. 주로, 다음과 같은 상황에 쿠키를 활용합니다.

세션 관리(Session Management)

서버에 저장해야 할 필요가 있는 로그인 인증, 장바구니, 게임 스코어 등의 정보 관리

개인화(Personalization)

추천 영상, 추천 상품, 사용자 분석을 통한 광고 등 클라이언트에 따라 다른 데이터를 제공

트래킹(Tracking)

사용자의 행동을 분석하고 기록

쿠키 작동 방식

서버의 쿠키 생성

HTTP 요청 수신시, 서버는 아래와 같이 Response 헤더의 Set-Cookie에 key-value쌍의 쿠키 데이터를 넣어 클라이언트에게 전송합니다.

/* Response Header */
HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: yummy_cookie=choco
Set-Cookie: tasty_cookie=strawberry

브라우저의 쿠키 전송

브라우저는 서버로부터 받은 쿠키를 매 요청마다 자동으로 Cookie Header에 담아 전송합니다.

GET /sample_page.html HTTP/1.1
Host: www.example.org
Cookie: yummy_cookie=choco; tasty_cookie=strawberry

Set-Cookie에 대한 좀 더 자세한 설명은 MDN의 문서를 참고하세요.

세션

세션은 일정 시간(웹 서버에 접속한 시점 ~ 웹 브라우저를 종료하여 연결을 끝내는 시점)동안 같은 사용자(브라우저)로부터 들어오는 요구를 하나의 상태로 보고, 그 상태를 일정하게 유지시키는 기술을 의미합니다.

톰캣은 어떻게 세션을 생성할까

Stateful Server - 서버 수평 확장(Scale Out)의 방해요소

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant