- 이번 글에서는 HTTP와 같이 알아두어야 할 '쿠키(Cookie)'와 '세션(Session)'에 대해 알아보겠습니다.
1) 왜 쿠키와 세션인가?
- HTTP는 비연결성(Connectionless)와 비상태성(Stateless)의 특징을 갖습니다.
이 의미는 HTTP는
1) 연결을 계속해서 유지하지 않고,
2) 요청과 응답의 상태를 저장하지 않는다
는 의미입니다.
하지만 실제로 클라이언트가 서비스에 로그인을 통해 접속한다면,
이후에 발생하는 해당 클라이언트의 요청을 식별해야 합니다.
즉, 사용자에게 매 요청마다 인증을 요구할 수 없으므로, 클라이언트의 상태(state)를 관리할 수 있는 수단이 필요합니다.
이러한 필요성에 따라 생겨난 것이 바로 쿠키(Cookie)와 세션(Session)입니다.
이 중에서 우선, 쿠키에 대해서 좀 더 자세히 알아보겠습니다.
2) 쿠키(Cookie)
- 쿠키는 Key-value 데이터 쌍으로 구성되며, 클라이언트의 정보를 기반으로 서버 측에서 생성하는
최대 4KB 크기의 데이터 조각입니다.
쿠키의 생성과 전달 과정은 아래 그림과 같습니다.
-
(1) 클라이언트가 서버에 페이지를 요청하면,
서버는 응답할 때 쿠키를 생성해서 응답 헤더(response header)에 같이 전달합니다.
(2) 이후 클라이언트는 서버 측에 요청을 할 때마다 요청 헤더(request header)에 쿠키를 같이 보냄으로써,
서버가 클라이언트를 식별할 수 있도록 합니다.
쿠키는 기본적으로 클라이언트의 브라우저에서 관리하는 데이터입니다.
따라서 보안적으로 다소 취약하다는 단점이 있습니다.
다음은 세션에 대해서 알아보겠습니다.
3) 세션(Session)
- 세션은 기본적으로 쿠키를 통해서 관리됩니다.
세션의 생성과 전달 과정은 아래 그림과 같습니다.
(1) 클라이언트가 서버에 페이지를 요청했을 때, 세션은 세션 ID를 쿠키에 담아서 응답합니다.
(2) 클라이언트는 이후 요청부터 요청 헤더(request header)의 쿠키에 세션 ID를 전달할 수 있고,
이를 통해 서버는 클라이언트를 식별할 수 있습니다.
(3) 그리고 클라이언트가 로그아웃한다면 세션은 종료됩니다.
세션은 기본적으로 서버의 데이터베이스에서 암호화된 형태로 관리되는 데이터입니다.
따라서 쿠키에 비해 보안적으로 안전하다는 장점이 있습니다.
반면, 세션의 데이터량이 늘어나는 경우, 서버에 과부하를 줄 수 있고, 서버의 성능이 저하될 수 있다는 단점이 있습니다.
참고
https://www.geeksforgeeks.org/difference-between-session-and-cookies/
기출로 대비하는 개발자 전공 면접
'네트워크' 카테고리의 다른 글
Restful 설계 원칙 (0) | 2022.08.26 |
---|---|
base64 인코딩 (0) | 2022.08.17 |
TCP vs UDP (0) | 2022.07.31 |
google.com에 접속했을 때 일어나는 일 (0) | 2022.07.30 |
HTTP와 HTTPS (0) | 2022.07.25 |