세션의 생명주기
한 클라이언트가 하나의 브라우저를 이용해 최초의 요청을 보내면 세션이 시작된다.
서버에서는 최초의 요청을 알아내기 위해 ID 값을 읽어온다.
현재 우리는 이 값을 읽어오는 방식으로 쿠키를 이용한다.
클라이언트에서 요청이 온다 1번
클라이언트에게 응답을 보낸다 2번
ID를 헤더에 같이 동봉하여 보낸다.
그럼 이 세션ID를 쿠키로 저장한다.
이제 두번째 요청[3번]이 발생하면 이번에도 같이 ID를 리퀘스트헤더에 쿠키헤더에 저장해 서버에 보낸다.
서버에서는 이 ID를 읽어 동일한 ID임을 알고 세션을 유지하게 된다.
클라이언트와 서버에 세션ID를 저장할 수 있는데,
클라이언트에 쿠키에 세션ID를 저장할 때에 단점은, 예로 음악 스트리밍 서비스에서 로그인 하지 않고도 재생목록을 저장할 수 있는 이유는 클라이언트의 쿠키에 저장하기 때문이다. 하지만 이는 클라이언트에게 큰 부하를 준다. 서버에 저장하는것이 아님.
그런데 이 재생목록 파일들이 문자열이 아닌데 이를 문자열로 저장하기 위해 직렬화, 마샬링 과정이 필요하다.
이를 서버에서는 역직렬화, 언마샬링해 스트리밍 서비스를 지원하게 된다.
첫째는 부하가 많이 걸린다는것.
두번째는?
한 사이트에서 저장할 수 있는 쿠키가 제한되어 있다는 것이다. 요청과 응답 사이 보낼 수 있는 쿠키의 용량은 제한이 있다.
또한 클라이언트에 쿠키가 저장되어 있기때문에 PC방 혹은 타인이 내 컴퓨터를 볼 수 있는 경우에 보안에 취약하다.
또한 쿠키삭제시 세션ID가 삭제되기 때문에 매번 ID를 서버에 요청해야한다.
이런 단점을 해결하기 위해
시큐어 코딩을 이용해 암호화된 세션을 보관하는 방법도 있지만 이러한 방법들은 불안정하다.