쿠키와 세션은 왜 필요할까요?
쿠키와 세션이 필요하다는 것을 알기 위해서는 먼저 HTTP 의 특성을 알아야합니다.
HTTP 의 특성 중 statelss라는 무상태성을 가지는데, 이는 상태가 없다는 뜻으로 서버가 클라이언트의 정보를 기억하고 있지 않습니다.
쉽게 말해서 사용자가 로그인을 해서 클라이언트가 "1번 사용자 로그인 했어요" 라고 서버에게 말을 하고 나서,
다음 요청을 보낼 때 클라이언트가 "1번 사용자가 ㅇㅇㅇ 하고 싶어요" 라는 요청을 보낼 때,
서버는 "1번 사용자가 누군데요?" 라는 응답을 보내게 됩니다.
그래서 우리는 요청을 보낼 때마다 로그인을 해야하는 불편함을 가지게 되고, 이를 해결하기 위해 정보를 어딘가에 담을 수 있는 쿠키와 세션을 사용합니다.
쿠키는 무엇인가요?
먼저 쿠키에 대해 설명하기에 앞서 왜 쿠키를 먼저 설명할까요?
저는 글을 작성하기 전에는 쿠키와 서버는 반대 개념이라고 생각했었습니다,,
하지만 세션 ID(자세한 얘기는 세션에서)를 저장하기 위해서는 쿠키를 사용합니다!
그래서 쿠키를 먼저 설명하고, 세션을 적어보겠습니다
쿠키 특징
- 사용자 컴퓨터에 저장되는 아주 작은 "텍스트 파일"로써 최대 크기 4KB
- 서버가 중요하지 않는 정보를 쿠키에 담아 클라이언트에 응답
- 클라이언트에 저장
세션은 무엇인가요?
세션은 서버 측에서 사용자를 구분하기 위해 세션 ID를 사용하는 개념입니다.
처음에 말했다시피, 세션을 사용하지 않게 되면 1번 사용자가 로그인을 하게 되면 서버는 1번 사용자가 맞는지 알 수 없습니다.
그래서 다음 요청 때는 1번 사용자 세션 ID와 함께 서버에 요청을 보내면 이전과는 다르게
"1번 사용자군요 알겠습니다"하고 요청을 처리하게 됩니다.
그렇다면 여기서 클라이언트가 서버에게 세션 ID를 넘겨줄 때는 어떻게 넘겨줄까요?
바로 앞에서 설명한 쿠키입니다.
쿠키에 세션 ID를 담아서 서버에게 요청함으로써, 사용자를 식별할 수 있는 key를 주는 것입니다.
세션 특징
- 서버에 접근하는 클라이언트를 식별
- 사용자 정보를 포함하는 서버 측 파일
- 쿠키에 종속적
- 다른 페이지로 사용자의 정보를 전송함으로써 사용자를 알 수 있다
- 로그인하면 시작, 로그아웃하거나 시스템 종료 시 세션이 종료된다
세션 vs 쿠키
둘은 정반대 개념?
앞서 미리 말했지만 두 개념은 정반대의 개념이 아니라는 생각이 듭니다.
세션은 쿠키에 종속적입니다. 즉, 서버가 세션 ID를 클라이언트에 전송하기 위해서는 쿠키에 세션 ID를 담아서 보냅니다.
사용자 정보를 포함하는 "클라이언트" 쪽 파일, 세션은 "서버" 쪽 파일이라는 관점으로 봤을 때는 정반대 개념이라고 할 수는 있을 것 같습니다.
사용
쿠키는 유튜브 채널을 통해 노래를 검색하면 다음 유튜브를 방문할 대 쿠키가 검색 기록을 읽고 유사한 노래를 표시합니다.
우리가 흔히 말하는 유튜브 알고리즘이 이런게 아닐까라는 생각이 듭니다
안전 유무
쿠키에 저장된 정보는 누구나 읽을 수 있는 텍스트 형식으로 저장되기 때문에 안전하지 않지만,
세션은 세션 ID로 표현되기 때문에 쿠키보다는 안전합니다
결론
이번 글을 쓰면서 세션과 쿠키에 대해 정확하게 알 수 있었던 것 같습니다.
항상 쿠키와 세션을 비교하길래 둘은 정반대의 개념인 줄 알았지만, 세션은 쿠키에 종속적입니다.
하지만 관점을 다르게 하여 어느 쪽에 해당 정보를 다루는지를 보면 세션과 쿠키가 반대라는 생각을 할 수 있다고 생각합니다
REFERENCES
https://www.tutorialspoint.com/What-is-the-difference-between-session-and-cookies
https://www.javatpoint.com/session-vs-cookies
https://www.guru99.com/difference-between-cookie-session.html
'Computer Network' 카테고리의 다른 글
global cache vs local cache (0) | 2023.01.13 |
---|