본문 바로가기
Dev/Network

『Network』 쿠키, 세션

by 세대교체 2024. 11. 29.

쿠키

쿠키클라이언트(브라우저)의 로컬에 저장되는 작은 데이터 파일로 키와 값의 쌍으로 이루어져 있다. 서버에서 생성되어 클라이언트로 전송되며 클라이언트는 이를 저장하고 필요시 다시 서버로 전송한다.

 

만료 시간을 지정할 수 있어 브라우저가 종료되어도 쿠키가 유지될 수 있다. 사용자가 별도의 요청을 하지 않아도 브라우저가 자동으로 서버에 쿠키를 전송한다.

 

 

동작 원리

  • 클라이언트 요청: 클라이언트가 서버에 페이지를 요청한다.
  • 쿠키 생성 및 전달: 서버는 필요한 경우 쿠키를 생성하여 HTTP 응답 헤더에 포함시켜 클라이언트로 전송한다.
  • 쿠키 저장: 클라이언트는 수신한 쿠키를 로컬에 저장한다.
  • 쿠키 자동 전송: 이후 동일한 도메인에 대한 요청 시 브라우저는 자동으로 쿠키를 HTTP 요청 헤더에 포함하여 서버로 전송한다.
  • 쿠키 갱신: 서버는 필요에 따라 쿠키를 갱신하고 이를 다시 클라이언트로 전송한다.

 

Spring MVC에서 쿠키 사용하기

 

 

세션

세션서버 측에서 관리되는 클라이언트의 상태 정보다. 클라이언트를 구분하기 위해 서버는 각 클라이언트에 고유한 세션 ID를 부여한다. 클라이언트의 상태 정보를 서버에서 관리하므로 보안성이 높다.

 

세션 정보는 서버 메모리를 사용하므로 클라이언트 수가 많아지면 서버에 부담이 될 수 있다. 브라우저를 종료하면 세션이 만료되는 것이 기본 설정이지만 설정에 따라 세션 유효 기간을 지정할 수 있다.

 

 

동작 원리

  • 세션 생성: 클라이언트가 서버에 처음 접속하면 서버는 고유한 세션 ID를 생성한다.
  • 세션 ID 저장: 생성된 세션 ID는 쿠키를 통해 클라이언트의 브라우저에 저장된다.
  • 세션 ID 전송: 클라이언트는 이후의 요청 시 이 세션 ID를 쿠키를 통해 서버에 전달한다.
  • 세션 확인 및 조회: 서버는 수신한 세션 ID를 확인하여 해당 클라이언트의 세션 정보를 조회한다.
  • 요청 처리 및 응답: 서버는 세션 정보를 활용하여 요청을 처리하고 결과를 클라이언트에게 응답한다.

 

Spring MVC에서 세션 사용하기

 

 

쿠키와 세션의 차이점

구분 쿠키 세션
저장 위치 클라이언트 로컬 서버
보안 비교적 취약 비교적 안전
생명 주기 만료 기간까지 유지 브라우저 종료 시 기본 만료
속도 빠름 상대적으로 느림