Computer Science

쿠키와 세션 / 네트워크

이의찬 2024. 2. 23. 18:00

HTTP

W3 상에서 정보를 주고받을 수 있도록 정의된 프로토콜

  • Connectionless(비연결성) : 요청에 따른 응답을 받고나면 연결을 끊음
  • Stateless(무상태성) : 클라이언트-서버 관계에서 서버가 클라이언트의 상태를 보존하지 않음
→ 그런데 상태가 없다면 로그인같이 상태가 필요한 경우는?

쿠키 & 세션

HTTP의 무상태성 보완을 위해 등장한 기술들

쿠키

  • 클라이언트에 저장되는 Key-Value 쌍의 작은 데이터 파일
  • 사용자의 정보를 브라우저에 저장하기 위해서 등장
    • 초창기에는 사용자의 정보를 서버가 보관하기에는 사양이 떨어졌음
    • 그래서 쿠키를 클라이언트가 가지고 있다가 요청할 때 보내도록 함
    • 최대 용량은 4KB, 개수는 20개(한 사이트 당)
  • 동작 과정
    1. 클라이언트가 요청을 보내면 서버에서 쿠키를 생성
    2. 서버가 클라이언트로 보내는 응답의 헤더 중 Set-Cookie 라는 헤더에 키와 값을 보냄
    3. 응답을 받은 브라우저는 해당 쿠키를 저장
    4. 그 다음 요청부터 자동으로 쿠키를 헤더에 넣어 송신
    5. 브라우저가 종료되어도 쿠키 만료 기간이 남았다면 클라이언트에서 보관
  • 문제점
    • 인증 정보를 브라우저에 저장 → 탈취 위험
    • 용량 및 개수 제한이 있음

세션

  • 쿠키와는 반대로, 정보를 서버에 보관하는 방식
    • 쿠키의 트래픽 문제와 보안 문제를 해결
  • 동작 방식 
    1. 클라이언트가 서버에 요청을 보냄
    2. 서버에서는 HTTP Request를 통해 쿠키에서 Session ID를 확인
      1. 있다면 사용
      2. 없으면 Set-Cookie를 통해 발행한 Session ID를 보냄
    3. 클라이언트는 HTTP Request 헤더에 Session ID를 포함해서 원하는 리소스를 요청
    4. 서버는 세션 ID를 통해서 해당 세션을 찾아서 적절하게 응답

  • 문제점
    • 인증 정보를 서버에 저장 → 사용자 수에 따른 서버 리소스 소모

래퍼런스

https://hudi.blog/cookie-and-session/

 

쿠키와 세션 (ft. HTTP의 비연결성과 비상태성)

HTTP의 비연결성과 비상태성 HTTP는 요청과 응답을 한번 주고받으면 바로 연결을 끊어버리는 특성을 가지고 있다. 그리고 다음 요청을 하기 위해 다시 연결을 맺어야한다. 이를 HTTP의 비연결성(Conn

hudi.blog

https://dololak.tistory.com/535

 

[HTTP] HTTP 쿠키란(Cookie)? 쿠키 등장 배경 그리고 쿠키와 세션의 차이점.

쿠키란(Cookie)? 쿠키 등장 배경 쿠키는 HTTP 환경(웹환경)에서 상태를 유지하기 위한 기술입니다. HTTP의 특성상 매번 발생하는 HTTP 트랜잭션은 별개의 요청으로 판단하기 때문에 상태를 가질수 없

dololak.tistory.com

https://kyun2da.github.io/2020/12/28/cookieSession/

 

쿠키와 세션 차이 - Kyun2da Blog

1️⃣ 서론

Kyun2da.github.io