웹 클라이언트와 웹 서버 사이에 사용자 상태 및 정보를 유지하고 관리하는데 사용되는 관계를 의미한다.
주요 특징은 아래와 같다.
- 상태 유지
- 보안
- 세션 식별자
- 유효기간
세션은 웹 클라이언트와 웹 서버 간의 상태를 유지하고 사용자의 활동을 추적한다. 그리고 세션은 서버 측에 저장되고 데이터가 서버 측에 있는 세션DB에 있기 때문에 보안측면에서 유리하다.
세션 식별자, 즉 세션ID를 갖기 때문에 사용자를 고유하게 식별하고 세션 관리할 때 사용된다. 그리고 세션은 일정 기간만 유지되며 유효 기간이 지나면 자동 삭제된다.
주요 작동 원리는 아래와 같다.
- 세션 시작
- 세션 ID 전달
- 서버에서 세션 관리
- 세션 종료
우리가 만약 어떠한 웹 사이트에 로그인을 하고 싶다. 해당 웹 사이트는 세션을 사용한다고 가정해보자.
우선 우리는 로그인을 진행하고 만약, 로그인이 성공적으로 진행된다면 서버는 사용자에게 세션 ID를 쿠키에 넣어 줄 것이다.
이러한 세션 ID를 받지 못한다면, HTTP의 주요 특징인 무상태로 인해 다른 요청에도 로그인을 해야할 것이다.
이러한 번거로움을 해결하는(위에 주요 특징인 상태 유지 특성) 방법으로 세션 ID를 받는다면, 우리는 해당 웹 사이트의 다른 페이지로 간다 해도 세션 ID를 갖고 있기 때문에 서버는 특별한 로그인 없이 사용자가 누구인지 알 수 있을 것이다.
즉, 우리가 로그인을 진행했다면 서버는 우리에게 세션 ID를 줄 것이고 이 세션ID는 세션DB에서 고유한 값이고 세션ID만 있다면 세션DB에서 정보를 찾아 건네줄 수 있다.
세션은 웹 애플리케이션의 핵심 기능 중 하나이며, 사용자 경험을 개선하고 보안을 유지하는 데 필수적이다.
클라이언트와 서버 간의 상태 관리를 효율적으로 수행하고 사용자 인증, 권한 부여, 장바구니, 사용자 설정과 같은 다양한 웹 애플리케이션 요구 사항을 충족하기 위해 세션을 사용한다.